So-net無料ブログ作成

Talend Open Studio (ETLツール) でデータ統合(11)~kintoneのデータを抜いてみる [BI]

talendのリセーラーに何度もリクエスト出しているんですが一向にリアクションが無く、一方で社内のkintone化が進んでいく上で基幹との連携が早晩問題になることが考えられるので、kintoneのREST API経由でtalendを使ってデータを無理矢理抜いてみました。コンポーネントを誰か作ってくれるまでの最終手段として使用する予定ですが、だれかtKintoneInputとか作ってくれないかなあ、、、

○参考URL
https://developers.cybozu.com/ja/kintone-api/apprec-readapi.html

○RESTコンポーネント(tREST)
・URL
ここにアプリID、クエリをエンコードして記述します。例ではid=82のアプリに対して2つのフィールド("Address"と"経度")を持ってくるクエリを記述しています。
※注意点1:&field[0]=経度のような形でエンコードしますが、
・"="や"&"はエンコードしない(上記の例の場合は経度のみURLエンコード)
・日本語のフィールドコードはUTF8でエンコードする
※注意点2:$revision のコラムはtalendのJSONパーサーがうまく拾えないっぽいので、フィールドコード指定のクエリを書くことでこのカラムを除く
#やりようが無いので、必要な時はtReplaceを配置。(最新記事を参考にしてください)
・HTTPメソッド
 GETを指定
・HTTPヘッダー
ログイン方法に応じてAuthorizationを指定、base64でユーザー名:パスワード をエンコードします。Hostも必須。

→この結果はJSONとして吐き出されます
ktl1.png

○JSON変換(tExtractJSONFields)
・kintoneのJSONはトップにrecords(複数レコード抽出の場合)、その下にフィールドの構造がありますので、"フィールド名/value"のように指定します。
・tRESTのスキーマは固定なので、それのBodyだけを引っ張るようにします。
ktl2.png

○実行結果
添付画像のようになります。ちなみにkintone APIの制限から一回に100行しか取ってこれないので、大量に取得したい場合はグローバル変数などを使用して適切にループさせる必要がありそうです。
ktl3.png

だれかtKintoneInputとか作ってくれないかなあ、、、(←念押し)

Talend Open Studio (ETLツール) でデータ統合(10)~tMapでの型変換 [BI]

備忘録です。

tMapで型変換する際に使う関数です。
変換元のテーブルとオブジェクトはそれぞれtbl、objとします。
(tMap上の表記はtbl.objとなる)

BigDecimal→Int tbl.obj.intValue()
BigDecimal→Long tbl.obj.longValue()
BigDecimal→String tbl.obj.toString()

Int→Float tbl.obj.floatValue()
Int→String String.valueOf(tbl.obj)

String→Short Short.parseShort(tbl.obj)
String→Int Integer.parseInt(tbl.obj)

int→BigDecimal new BigDecimal(tbl.obj)Date→BigDecimal new String→BigDecimal(TalendDate.formatDate("yyyyMMdd", tbl.obj))
タグ:BI Talend 型変換

脱ステしてみた~開始から半年の経過 [ライフスタイル]

○始めた動機〜酸化コレステロール説
自分は昔から肌が弱く、かなり小さい頃からステロイドを常用していました。薬依存は良くないということで過去にステロイド離脱治療(通称、脱ステ)にチャレンジしたことが2回ほどありましたがなかなか良くならず、リバウンドがひどく途中で諦めてしまっていました(それでも薬の量は少しづつ減らせてはいました)。今年も症状が落ち着く秋の季節に差し掛かってきたなあといった時に何か体調改善する手段はないかネット上で調べていたところ、酸化コレステロールの記事がありました。要約すると、ステロイドは薬としての役目を終えた後に、尿などから排出できなかった場合は酸化コレステロールに変わって体内に蓄積し、炎症を悪化させてしまうことがあるということ。これらを読むとどうも自分の症状に合致しました。例えば体に蓄積していってリバウンドを起こすとか、全身に出るとか、交感神経優位になるとか、です。今まで離脱にうまくいかなかったことの理由に、良くならない原因が分からず終わりがみえないということがありましたが、体内に何かが溜まっているという原因が分かれば対策のしようもあるわけで、最近仕事も落ち着いてきたし、いっちょデトックスやってみようと思いたって始めてみました。

