Lookerで日付時刻要素同士の『クロス集計表』を作成する(※timeframesパラメータの活用) #looker

Lookerではデータを任意のグラフで可視化(Vizualize)することが可能です。利用可能なグラフの形式の1つに『表形式(Table)』があるのですが、行に『年』、列に『月』のような"カレンダー"的な使い方でデータを表示させる場合、ちょっとした設定を加える事でスムーズに可視化を実現することが出来ます。当エントリではその内容についてご紹介したいと思います。

初期状態で用意されている要素で試してみる

扱うデータは弊社ブログ『Developers.IO』のブログ投稿データ。これまでにも何度かブログで紹介していますが、現在この投稿データは、同じく社内で管理しているAmazon Redshift環境にデータを自動で加工、集約しています。

この環境に対するデータソース接続を予めLookerで作成しておき、LookMLプロジェクト作成時にデータソースとして指定。その際に合わせて対象スキーマのテーブルにおけるビューを自動生成したものを使います。

対象となる『投稿データ』テーブル配下にある要素(投稿日)は、初期状態で以下の様な内容で自動生成されています。

まずは一旦、この状態でうまく作れるか試してみます。『投稿日の年(Year)』をクリックして行に、投稿本数をクリックして数値として表示、更には『投稿日の月(Month)』について『PIVOT』というボタンを押下します。PIVOTされた項目(ディメンション)は列として配置されます。

上記設定内容で『Run』を押下し、結果を確認してみます。

...ですがこちらの意図した内容にはなりませんでした。『投稿日の月(Month)』が年の情報まで持っていたため、それらとクロスされて必要では無いセルの組み合わせまで実現されてしまっていました。

「dimension_group」の「Timeframe」パラメータ追加で表示出来る日付時刻のパターンを増やせる

冒頭のスクリーンショットでも見えていた要素ですが、timeframeパラメータの設定を編集する事で、今回やりたいことが実現出来ます。timeframesオプションでは日付(Date)やタイムスタンプ(Timestamp)の要素における「表示方法」を用意しており、デフォルトで生成されているもの以外にも多岐にわたる選択肢を指定可能です。利用可能な値については下記ドキュメントをご参照ください。

追加で扱いたい形式を、timeframesパラメータのリストの中に追記するだけでOKです。今回の例では、ひとまずmonth_nums(月の数値)、month_name(月の名前)をリストに追記してみました。

Exploreにて、先ほどと同じ流れで要素を配置。PIVOTする項目は「投稿日の月数(month_num)」としてみました。

クエリを再実行。すると今度は本来見たい形でデータが表示出来ました!

『投稿日の月の名前』(month_name)で表示させた場合の内容は以下の通り。この辺りは見せ方、好みに応じて選ぶ感じで良いかと思います。

この他にも使いそうなパターンが幾つかありそうだったので、以下の形でリストに追記しておきました。

『投稿時間』と『曜日』でクロス集計表を出してみました。既にもうDevelopers.IOでは『全ての時間、全ての曜日』で投稿が為されている状況になっていました。『眠らないブログ、Developers.IO』ですねw

 

まとめ

というわけで、Lookerのビュー要素、「timeframes」パラメータを活用した表形式の可視化に関する内容のご紹介でした。設定を1つ追加するだけでやりたいことが実現出来るのはお手軽感があって良いですね。

Developers.IOでは、従来のLooker特集カテゴリーの他に、新しく以下の『Lookerによる可視化(Visualizations)実践』シリーズを新設しました。名前の通り、Lookerにおける可視化(Visualizations)のテーマ、トピックに関する内容を括っていく予定です。大本の特集カテゴリ同様、気になる方は是非ウォッチして頂けますと幸いです。