SSブログ

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

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

http://social.msdn.microsoft.com/Forums/en-US/sqlreportingservices/thread/49fd92b9-810d-4a2c-af18-a63fbf6e1a46/
タグ:BI SSRS SSL smtp Gmail

プログラマではないけど Visual Studio LightSwitch でカンタン業務アプリを作ってみる(3)~Excelインポート [BI]

LightswitchはデータのCRUDをメイン機能とするアプリケーションです。さてここでひとつ困ったのはデータのインポートです。出力に関してはテーブル表示をした時にexcelのアイコンをクリックすると現在表示されているリストをExcelにエクスポートすることができます。しかしデータのインポート機能は標準では用意されていません。SQL Serverをデータソースとしている場合はDBにロードしてしまえば目的は達成することができますが、一般ユーザーにそれをお願いできませんよね。そういう時はExcelインポートのエクステンションを使用します。

◯Excelインポートエクステンションのインストール
(1)以下からエクステンションをダウンロード
http://code.msdn.microsoft.com/silverlight/Excel-Importer-for-Visual-61dd4a90
(2)インストール
\VB\ExcelImporter\Binaries\ExcelImporter.vsix
を実行するとインストールできます。エクステンションを利用するにはLightswitchを再起動して下さい。

◯エクステンションの利用方法
http://blogs.msdn.com/b/lightswitch/archive/2011/04/13/how-to-import-data-from-excel.aspx
に詳細なやり方が書いてありますが、要約すると以下です。
(1)プロジェクトのプロパティの「拡張機能」→「Excel Importer」にチェックを入れる。
scrn4_5.png

(2)ボタンを追加し、新しいメソッドを定義する。コントロールをダブルクリックして
 以下のE~のところのコードを追加して下さい。(Table1ItemSetのところはデータセットの名前を選択して下さい)
 Private Sub ExcelImp_Execute()
' Write your code here.
ExcelImporter.Importer.ImportFromExcel(Me.Table1ItemSet)
 End Sub
scrn5.png

(3)これを実行すると以下の画面になります。
scrn6.png

Excelファイルを読み込んで下さい。ちなみにセキュリティ設定によってはMy Documents以下にあるファイル以外の読み込みはエラーになることがあります。

(4)読み込み設定
Excelファイルはタイトル行の下にデータ行が続く形式にしておくと読み込み時の設定がしやすいです。
(画面)読み込み設定中。Excelのタイトル列と、LightSwitchのデータセットの列の対応を取ります。
scrn7.png

これでExcelからの読み込みができます。一般ユーザーでも安心の操作感ですね。

プログラマではないけど Visual Studio LightSwitch でカンタン業務アプリを作ってみる(2)~パラメター入力窓からの検索 [BI]

最近じわじわいじり始めています。どうやったら機能を実現できるかを調べるTODOはいろいろあるのですが、今回は画面にパラメター入力窓を用意して検索する、を解説します。

○意外と説明が無いパラメター入力窓からの検索
LightSwitchで標準的に用意されている検索窓(1行入力ウィジェット)があります。しかしこれは全項目のあいまい検索のため、例えばある一定以上の数量を抜き出して表示、などができません。割と解説されていそうなんですが、How Do Iシリーズを見ても説明が無く、テキトーにごちゃごちゃやってもうまくいっていなかったので困窮していたんですが、この前ようやく使い方が分かりました

○データセットクエリと画面クエリ
まずこれを簡単に解説します。LightSwitchは1つのデータセットに対して複数の画面を作ることができます。クエリはデータセットに対してと画面に対して作ることができます。なので、複数画面で同じデータセットを利用する場合、同時に同じフィルタをかけたい場合はデータセットに対するクエリを変更し、ある画面だけにフィルタをかけたい場合は画面に対するクエリを作ってください。

(画面のクエリとフィルタの関連のつけ方)
scrn1.png

ちなみにパラメターもデータセットに対するクエリパラメターと画面のプロパティというのが分かれています。これを繋げるには(パラメターバインド)画面のようにパラメターバインドすると関連を取ることができます。

(スクリーンプロパティとクエリパラメターの関連のつけ方)
scrn2.png