○運動しまくってみよう
で、記事によると酸化コレステロールは体脂肪に蓄積し、汗の油分か肌のターンオーバーでしか排出することが難しいらしいとのこと。また、遊離して血中に流れ出すと炎症の元になるらしく、旧にステロイドを止めると一気にリリースされてしまいひどくなってしまうらしいです。なので運動すると以下のプラスマイナスの効果が現れると考えられます。
・プラス
 ・酸化コレステロールをある程度汗(の油の成分)で出すことができる
 ・代謝が上がり、全般的なデトックス、解毒能力が上がる
・マイナス
 ・体脂肪に蓄積されていた酸化コレステロールは運動で燃える訳ではなく、恐らく体内でウヨウヨし出すので、排出されなかった場合は悪化する可能性がある。

これらのプラスマイナスの要因があるので、運動して徹底に汗をかいてみて悪化し過ぎない適切な運動の強さのポイントを見つけられれば最終的に離脱ができるんじゃないかと考えて真夏の時期から毎日ジョギングを始めてみました。

○月別推移~一ヶ月目
ある程度悪くなるのは覚悟してひたすら汗をかくように毎日ランニングしました。ちなみにこの時点ではまだステロイドは減らしませんでした。基本悪くなりましたが、ある程度の悪化はしょうがないというスタンスでいました。しかしある時運動し過ぎて悪化させ過ぎて、戻そうと思ってステロイドを一日だけ多めに塗って今度は炎症が一気に引きすぎて強烈な倦怠感に襲われて会社を休む、ということを一回やってしまいました。この頃はまだ不安定でした。

○月別推移~二ヶ月目
ステロイドの量を前月の1/3ぐらいにして良くなりすぎず悪くなりすぎずデトックスを続けられるポイントがこの頃になると分かってきました。この治療の副作用としてこのころ体脂肪が10%切りましたw。ただしジョギングし過ぎたせいで膝を痛めたのと季節的に涼しくなってきて外で汗をかきにくくなっててきたので、この頃から有酸素運動はジムでやるように変えました。

○月別推移~三ヶ月目
かなり体脂肪は落ちたのでデトックスから症状の安定化に主軸を変えました。運動の量を減らしてステロイドを2日に一回さらに一回を少量(実質前月の1/4ぐらい)にしました。量的にはエンクロン12g(市販品)を一ヶ月で半分ぐらい。でも今まで1日も間を置くと結構悪化していたので良くなっている実感はついてきました。

○月別推移~四ヶ月目
何となく激しい有酸素運動をすると体脂肪がついている付近の肌が悪くなるなぁという実感があったので実験してみました。まずは運動を一旦やめてかつ一週間ステロイド無しで過ごしてみました。これが意外と大丈夫(悪化しないという意味で、まだ綺麗になった訳ではありません)。次にジムで有酸素運動してみるとやはり悪化。体脂肪ついている近くから若干浸出液が出てしまいます。さらにそいつを亜鉛華軟膏で抑えられるか試してみたんですが、量は減るもののどうもすごいかゆい。この頃から汗でデトックスするのに限界があるなあと感じ始めていました。ちなみにこの一週間以降は完全にステロイドは使用しなくなりました。

○月別推移~五ヶ月目
ステロイド無しで安定するので、悪化し過ぎない程度に週2ぐらいで有酸素運動を行いデトックスを続けました。
この頃悪かったのはお腹の脂肪がついているところと、ふくらはぎの内側。お腹のところはベルトで擦れる位置よりかは明らかに違う場所だったので、やはり体脂肪に悪いものが溜まっているという考え方がしっくりきました。しかし運動だけだと排出効率がどうも悪いっぽく、そんな困っていた時にアーユルヴェーダ(アヴィヤンガ)の記事を読んで、ピンときました。要約すると肌からマッサージでごま油を吸収させて、体を巡ったものを汗などで排出するというもの。やってみたところ、いつも春先に出る手の湿疹が大量に出没w。ただ全身に塗ったのも関わらず手に集中的に出たりとか、出る速さと引く速さがいつもの3倍ぐらい速いことから、体質的に合わなかったというよりはデトックスが促進されたんだなと実感。手の湿疹が引いた後は全身の炎症がかなり落ち着きました。これは効果が実感できるほどの変化だったので、オイルマッサージを取り入れることにしました。

