Excelでピボットテーブル使う人に全力でPowerQuery(パワークエリ)をお勧めしたい

この記事は、週末プログラミングの一環です。

データ分析がブーム的に盛り上がっていますが、今でも Excelはビジネス現場での重要なツールですよね。

そして、あまり知られていませんが、マイクロソフトはどんどんExcelを進化させていて、データ分析しやすくしています。PowerBIというBIツールも提供していますしね。

無料でデータ分析するならMicrosoftのPower BI Desktopがおすすめ

 

そして今回紹介したいのは、データ分析を簡単にしてくれるPowerQuery(パワークエリ)というExcelアドイン機能です。これを知っておくと、データの加工処理が劇的に楽になります。

 

データを集計、加工するときの問題

大量にあるデータをクロス集計したりするためには、ピボットテーブルが便利です。

しかし問題は、ピボットテーブルを作る前の段階にあります。元のデータを綺麗に整形しなきゃいけないのです。。。

例えば、元のデータに余分な行が含まれていたり、複数のデータを組み合わせなきゃいけなかったり。データが加工しやすいきれいな状態で存在している、ということの方がレアですから。

データ分析作業の大半は、前処理の労力に占められるとも言われます。こんな本もあるぐらいです。

 

この前処理をいかに効率的に行うかが、データ分析の生産性に大きく左右されるのです。

 

データの取り込みと加工はPowerQueryを使う

そして本題に入りますが、その前処理を簡単にしてくれるのが、Power Queryです。

この機能をExcelで使う場合は、Officeのバージョンに注意してください。Office2016では普通に入ってます。それ以前のバージョンの方はアドインをインストールすると使えるようになります。

手抜きで申し訳ありませんが、導入方法や基本的な使い方はこちらをご覧ください。

ExcelでPower Queryを使い始めるには – Qiita

ExcelでPowerQueryを使ってデータ収集分析 – Qiita

 

PowerQueryで一番良いところはピボット解除ができる

データを集計、加工したい場合、クロス集計データであれば単純集計に変換した方が良いです。その方がデータをいろいろ加工しやすくなりますよね。

クロス集計の例

データ国A国B国 C
人口100200300
面積102030
GDP50100300

単純集計に変換

データ
人口国A100
人口国B200
人口国C300
面積国A10
面積国B20
面積国C30
GDP国A50
GDP国B100
GDP国C300

 

このクロス集計→単純集計への変換が、Excelでは結構面倒です。でも、PowerQueryであれば簡単にできてしまいます。

①データを一度読み込む
②読み込んだデータの対象の列を選択して、「ピボット列の解除」を行う
③列を選択して、右クリックから列を解除

これで以上です。これだけでリスト形式のデータが出来上がりました。最初これを知った時はほんとに感動しましたよ。

 

データに空白がある場合は注意が必要

データが空白の場合は、ピボット解除のときに消えるので注意してください。その場合は、先に空白のデータを適当なデータで埋めて、ビボット解除した後もう一度置換すれば良いです。

Solved: Re: Unpivot removes rows with no/null values – how… – Microsoft Power BI Community

PowerQueryは他にもいいところがたくさんあります。

  • 膨大なデータを軽い動作で取り込めること
  • WebやExcel、CSVなど多様なデータを取り込めること
  • 取り込むデータを絞り込めること
  • 取り込むときにデータを好きなように加工できること
  • 加工したデータの変換方法を覚えておけること

Excelでのデータ処理を効率化したい人には、ぜひ試して欲しいですね。

 

PowerQueryを勉強するには

PowerQueryの情報は日本語だと少ないのですが、英語だとあります。

まとまって勉強するなら、Udemyのこちらのコースがおすすめです。英語ですが、字幕も出るので比較的わかりやすいですよ。英語の勉強も兼ねて、どうでしょう。

Microsoft Excel – Excel Power Query, Power Pivot & DAX

 

本だとこちらですかね。

 

ちなみに、PowerQueryは最新のExcelであれば統合されているので、すぐに使うことができます。

Google Apps Scriptでグラフを操作する

週末プログラミングとしてやったことを書いておきます。