○パラメターを入れられる場所
さて、これでスクリーンパラメターを画面のどこかに作れれば望むものができるのですが、若干コツがあります。基本的には新しい項目は縦横のグリッドかマトリックスに入力するか、コマンドバーに入力するか、の方法しかありません。レイアウトを詳細に調整したいときは縦横のグリッドかマトリックスに入力、とりあえず試してみたいときは画面コマンドバーにスクリーンパラメターをドラッグして配置してください。

(配置した後のスクリーンパラメター
scrn3.png

さて、これでビルドするとようやく望むものが出来上がります。

(完成画面)
scrn4.png

次回以降もLightSwitchの小技を掲載していきます。

Jasper Server (CE 4.2.1) でMobile BI を試す [BI]

Jasperserverはバージョン4.2.0からモバイル端末からのアクセスができるようになっています。試してみたところ最新版のCommunity Editionでも使えるようでしたので、簡単な設定方法と使用感を書いておきたいと思います。
○そもそも今のMobile端末のブラウザからJasperserverにアクセスするとどうなるのか?
iPhoneのSafariから見るとこうなります(笑)。
IMG_0585.PNG

○設定
iPhone(iPad)の場合で説明します。
(1)アプリをダウンロードします。JasperMobileという名前です。
IMG_0583.PNG

(2)アプリの設定をします。Community EditionではOrganizationを設定できない(と思います)ので適当な名前を入力します。
IMG_0584.PNG

(3)アクセスします。Mobile版で最もMobileっぽく実装されているのはレポジトリのところです。Reports→Samplesという階層をiPhoneのUIでたどれます。
IMG_0587.PNGIMG_0586.PNGレポートを開こうとすると以下の画面になります。HTMLとPDFは結果を見ると何が違うのか分からないのですが自分の環境ではPDFがこけることが多かったです。IMG_0588.PNG
HTMLのボタンを押すと以下のようになります。IMG_0589.PNG
なるほどー。まあダッシュボード機能が使えないCommunity Editionの場合はレポートを拡大縮小しつつ見る、というモバイルの使用形態になりそうです。IMG_0592.PNGIMG_0591.PNGIMG_0590.PNG

いわゆるモバイルBIとしてはまだまだですが、Jasperserverを使用していてモバイル端末を使用しなくてはいけない場合などに役に立つでしょう。

仕事観を整理してみよう [仕事法]

この前上司と面談がありました。まあ最近いろんな要因で機嫌が悪かったりすることがあるので、それに対する注意は素直に反省しているんですが、全体感として誤解を受けているなあと思ったので自分の仕事観を整理してみました。基本ブレることは少ないです。

○最も重要とすること
「みんなで楽しく仕事して、その結果しっかり利益が出る事業となっている。」
→多分自分がこういうこというと違和感あるかもしれませんが、基本はこれを目指して働いています。

○最も重要とすることを実現するために必要なこと
ここが重要です。周りを見渡すと多くの会社は「楽しく仕事はしているけど利益は出ない会社」、「利益は出ているけど楽しくない会社」、「楽しくないし利益も出ていない会社」に分類されます。当然ながら「楽しく、利益が出る」というのはトレードオフの関係にあり、難易度が高いです。では「楽しく、利益が出る」会社にするために何が必要かというと「余裕」です。これは別に毎日定時で帰れるという意味ではなく、何か「遊び」ができる会社ということです。Googleの20%ルールとかは近いかもしれませんが、「これをやったら楽しいんじゃないの?」とか「こんなとがった製品があってもいいんじゃないの?」という遊びです。人間、創造性を働かせることは楽しいものです。また「余裕」は失敗に対する余裕にもつながります。多少の失敗は許容されるおおらかな心は余裕があってこそです。

○余裕を引き出すために必要なこと
では余裕はどうやったらできるかというと「効率的な仕組み」です。仕事の量は増えていくものです。それをコントロールするには、取捨選択か効率化しかありません。実はここが難しい。取捨選択の結果が正しかったかどうかは誰にも分かりません。すぐ捨てられる人もいればそうでない人もいます。仕事が速い人がいればそうでもない人もいます。個人個人には腕を磨いてもらうしかありませんが、組織全体としての取捨選択と効率化をどう進めるか、といえばそれが仕組み(プロセスとシステム)になります。これは戦略(余裕を生み出す)に対する戦術(余裕を生み出すために必要なこと)にあたります。ここからは割と人によって意見が分かれるかもしれませんが、仕事の仕方は人によってその人に合ったやり方をすればいいと思うのですが、全体の効率化を左右するプロセスとシステムは絶対に妥協してはいけません。言うなればその仕事のアウトプットの係数となるようなイメージです。効率良いプロセスとシステムはアウトプットを倍増させるかもしれませんが、効率悪いプロセスとシステムは、どんなにがんばっても成果が出なくなり、体質を悪化させます。

というポリシーが自分の中にあるので、時間が無いからとか面倒だからという理由でシステムの仕様をいいかげんに決められたり、不必要なプロセスを加えようとしたりする動きに非常に嫌悪感を抱くわけです。別に通常の仕事の判断はどのようにやってもかまわないと思いますが、「仕組み」に関わることの妥協は全員を不幸にします。まあとは言っても注意されたので今後はマイルドにやっていきます(笑)。

○みんな楽しく生きようよ
最近友達を見回すと仕事で悩んでいる人を結構見かけます。社会人になって10年近くということでとりあえず自分でそこそこできるようになってきたけど、これでいいのか?、このまま同じ仕事を続けていていいのだろうか?という疑問を持ち始める時期みたいです。でも自分の仕事観があってそこからブレなければ、仮に他人からみてその仕事に意味が無かったにしても迷いは減るのではないでしょうか?つまらないと思っていることに人生の時間を注ぎ込むのはモッタイナイことです。そういう意味で迷いを無くすために仕事観を見つめてみるのは良いことかもしれません。オススメです~。
nice!(0)  コメント(1)  トラックバック(0) 
共通テーマ:仕事

SQL Server で線形回帰するためのSQL コード生打ち [BI]

メモです。

PostgreSQLあたりだとLinear regression (線形回帰) の関数があるのですが、SQL Serverにはそういう関数がありません。SSASだとできるらしいのですがSSRSで使いたいだけなのでSSASを設定するのもめんどくさい。ということで大学生の実験以来、線形回帰をSQLで手計算しました(-"-;;。

test というテーブルでx,yというコラム名があったときのa,b (slope, intercept)は以下になります。

SELECT
bunshi_a/bunbo_a AS a
,avg_y - bunshi_a/bunbo_a*avg_x AS b
FROM
(SELECT
SUM((x - avg_x)*(y - avg_y)) AS bunshi_a
,SUM((x - avg_x)*(x - avg_x)) AS bunbo_a
,avg_x ,avg_y
FROM
(SELECT
x,y
,(SELECT Avg(CAST(x AS REAL)) from test) AS avg_x
,(SELECT Avg(CAST(y AS REAL)) from test) AS avg_y
FROM test
) src1 /* シグマ内の必要な要素を一列に準備 */
GROUP BY avg_x,avg_y
) src2 /* 最後の計算の一歩手前 */

実際にはtestテーブルのx,yはエラー値を除去したビューかサブクエリにすると良いでしょう。
出てきたa,bから、またtestテーブルのx,yの横に回帰した値とか追加しようとすると6重サブクエリとかになりますな…。数百行なら大丈夫だろうけど。

Talend Open Studio (ETLツール) でデータ統合(7)~SCD Type2 の実装 [BI]

商品カテゴリをSCD Type2で実装したディメンジョンテーブルを使って集計する必要が出てきました。さて、集計の仕方ですが単純に時間スライスでJOINしてもいいのですが、商品カテゴリの世代毎の売り上げを比較したいという要件や、そもそもSCD Type2のテーブルは日付で条件をかけるというひと手間あるので、スタースキーマ前提のBIに突っ込むには適していないので、工夫が必要です。

そこで悩んだ末に「ファクトテーブルにカテゴリをつっこむ」という解決法をとることにしました。まあもともとちゃんとした階層構造ではないし商品マスタに持たせられないので、美しくは無いがパフォーマンスを考えると現実的な解かなとは思っています。

さて、上記のような背景をもとに以下のようにTalendで実装しました。

○テーブル
・ソースとなるファクトテーブル
 商品コード
 日付
・カテゴリマスタ
 商品コード
 カテゴリコード
 販売開始日
 販売終了日

○手順1
上記2つのテーブルをLEFT OUTER JOINします。カテゴリのカバレッジが100%ではない場合はCASE句などを使用して、カテゴリコード、販売開始日、販売終了日からNullを撲滅してください。

○手順2
上記データをtMapで処理します。tMapでポイントになるのは入力行を処理する際の条件式を追加するところです。出力項目のレンチのアイコンをクリックすると条件式が入力できます。
無題.png
ここでは以下のような式を入れました(項目は雰囲気で察してください)。

TalendDate.compareDate(row1.date, row1.startdate,"yyyy-MM-dd") >= 0 && TalendDate.compareDate(row1.date, row1.enddate,"yyyy-MM-dd") <= 0

要は販売の日付が販売開始日・終了日の間の場合は、、、という条件です。

○手順3
上記出力をDB側で受け取ります。

まあここまでやって思ったのは、SCD Type2 って大変ですね(泣)。業務側からは非常に要望の強い部分ではあるので、MDM含めてちゃんとできるとデータ分析のレベルを上げられる要素ではあります。
タグ:Talend TOS RDBMS SCD

プログラマではないけど Visual Studio LightSwitch でカンタン業務アプリを作ってみる(1)~LightSwitchって何? [日記]

もともと私はオープンソース界隈の人間なので、基本的にMicrosoftはあまり好きではないのですが(ちなみにAppleはもっと嫌い)、最近はExcelでMicrosoft Queryを利用した業務アプリを作ったり、SQL ServerでBIを作ったりとMicrosoftどっぷりになりつつあります(笑)。そんな中Microsoftが出した新しい開発ツール、Visual Studio LightSwitch は非常に可能性にあふれる開発ツールとなっていまして、情報システム部門・経営企画室など社内データを扱う仕組みを作らなくてはいけない方に非常にオススメしたいものとなっています。

○Visual Studio LightSwitch
http://www.microsoft.com/japan/visualstudio/lightswitch
ざっくり、価格は3万円です。これAccess単体の値段とそんなに変わらないですね。Accessは人数分必要なので、それにくらべると安いと言えます。

○基本コンセプト
LightSwitch で何ができるかというとデータをCRUD(Create/Read/Update/Delete、つまり作成・読込・更新・削除といった基本的動作)するアプリの簡易作成です。業務に使用するツールとしてMicrosoftからリリースされているものはDBコアとしてのSQL Server、可視化ツールとしてのSSRS、可視化ツール+データ編集(CRUD)ツールとしてのExcel、簡易DBコア+可視化ツール+データ編集(CRUD)ツールとしてのAccessなどがあります。ここでLightSwitchはどういう位置づけになるかというと、「DBコアはSQL Server(か、SQL Azure)を使用して、そのフロントエンドでデータのCRUDをローカルだけでなくWebアプリとしても簡単に作成可能なツール」となります。つまりAccessと分野がかぶるといえばかぶりますが実際は用途を考えると自然と解は定まると思います。
・Access
 データソースはローカル
 各クライアントにインストールする必要がある(ライセンス料=Access×人数分)
 ローカルのaccdbのバージョン管理は結構大変
 必要なソフトはAccessだけ
・LightSwitch
 データソースはRDBMSを使用可能
 クライアントライセンスは不要(ライセンス料=LightSwitch+SQL Server(Expressなら無料))
 Webアプリなのでユーザ環境のローカルのバージョン管理は不要
 SQL Server が利用可能なことが必須
 Web アプリとして使うにはIISが動作していることが必須

正直データのCRUD目的でアプリを作るのなら今後はLightSwitchを使うのがオススメです。ネックはSQL Serverが使えることが要件に入ってくるぐらいではないでしょうか?でもとりあえずテーブルを用意する分にはそんなに難しくないと思います。

○アプリ作成の流れ
データ構造の定義→画面を作成、だけです。混みいったことはコードを書く必要がありますが、基本あまりコードを書かないでも使えます。ちなみに言語はVBかC#です。

○弱点
・大量データの読み込みのインターフェースが標準では用意されていない。まあDBに直接ロードすればいいんですがユーザにそれは求められないですよね…。
・文献が少ない。日本語の詳細技術文書は壊滅的です。英語でのオススメは”How do I"シリーズの動画です。基本的なやりたいことは大体これで網羅されます。
・RDBMSをある程度理解している必要があります。また、データソースはSQL Server、SQL Azure(クラウドサービス)を前提にしたほうが良さそうです。(DSN設定すればほかのDBもいけるのかもしれませんがまだ試していません)

以上LightSwitchの特徴をまとめてみました。今後いろいろ海外の情報を収集していきつつ今後Excelで無理やり作った既存システムの入れ替えなどを進めていきたいと思います。ノウハウはここで順に公開していく予定です。

IKEAのマットレスを分解してみよう [日記]

3年前にIKEAでマットレスを買ったんですが、1年半前ぐらいからへたりが気になり始め、最近では睡眠に支障をきたすほどくにゃくにゃになってしまいました。

このベッドのタイプとしてはポケットコイルタイプというもので体にフィットするのがメリットですが、いろいろ調べてみたところポケットコイルタイプは耐久性が無いとのこと。そこで次の新しいマットレスを購入する際は耐久性・硬さを重視しSealyのトリプルオフセットコイル(5731)にしました。これ今使っていますが、すごい快適です。

で、普通ならいらなくなったマットレスはそのまま捨てればいいのですが、どうへたっているか興味あったので分解してみることにしました(笑)

分解前~セミダブルです。もちろん見た目は正常。
写真.JPG

表面の布をはいでスポンジを剥いたところ~剥くとき静電気が強烈で、周りが一瞬明るくなるほど火花がw
写真 (1).JPG

くねくねの原因1:中心部断裂~ポケットコイルは不織布というものにくるまれているんですが、布が破けてスプリング同士が絡まっています。そりゃ体重受け止められないわな(--;
写真 (2).JPG

くねくねの原因2:全景~要は一番重量のかかるところが壊れてしまったという図です。ポケットコイルは体重の軽い人、汗かかない人とかマットレスに負荷かけない人じゃないと扱うの難しいかもしれません~
写真 (3).JPG

転職してから1年たちました [キャリアプラン]

今の会社に転職してから1年たちました。

前の会社の転職1年後の状態と比べると、現在はそこそこ適職で前向きなメンバーと精力的に仕事ができており非常に良い状態です。会社の人に見られているかもしれませんが関係無しに正直なところを書いてみます(笑)。

○良かった点
 自分がこれから先、何を強みとして世界の人材マーケットで評価される人材になっていくか、という質問に答える道筋がつけられました。前はデータ解析はできるけどExcel以外のツールは使えませんという状態でしたが、RDBMS、BI、ETLなどこの分野での必須スキルをつけることができました(まあ全て自習なので誤った認識も多分にありそうですが…)。これができるようになったことにより、通常は人材的に分断しているスキルセットを一通り備えているので多くが失敗していくBIの分野において、業務要件を概念モデル・物理モデルにまで落とし込み、さらにその結果を統計的に正しく見せる、までをリードできるようになりました。今後は浅く広くだったのを深さを追求するのと最新技術を追求し、会社の分析スキルをトップレベルにまで持っていくのが目標です。直近では今年中にBIを導入して、データ中心の企業文化を作っていきます。
 2点目はメンバーにはめぐまれています。多くの人は前向きで明るい。いや、ほんとに東芝とIBMは後向きの人多かったんです。あれ以上会社にいたら自分もそうなっていたと思います。

○心配な点
 東芝の時もそうだったんですが、あまり大変さをアピールして仕事をしない性質のため、自分の仕事は「大変ではない」と軽視される・チームが作られない・予算がつかないというスパイラルに陥る可能性があり、若干その匂いを感じています。まあこちらからの情報発信が少なかったというのもあるのでそこらへんは改善中です。
 2点目は会社が成長していく中で、仕組みや思考回路をシンプルに保ち続けられるか。前も書いたかもしれませんが、東芝(システムLSI)や(日本)IBMはこれに失敗して凋落しました。うちの会社はいろいろなことに現在挑戦しようとしていますが、アドホックに拡張するのではなく常にフレームワークを作り直すことで効率的な業務ができるようにしないと複雑化の罠にハマり、誰もが忙しいけど仕事が進まない、という状態に陥りかねません。ここは経営企画として時には厳しい意見を提言していかないといけない分野です。
 3点目は…うばばばw。一番この手の課題苦手なんだよな。プロジェクトの成功を取るか、和を取るか。最初和をとろうかと思いましたがやっぱり前者を取りに行くことにしました。損だよなあ。

ということで2年目もバシバシ攻めていきます(・ω・)ノ

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