○月別推移~六ヶ月目
オイルマッサージ(週1)と運動(週2-3)を続けました。また、保湿にプロペトを使用していたのを、オリーブオイル、オリーブスクワランオイルで代替し始めていったのもこの頃です。精製しているとはいえプロペトは天然素材ではないので念のためこちらも減らしました。

○この6ヶ月のサマリ
とりあえずステロイド無しで症状安定化ができるようになったのは大きな前進であり、旅行に行ったりするのが遥かに楽になりました。様々なファクトから推測すると、今まで苦しめられていたのはステロイド(の残骸)のせいだったのを確信できた半年であり、ステロイドの害とアトピーの違いを見て見ぬ振りをして薬を出し続ける現在の皮膚科医療はどうなの?と正直考えてしまいます。

○効いたもの
・オイル(ごま油)マッサージ:自分には明らかにデトックスしてる感ありました。マッサージに使用する太白ごま油自身は数百円で手に入れることができるものなので、オススメです。ちなみに以下の本を参考にしました。

黄金のアーユルヴェーダ・セルフマッサージ  1日10分 伝統のデトックス法で奇跡の美肌

思ったことは、自分は油の代謝が悪いんだなということ。要は皮脂の分泌が少なく、そのせいで油汚れを排出する力が弱い。なので同じ体質の人にはオイルマッサージは効くかもしれません。

・効果が微妙なもの
水素水: 胡散臭いのは承知でとりあえず試してみましたが、飲んでいる時期と良くなる時期の相関はなさそう。

・症状を悪化させるもの
ウイスキー お酒の中でウイスキー(ハイボール含む)だけはなぜか強い相関で翌日悪くなりました。なので今でも控えています。蒸留してるから大丈夫かと思っていたのですが、あまり蒸留酒、醸造酒の違いは関係ないみたいです。

○最後に
また半年後ぐらいに経過を記したいと思います。そろそろ、いつも確実に悪化する春先が来ますがそこらへんでどんな感じになるか、ハラハラしながらも、今度は乗り切れる気がしています。そして、この記事が同じ悩みを持つ人の助けになるのを願っています。

続きはこちら↓
http://komlog2.blog.so-net.ne.jp/2014-06-01

iPhoneの写真・ビデオをオンラインストレージをうまく階層化して保存してみよう [ライフスタイル]

子供ができたせいもあり、写真・ビデオをうまいことリスクを避けてかつコストをかけずに保存しなくてはいけないなあと思い始めていました。しかしオンラインストレージサービスは決定打が無いのも事実。そんな中、とりあえず妥協策で運用を始めたのでここでも記載しておこうと思います。

○DropBox/Yahoo! Box/iCloudでハイブリッド
私は上記の3サービスを利用しています。それぞれの特徴は以下の通りです。
・DropBox
 容量6GB(いろいろ無料特典をゲット済み)
 カメラアップロード・ストリーミング等使い勝手は良いがiCloudほどiPhoneと融合はされていない
・Yahoo! Box
 容量50GB(Yahoo!プレミアム会員のため)
 使い勝手は悪く、ストレージとして割り切る必要あり
・iCloud
 容量5GB(ただし、iPhone自身との)
 カメラアップロードがフルオート、ストリーミング・共有等自然に使え、最強

つまり一長一短な訳だった訳なのですが、以下のような感じでうまいこと
やってみることにしました。

・カメラアップロードはDropBox
・ビデオは折を見てDropBoxからYahoo! Boxに移動(@Windows PC)
・古い画像は1年おきにDropBoxからYahoo! Boxに移動(@Windows PC)
・iCloudにはできるだけモノは置かず、iPhoneの友達との共有用に必要なものだけを置いておく
・Yahoo! Boxの内容は時々Blulay Diskでローカルにも保存

こんな感じの運用にすることであと5年分程度は惰性で何とかなりそうです。
足りなくなったら…、その時はさらに進んだオンラインストレージが発表されているはず!(笑)

BitNamiを使用している時のRedmine1.4系から2.3系へのアップデート [雑多]