Google Apps ScriptでLINE botを作れたので、GASを勉強中です。

GoogleAppsScriptとLINE Botで自分用の「文字起こし君」を作ってみた

スプレッドシートとGoogle Apps Scriptを組み合わせることができるのも、GASのメリットです。

スプレッドシートで作成したグラフを操作してみます。

グラフを取得して画像を保存する

まず、スプレッドシートにすでにグラフがあるとします。それをGASで取得して、Googleドライブに保存します。

これも先駆者がいますので、真似るだけでした。

Google Apps ScriptでスプレッドシートのグラフをGoogleドライブに保存する

上記のスクリプトを実行するだけで、スプレッドシート上にあるグラフが、問題なく同じフォルダに保存されました。

GASでグラフの軸の範囲を修正する

ただ、GASを通してグラフを取得すると、スプレッドシート上の設定がリセットされて、グラフの軸がデフォルト状態に戻ってしまうようです。

これは困りました。グラフの原点は揃えるのが重要です。原点が変動してしまうと、視覚的に誤解を生んでしまう可能性が出てきます。

ので、こちらを参考に、取得したグラフを再度変更することにしました。

GASで棒、円、折れ線など各種グラフを作成、変更、削除するための基本 (1/2)Excel VBAプログラマーのためのGoogle Apps Script入門(8IT

グラフのオプション指定として、

.setOption(‘vAxis.viewWindow.min’, 0)

とすれば、Y軸をゼロにできます。

Google Spreadsheet, Google Drive, Google Apps Scriptでレポーティングの簡単自動化 – Reports

それで軸の開始をゼロにすることができました。

が、2系列使っている場合、両方の軸がゼロにセットされてしまいました。2系列の場合は、どちらのシリーズであるかを明確に指定する必要があります。こちらの記事に、系列ごとの指定が書いてありました。

こんな感じです。

.setOption(‘vAxes’, {0: {title: ‘€’, format: ‘short’, textStyle: {fontSize: 10}, titleTextStyle: {fontSize : 8}, viewWindow: {min: 79000000}}})

How do I change the number format of the vertical axis? (when using the EmbeddedChartBuilder in Apps script spreadsheet service) – Stack Overflow

これでグラフの修正が完了です。

GASは簡単なスクリプトで作成できること、Googleドライブと連携できること、ウェブサーバーに使えることが良いですね。

Evernoteはオワコン?MSのOneNoteが勢い増していた

Evernoteはノートアプリケーションとしてよく知られているものです。

すべてを記憶する。アイデアを整理する。スマートに働く。| Evernote

クラウドをベースにして、Windows、Macだけでなく、iOS、Androidからでも使うことができます。

登場してきた当初はとても斬新で、僕もよく使ってました。こちらは7年前に書いた記事です。

Evernoteって使うほど便利に感じて仕方ない

ただ、最近はすっかり利用頻度が落ちてきています。ノートが大量で重くなったりして、用途に合わせていろんなノートアプリを使い分けてる状態です。

 

Evernoteの勢いは落ちてきてる?

GoogleトレンドでEvernoteをMicrosoftのOneNoteと比較してみると、Evernoteの勢いが低下してきており、最近はOneNoteの方が迫ってきています。

Evernoteはテキストや画像などを自由に書き留めておけることと、複数のデバイスで同期して使えることがポイントだったわけですが、ほかのサービスでもクラウド時代で追いついてきており、あまり優位性がなくなってきたかもなと感じます。

逆にOneNoteはOffice365でクラウド対応になり、ビジネス系では使われるようになってる気がします。

 

Evernoteの戦略ミスとは?

同時期に展開されたDropboxと並び、有力なユニコーン企業と言われていましたが、途中から大きな問題に直面しました。これを読むとわかります。

Evernoteを苦しめる「5%問題」は本当に取り組むべきことを照らす道しるべになる – GIGAZINE

財務上は有料顧客の獲得が遅れたためです。フリーミアムではありましたが、なかなか有料ユーザーを増やすような料金プランなどを開発できずにいました。

しかし、もっと深刻なのは多機能すぎることでした。それが故に、製品のアピールポイントがわからなくなってしまったり、フォーカスすべきユーザーを見失ってしまったようです。

また手を広げ過ぎて、コストもかさんでいました。

その後、創業者が交代し、事業を整理しながら改革が進められています。

エバーノート、黒字化へ道筋 プロ経営者の大なた: 日本経済新聞

仕事ではOneNoteを使っているし、個人のちょっとしたメモはsimplenoteを使っていますが、たしかに用途が明確な方が使いやすいですね。

Evernoteは途中から、メモなのかスクラップなのか、自分の中でわからなくなっていました。けれど、今でもUIは使いやすいし、また利用頻度が増えるときが来るかもしれません。

ちなみに、Dropboxは現在上場準備中です。

Dropboxの上場予定価格は16-18ドル、時価総額100億ドルには届かず――別途Salesforce1億ドル出資 | TechCrunch Japan

音声でインプット量を劇的に増やす(2018年版)

だんだん本などの情報を耳からインプットすることが増えています。最近のインプットの方法について、整理しておきますね。これをやると、移動中や家事の時間など目を使えない時でもインプットができるので、インプット量が劇的に増えます。

ポッドキャスト

Overcastで気に入ったPodcast番組を聴いています。NHKニュースやRebuildぐらいですかね。

Overcastは以前紹介してます。

https://synapse-diary.com/?p=4068

結構長い時間聞き通すことができるので、移動時間が長い時に使うことが多いです。あと、当然ですが生身の人間がしゃべっているので、この後紹介するものに比べると聞きやすいです。

Kindleの読み上げ

散々このブログでは紹介していますが、KindleはiPhoneで読み上げすることができます。Siriが読み上げてくれるので、少し癖はありますが本によっては聞きやすいです。

https://synapse-diary.com/?p=4503

一度読んだ本を再度繰り返し聞きたいときに使ったりしています。

画像やグラフが多い本では、途中で読み上げが止まってしまうので注意が必要です。何度も読み上げが止まると結構ストレスフルになるので、小説や新書などあまり画像が少ない本を読み上げてもらうのがお勧めです。

Pocketの読み上げ

たまった記事は後で読むサービスのPocketとinstapaperを使っています。これらは両方とも記事を読み上げさせることができます。

最近導入したのはログミーファイナンスをPocketに送り込んで、いろんな企業の決算説明を空いた時間に聞くことです。

https://synapse-diary.com/?p=5355

知らない企業がたくさんあったり、知ってる企業でも最近の業績やビジネスモデルの変化などを知ることができるので、とても面白い内容になってます。

Voicyも気になってるのですが、今のものだけで時間が足りないので、今は静観しています。

音声からのインプットは、量が増えるのと、隙間時間を活用できると言う点では良いんですが、集中していないと聞き逃して全く頭に入らないことも往々にしてよくあります。

読み上げに向いているコンテンツもありますので、いろいろこれからも試したいと思います。

GoogleAppsScriptとLINE Botで自分用の「文字起こし君」を作ってみた

LINEで画像を送信すると、AIで解析してテキストを返してくれる「文字起こし君」というのが話題になっていました。

実際にやってみたくて、友達登録して画像送ってたら、全然リプライ返ってこない・・・。使う人殺到で、混みあってるらしい。

代わりに、自分で作れる方法が紹介されてました。

AIプログラミング】LINEに画像を送ったら自動で文字起こししてくれる機械学習アプリを作ろう|Dainote

こういうの読むと、自分で作ってみたくなりますよねー。Google Apps Scriptだと確かに手軽そうです。Google Vision APIを使ったAI体験もいいなーと思いました。

で、勉強がてらいろいろ調べているときに、ふと、「GoogleドライブにはOCR機能があるんじゃね?」と思い出しました。

Google Driveで画像を開いたと思ったら文字が全て書き起こされているという事態に衝撃の人々「マジかよ!」「あ!ホントだ」 – Togetter

Google Vision APIを使わない分、性能が落ちるかもしれませんが、自分がやりたいのはスクリーンショットなど読みやすい画像の文字起こしなので、GoogleドライブのOCRを利用する方法でLINE Botを作ろうかな、と。

で、その前提でまたいろいろ調べてみたら、同じことを考えた先駆者がいました。結果を先に言えば、この方の公開されているコードを真似ただけです。

GASLINE Messaging APIで「My『文字起こし君』」を作る!(AIじゃなくてOCRで!) – walkingmask’s development log

スクリプトはこちらをそのまま丸パクリさせていただければできるのですが、設定周りでいくつか躓きました。なにせ、Google Apps Scriptをまともに触ったのは初めてなので。

全体像

使うのは、LINE Messaging APIとGoogle Apps ScriptとGoogleドライブの3つです。

LINEから画像を渡したら、LINE Messaging APIを通じてGoogle Apps Scriptのウェブサーバーに送られます。

画像を受け取ったら、Googleドライブに画像を導入して、OCR機能で文字を読み取らせます。ここはDrive APIを使います。

読み取った文字をGoogle Apps Scriptで拾って、LINEに返します。処理が終わったら画像は削除します。

Google Appsスクリプトでウェブアプリケーション公開

では作り方です。最初は、Google Apps ScriptとLINE Botが連携できるようにします。

アプリケーションのURLがLINE Developersでボットを作成するために必要になりますので、最初にGoogle Apps Scriptでウェブアプリケーションを公開します。

スクリプトの内容は何でもいいので、新規からGoogle Apps Scriptを作成して、ウェブアプリケーションを公開します。「公開」→「ウェブアプリケーションとして導入」でOKです。

「アプリケーションにアクセスできるユーザー」には注意してください。これを「全員(匿名ユーザー含む)」を選んでください。これが設定されていないとうまくLINEからアクセスできません。

「導入」をクリックした後に表示されるURLが、LINE側で必要になります。

 

LINE Botを作成する

LINE Botを作るためにMessaging APIを使います。料金体系があるので、事前にチェックしましょう。当然Developer Trialを選びます。

プラン・料金 – LINE@でファン獲得!無料アプリで簡単に始めるビジネスLINE

LINE Botを作るためには、LINE Developersで登録していきます。

LINE Developers

作成したチャネルのWebhook URLで、Google Apps Scriptを公開した時のURLを登録します。

あと、Webhook送信で「利用する」をチェックしましょう。「自動応答メッセージ」も「利用しない」にしましょう。

アクセストークンは、Google Apps Scriptで必要になります。

 

Google Apps Scriptを完成させる

これでGoogle Apps ScriptとLINEを接続するための設定準備はできました。後はGoogle Apps Scriptを書いて終わりなのですが、1つ設定が残っています。

Google Apps ScriptからGoogleドライブを利用するためには、 Drive APIを有効にする必要があります。

「リソース」→「Googleの拡張サービス」からDrive APIを有効にしましょう。またGoogle APIコンソール上もDrive APIを有効にする必要がありますので、そちらも忘れずに有効にしましょう。

処理するスクリプトは、先ほど書いた記事に書いてありますので、それを真似ればできます。

GASLINE Messaging APIで「My『文字起こし君』」を作る!(AIじゃなくてOCRで!) – walkingmask’s development log

スクリプトを変えたら、もう一度ウェブアプリケーションを公開します。この時も細かいですがはまったんですけど、必ずプロジェクトバージョンは「新規作成」を選んでください。(「新規作成」以外のバージョンを指定すると、そのバージョンで公開した内容が反映されます。)

 

これで、LINE Botから画像を送るとテキスト化することができました。こんなかんじです。

複数の画像を一気に投稿しても、問題なくテキストが返ってきました。

Google Apps Scriptでこんなに簡単にLINE Botが作れると思ってませんでした。RPAなど生産性を上げる機運が社会的に高まっていますが、こうやってテクノロジーの力で、自分の生産性を高めていきたいですね。

 

その他参考:

LINE API x Google App Script bot を作成した話 – How to make datas our friends
GoogleAppsScript スクリプトのプロパティの超簡単な使い方 – Qiita

ログミーファイナンスをPocketで読み上げたら決算発表をたくさん読めるようになった

決算発表って、いろんな企業の実態や戦略を知ることができるので、時間があれば読んでいます。

会社のウェブサイトからIR資料を読むことが多いですが、ログミーファイナンスで書き起こされた記事を読むのも便利です。

ログミーファイナンス投資・IR情報の書き起こしメディア

ただ、なかなか読む時間もなくてどうしようかなーと思っていたのですが、ふとPocketから読み上げたらいいんじゃないかと思って、試してみました。

Pocketにはテキスト読み上げ機能がある

ポケットにはテキストを読み上げてくれる機能があります。記事を開いたら、右下のメニューからTTSを押すだけです。

非常にナチュラルに読み上げてくれます。また速度の調整も可能です。

さらにPocketを使うメリットとしては、複数に分割された記事をまとめてくれることです、ログミーファイナンスぐらい長い記事だと、分割されています。しかし1ページ目を保存すれば、後はPocketが勝手に分割された他のページもまとめて保存してくれます。

なので、ログミーファイナンスの記事をPocketに保存して、読み上げ機能を使えば、記事を移動中などに聞くことができるということです。

IFTTTでPocket自動で記事を保存する

次は、自動でPocketに記事が保存されるようにしましょう。IFTTTを使います。IFTTTは様々なサービスと連携して自動アクションしてくれるサービスです。僕もいろんな用途で使っています。

自分へのリマインドや家族との情報連携には、LINE Notifyを使うといいよ

これで英語ニュースを毎日読める。英語を習慣化するための環境をつくる方法

ログミーファイナンスはどうやらRSSがなさそうなので、Twitterの公式アカウントを使うことにしました。

Tweets by ログミーファイナンス (@logmi_finance) – Twitter

公式アカウントのつぶやきに含まれるURLを読み取ってそれをPocketに保存させます。

簡単にレシピを書いておくと、ツイッターで公式アカウントの中で「決算全文」というワードが含んでいるつぶやきを検索して、つぶやき内の最初のURLの記事をPocketに保存させます。

これで自動的にポケットにログミーファイナンスの記事が溜まっていく仕組みができました。

後は、すきま時間に記事を読み上げさせるだけです。

最近数日試していて、結構調子が良かったのでご紹介しました。

もともと書き起こしだからテキスト読み上げでも聴きやすいです。あと、ログミーファイナンスはたくさん記事が更新されますね。消化しきれるか不安な位です。

でもたくさんの記事企業が知ることができるので、好きな時間で聴く楽しみが1つ増えました。

iPhoneに新しいブラウザ導入したらブログ書けるようになった。するぷろーらX、ありがとう

最近、限られた時間の中で自分のアウトプットをどう増やすかを考えています。

自分の考えを整理するのに便利でブログを続けてきてますが、なかなか書けない日々が続いてたりしました。

どうにかしないとなーと思ってましたが、最近iPhoneのブラウザをchromeからするぷろーら Xに変更したところ、ブログを書く時間を増やすことができました。

より速く!より使いやすく!より検索しやすく!ブロガー向け iPhone / iPad ブラウザ「するぷろーら X」を開発しました。

するぷろーら Xはブロガー用として開発されており、使いやすさは玄人向けっぽいですが、個人的には非常に快適です。

これを使うと、ネットで調べてアウトプットするのが非常に早くなります。

まずリンクタグを作るのが便利

もうほとんどこのために購入したようなものです。調べ物をして、ページのリンクを記事に貼るためにはリンクタグを作らないといかないのですが、これがあれば簡単にリンクタグを生成できます。

blockquoteタグもあります。自分でカスタムタグを作ることもできるので、タグ作りはこれで圧倒的に早くなりますね。

複数検索の切り替えが便利

購入してみて、予想以上に便利だったのが検索エンジンの切り替え。

とりあえず、以下のものを登録しました。

  • Wikipedia
  • Amazon
  • 自分のブログ
  • Twitter
  • Googleトレンド

アプリを切り替えたり、Googleで検索してからたどるのに比べて、すごい調べ物が早くなりました。

ついでにモブログ環境見直した

これまでどうしてもスマホは画面小さいし、文字入力も効率悪いからと思って、メモ書きぐらいしか書いてませんでした。

でも、アウトプット増やすならiPhoneでもっと書けるようにしたいな、と。

するぷろーら Xを導入したのを機に、それ以外も環境を見直し始めました。

ブログのメモにはSimplenoteを使っているので、

https://synapse-diary.com/?p=4827

だいたい仕上げたら、Markdownでそのままアップできるようにしたり、アイキャッチの画像編集もiPhoneでやったり。

720円はアプリにしては高い部類かもしれませんが、生産性とモチベーションが上がったことを考えれば、全然価値はありましたね僕は。

もっと早く使っておけばよかった感じです。スマホは身近なミニパソコンなので、生産性を上げる余地はまだまだありそうな気がしました。

超簡単に時系列予測するデータ分析方法は知っておいて損はない

いろいろデータ分析していると、売上予測などしたくなりますよね。で、とても簡単にできる方法があるので、データ分析クラスターは知っておいて損はないんじゃないかと。

Facebookが、比較的簡単に時系列分析ができるオープンソースを公開していて、名前は「Prophet」といいます。

Prophet | Prophet is a forecasting procedure implemented in R and Python. It is fast and provides completely automated forecasts that can be tuned by hand by data scientists and analysts.

PythonとR言語でパッケージが公開されており、誰でも使うことができます。

 

使い方は先程の公式サイトにコマンドが載っていますが、英語ではとっつきにくいという方はこちらのSlideShareのプレゼンテーションが分かりやすいと思います。ここではR用を貼っておきますが、Pythonバージョンもあります。

 

時系列分析の難しさは、いろいろ試して思いました。最初に試したのは、こちらの本を読んでから。

 

ただ、いろんな時系列モデルを知って、誤差を評価したり云々など、専門知識が求めらるし、モデルを構築するまでちょっと大変で、頑張って計算してみたけど思ったような数字が得られなかったということもありました。

奥が深いだけあって、簡単に予測の数字を作るのが難しいんですよね。

 

でも、Prophetはほんの数行でそれっぽく精度が良い時系列予測をしてくれます。デフォルトで使いながら、オプションで予測モデルをチューニングすることもできます。

専門的な知識をそれほど必要せず、PythonかRをちょっとかじったことがある人なら、時系列予測でそれっぽい数字が出ます。それがこのパッケージの特徴です。

 

ビジネスの現場で思うのは、そりゃ精度が高い予測モデルがあれば越したことはありませんが、ベンチマークとなる「それっぽい」数字があるだけでも、組織の取り組み意識が変わったり、新しい改善策が思い浮かんだりします。

実際これを使って、季節性をグラフでちゃんと捉えたり、翌月の売上金額がどの程度かを議論することができた事例もあります。

Prophetで導き出される数字は、ある程度の時系列データがあれば、それなりに出る印象はあります。これを数字として持っておくと、今後の予測を組織内で議論するきっかけとして使うことができるでしょう。

そして何より大きいのは、ほんの数行で予測データを得られることです。

 

要はこういうツールは使い方次第ですし、Prophetはさくっと「それっぽい」予測をしてみる分には非常に使えるんじゃないかと思います。

【Power BI】ウェブデータを簡単に取得してデータ分析する

Power BIは、複数のデータソースと連携しやすいのが特徴ですが、その一つにウェブからのデータ取得があります。

これを使うと、ウェブサイト上にあるデータを簡単に取得し、データ分析に活用することができるようになります。

今回は、WikipediaからJリーグのクラブ成績を取得して、データ分析をしたいと思います。

J1リーグ – Wikipedia

 

Webからのデータ取得はこんなに簡単

まず「Get Data」で「Web」を選択します。

URLを入力すると、そのページ内にあるテーブルデータの一覧が候補として抽出されます。もうこの時点で非常に便利ですね。テーブル一覧から取得したい対象のデータを選択し、必要に応じてデータを加工します。

もうこれだけでデータの取得を完了してしまいました。

後は自由にデータを使って分析をしましょう。

 

今回取得した、J1クラブの通算成績を使って、各クラブの滞在期間をみてみます。

オリジナル、と言われるクラブの中で、いまだにJ2の降格経験がないのは横浜Fマリノスと鹿島アントラーズの2チームです。そのあと、ガンバ大阪、名古屋グランパス、浦和レッズ、清水エスパレスと続きます。

このグラフを作るまで、5分もかかっていません。URLを指定して、データを少し加工したら、あとはグラフにデータをプロットしておしまいです。

Power BIって本当便利ですね。

 

Power BIを本格的に勉強するなら、Udemyがおすすめです。英語にはなりますが、動画で字幕つければ結構わかります。日本語だと情報も少ないですし。

Microsoft Power BI Masterclass – Expand Excellence

Power BIで時系列データを分析するなら、カレンダーテーブルを作るのは必須

BIツールの1つのメリットは、分析したいデータを、ドリルダウンやドリルアップなどいろんな観点から自在に確認できることでしょう。

例えば時系列データであれば、最初に年次単位で大きなトレンドを確認し、気になるところがあれば四半期単位や月次単位で確認する、といった具合です。

ただし、時系列データをドリルダウン分析するためには、1つのテクニックが必要になります。それが「カレンダーテーブル」を作っておくことです。

 

カレンダーテーブルを作る目的

時系列データを分析したいときに、元データには日付単位のものがあるとしましょう。日次の売上データなどをイメージすれば良いです。

 

グルーピングしたい単位を予め自由に定義できる

四半期毎や年単位、あるいは会計年度などでグルーピングしたい場合、それらの時系列のグルーピングを、まとめて定義するのがカレンダーテーブルです。

また、会計年度の定義にも便利です。企業によって決算月は異なりますし、集計単位を変えたい場合もあるでしょう。その場合に、カレンダーテーブルで定義しておけば、決算年度ごとに集計することが簡単にできるようになります。

 

複数のデータでも共通の時系列単位を定義できる

カレンダーテーブルを作っておくことで、各データごとに日付のグルーピングをする必要がなくなります(売上データ、仕入データなどの複数データを、共通の時系列単位で分析できる)。カレンダーテーブルと、各データの日付データとのリレーションを構築するだけでOKです。

 

カレンダーテーブルの作り方

基本的には、Microsoftが紹介しているこちらのリンクを見ていただければと思いますが、

[Power BI] DAX入門(2) カレンダーテーブルの作成 – Microsoft Japan Data Platform Tech Sales Team Blog

主要なものだけ示しておきます。

カレンダーの作り方
カレンダー = CALENDAR(“2015/1/1″, TODAY())


年 = YEAR([Date])

月番号
月番号 = MONTH([Date])

四半期
四半期 = IF([月番号]<4,”Q4″,IF([月番号]<7,”Q1″,IF([月番号]<10,”Q2″,”Q3”)))

会計年度
会計年度 = IF([月番号]<4,[年]-1,[年])

 

あとは、作成したカレンダーテーブルと、分析したいデータの日付カラムを、リレーションで結んでおきます。リレーションの構築方法は、こちらの記事をご覧ください。

Power BI Desktop でのリレーションシップの作成と管理 – Power BI | Microsoft Docs

 

手頃な日次データとして、日銀の統計データからドル円レートの推移を使います。

主要時系列統計データ表

データを読み込んで、カレンダーテーブルを作ります。そのあとは、忘れずに日銀データとカレンダーテーブルで、日付カラムのリレーションを構築しておきましょう。

そして、実際にグラフを表示してみましょう。

軸には日付を設定するのですが、このときにカレンダーテーブルの項目を設定することと、階層ごとに順番に設定することが肝です。

年単位でグラフ化したのがこちら。

このうち、どこかの年を選択してドリルダウンを行うと、月単位のグラフに変化します。

さらに月を選択してドリルダウンを行うと、日単位のグラフに変化します。

ドリルアップを選べば、上の階層に戻すこともできます。

 

このように、カレンダーテーブルを作っておけば、自由に時系列データの階層をいったりきたりすることができるのです。時系列データを分析するには必須といえるでしょう。

 

Power BIを勉強するなら、Udemyがおすすめです。日本語だと情報が少ないですし、Udemyであれば情報がまとまっているので、効率的に学べます。

Microsoft Power BI Masterclass – Expand Excellence