Bitnami-1.4.7付属のRailsにCJK処理の不具合があり、Rubyだけの
設定変更が困難でかつ現行使用の1.4.4のパッケージが手に入ら
なかったためBitnami-2.3.3を使用するみたいなことをしていてハマった
ので備考録を残しておきます(3日程度ハマりました…)
新旧は異なる環境にインストールしたことを想定しています。

○新環境にインストール
新環境にBitNami-Redmineの2.3.xをインストール
※ここではD:\BitNami\redmine-2.3.3-1にインストールしました

○DBのダンプとリストア
旧環境から bitnami_redmine のDBのみをダンプし、新環境にリストアする
 (MySQLのDBバージョンが異なることがあるためその他のマスタはいじらないように注意)
例: D:\BitNami\redmine-2.3.3-1\mysql\bin\mysql -u root -p bitnami_redmine < D:\data\old_redmine.dmp

○添付ファイルのコピー
  インストールディレクトリ\apps\redmine\htdocs\files 以下を旧から新にコピー

○DB・構成・設定のアップデート
  PATH D:\BitNami\redmine-2.3.3-1\ruby\bin (rakeを実行するのでパスを通す)
  cd D:\BitNami\redmine-2.3.3-1\apps\redmine\htdocs
  rake generate_secret_token
  rake db:migrate RAILS_ENV="production"
  rake tmp:cache:clear
  rake tmp:sessions:clear
  念のためサービスを再起動

分析系と業務系のデータサイエンティスト~データサイエンティストの領域はまだまだ拡がる! [キャリアプラン]

(書いていて力尽きたのでそのうち改訂します、、)

最近自分の会社で基幹システムの入れ替えを行ったのですが、その際に痛感したことがあります。それは、「自社のデータモデルを理解したうえでデータの変換、可視化が行えると無敵に近い」ということです。通常そういう人がいなかった場合、ユーザー側でExcelでちまちまやるか、ベンダーでDB使える人がユーザーに聞きながらいつ詰まるか分からない仕様と戦い続けるということになると思うのですが、上記のようなスキルセットを持っている人がいた場合、最適値に到達するまで脳内で完結するので、効率が10~100倍ぐらい高いです。今回の基幹入替は非常に時間が限られていたため多くのリスクを抱えていたのですが、この裏ワザが使えたことが重要なイネーブラーになったのではと痛感しています。

○分析系データサイエンティストと業務系データサイエンティスト
一般的にデータサイエンティストと呼ばれる人たちは「統計などを駆使して見えないものを見えるようにする」ことを求められていることが多いのではないでしょうか?ここではそういう人を「分析系データサイエンティスト」と呼ぶことにします。一方でゴリゴリ統計を使うことがなくても、決して数億件のいわゆるビックデータのようなものを相手にしていなくても、上記のような「会社にとって非常に価値の高い仕事をできるデータサイエンティスト業務もある」と私は考えており、それを業務系データサイエンティストとここでは呼びたいと思います。

○業務系データサイエンティストが活躍する領域
それでは業務系データサイエンティストはどんな領域の業務を行うことが求められるのでしょうか?
・各システムからのデータ抽出(実はこんなことだけでも業務が効率化することが多い)
・データ変換(コード変換かけたり、サマったり)
・Excelの構造改善
・BIのレポートの実装
通常これらの業務は「本業」と言うには中途半端なため、誰かが兼任で行うことがほとんどでしょう。しかし実はこの領域は詳しい人がやると桁で効率がいいので、実は専門の人をアサインしてしまったほうが全体でみると圧倒的に効率の向上が見込まれます。

○業務ってデータそのものなんです
そもそも会社とは何でしょう?私は、会社のコアとはデータの取り扱いそのものであると考えています。よく会社コア業務以外をアウトソーシングするみたいな話があると思いますが、突き詰めて残るものというのはその会社のビジネス、つまり何(データ)を用意(データ)して誰(データ)に売る(データ)かということです。基本どんな部署にしてもデータを基本にして業務をしていることは確かで、データの処理効率をあげるというのは会社全般にインパクトのある改善なのです。

○一歩踏み出して業務系データサイエンティストを増やそう
見えないものが見えるようになる分析系データサイエンティストも確かに必要です。しかし足元を強化し、多くの部署の業務をリバレッジできる業務系データサイエンティストという視点でスキルを生かしていくということも有意義ではないでしょうか?生産性の低い日本の職場を一変させていくようなデータサイエンティストが増えていくと日本企業の競争力強化に貢献できそうですね。

Talend Open Studio (ETLツール) でデータ統合(9)~グローバル変数の利用と連続処理 [BI]

データのリカバリの時などに、数千万件のテーブルを集計してデータを流すことというのはよくあると思います。しかしその処理をtAggregateRowで単純にやろうとすると「メモリ足りないよん」とつれない返事をされて終わってしまうことがあります。

という状態になって困っていたので某社のサポートに聞いたらこれまたつれない返事が返ってきたので、自分でいろいろ試してこの方法にたどり着きました。

◯概要
DBからDISTINCTで日付一覧を取得、それをIterateに展開しグローバル変数にセット、それをIterate先の処理で利用すると、これが実現出来ます。今回のサンプルはtMapを使用していませんが、Iterate先をtAggregateRowにして、これに流しこむ先のクエリのWHERE句にグローバル変数を渡せば、区切った状態で連続処理が可能になります。

※以下はテスト用に作った全く別のジョブです。上記を実現するにはIterate先をtAggregateRowに作り変えて利用して下さい。
◯詳細1:全体像
こんなジョブです。Iterate先をテスト用にtSendMailにしています。
t1.png

◯詳細2:クエリ
ここではテストのために販売テーブルから日付を2つ取ってきました。一覧を取得するにはDISTINCTで取ると良いでしょう。
t2.png

◯詳細3:データからIterate(繰り返し)を生成
ここポイントです。tFlowToIterateというコンポーネントを使用します。キーというのがグローバル変数名(自分で勝手に命名して良い)、値はスキーマで定義したカラムを指定します。「グローバル変数名にデフォルト、、、」的な項目にチェックをしておくと、おそらくコンポーネント+"なんちゃらとかいう感じのグローバル変数がセットされるはずですが調べてないのでよく分かりません…。
t3.png

◯詳細4:グローバル変数をIterate先で使用する
ここではtSendMailで件名に先ほど定義したグローバル変数をセットしました。これで日付が件名にセットされたメールが2通届きます。
t4.png

Talend Open Studio (ETLツール) でデータ統合(8)~tMapでのIf(条件分岐) [BI]

備考録シリーズ、Talend の tMap で条件分岐で処理する際のTipsです。

例えばあるコラムの文字列を見て、中身の処理を変える場合は以下のようにするらしいです。
row1.col1.equals("はい") ? "Yes" : "No"

row1.col1=="はい"? "Yes" : "No"
とか
If(row1.col1=="はい")
{ } else { }
とかやるとドツボにはまるので気をつけて下さい。
タグ:BI ETL Talend

SSRS のレポートを iPhone から見る [BI]

MicrosoftがSSRSをHTML5対応してくれるのはそこそこ先の話になりそうなので、どうしようか困っていましたが、ちゃんとさがしたらアプリがありました。

プロ版~Mobi Reports Pro
http://itunes.apple.com/app/sketch-reports-pro/id378563211

無償版(テスト用、1ソースのみ)~Mobi SSRS
http://itunes.apple.com/us/app/mobi-ssrs/id457786540?ls=1&mt=8

mzl.aovfpksh.320x480-75.jpg

ちゃんとグループ化にも対応しており、日本語もちゃんと表示されます。日本語フォントの文字幅判定起因かはわかりませんが、一部レイアウトが崩れることがありますが調整しておけば問題無いと思います。

会社とかで使うにはVPN設定の一発起動ショートカットをホームに作っておけばOK。かなり快適なSSRS閲覧環境が構築できるでしょう。

タグ:iPhone SSRS

SSRSのメール購読のSMTPを使用する [BI]

備忘録です。どうやらSSRS→Gmailの直接送信はSSRSの設定上不可能らしく、一回ローカルSMTPを経由して飛ばさなくてはいけないらしいです。

http://social.msdn.microsoft.com/Forums/en-US/sqlreportingservices/thread/49fd92b9-810d-4a2c-af18-a63fbf6e1a46/
タグ:BI Gmail smtp SSL SSRS
メッセージを送る

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。