Matillion for BigQueryで日付ごとに分割された複数テーブルを読み込む方法

どうも、最近道を歩いていたら、バイクシェアのポートでとても困った感じでスマホをいじっている外国人の方を発見、(ふっ、しゃあねえな)と思いつつ「Can I help you?」と尋ねたら「いや、それがね、普通は返却ボタン押したらメール来るじゃないですか、なのにね、、、」とめちゃくちゃ流暢な日本語で返された、分析官の岡部です。(バイクシェアアプリの不具合だったみたいです)

本記事はMatillion for BigQueryのTipsです。
BigQueryユーザーの方以外はご容赦ください。

また、Matillionとは??という方は記事下部で補足をしているので、まずはそちらからご覧いただけたらと思います。

それではいきましょう。

What:何をやろうとしているのか?

こちらの記事に引き続き、実務でも頻出の、Google Analyticsデータを例にして説明していきます。

  • 自社サイトの PVはどれくらいなの?
  • そのPVは日々どれくらい変動してるの?
  • PVの増減に影響を与えている原因はなんなの?

「〜みたいなことを知りたくてさー、データはBigQeuryに入ってるから調べといてよ」 と上司から言われたとしましょう *1

早速、データが格納されているBigQueryをみてみると、どうも日毎に別テーブルとして格納されているようです。

f:id:gri-blog:20210612155447p:plain

さて、困りました、まさか読込テーブルを変えて1日ごと集計するわけにもいきません。
どうしようかと、途方に暮れているその時、思い出したのです。
そう、Matillionの存在を。 *2

How:どうやるのか?

というわけで、とりあえず日毎にサイトのPV数を算出していきましょう。
テーブル名は

{Project}.{Dataset}.ga_sessions_yyyymmdd

だとします。

早速本題ですが、Read以下のWildcard Table Inputを使います。

f:id:gri-blog:20210612155349p:plain

まずはProject名とDataset名でテーブルが格納されている場所を指定してください。
次にTable Prefix、
ここには日付部分以外のga_sessions_と打ち込みます。

f:id:gri-blog:20210612155528p:plain

最後にWhere Clauseですが

_TABLE_SUFFIX BETWEEN '{yyyymmdd(開始日)}' AND '{yyyymmdd(終了日)}'

のように記述してください。
これで開始日ー終了日までの日付テーブルを一気に読み込めます。

f:id:gri-blog:20210612155620p:plain

以上です、簡単ですね。

ちなみに、指定した日付を新しくカラムとして持ちたい時は Input Table SuffixをYesにして、Table Suffix Column Nameにカラムの名前を記述してください。
そうすると、例えば20170701テーブル中の全てのレコードに、20170701と入るようなカラムが追加されます。 GAのように日付カラム(date)が元から入っている場合はそれを指定すればいいのですが、ファイル名のみで日付を管理するようなテーブルの場合は役に立つでしょう。

ここまでくるとこちらの記事に従って、unnestして日毎にPVを集計すると欲しかったものが出てきます。

f:id:gri-blog:20210612160305p:plain

土日(1, 2, 7, 8)はややPVが落ち込むこと、10日の月曜日にPVが増えていることがわかります。
あとはその原因を探っていくため、例えば10日はどのページへのアクセスが多かったのか?などを調べていくことになるでしょう。

簡単ではありますが、日付ごとに分割された複数テーブルを読み込む方法のご紹介でした。

それでは快適なMatillionライフを

補足:Matillionとは??

Matillionってなに?なにがそんなにいいの?という方は例えば以下の動画をご覧ください。

www.youtube.com

また、弊社開発の自動機械学習ツールForecastFlowとも連携できます Big Queryにデータ集約→その圧倒的計算パワーを活かして前処理→機械学習モデルの作成→訓練済みモデルの日次運用、といったことが簡単にできるようになります。 気になる方は以下のブログをご覧ください。

gri-blog.hatenablog.com

*1:「GAのレポート画面で見ればいいじゃん」という方、もっともでございます。こちらの記事の脚注をご参考ください。

*2:別にMatillion使わなくてもBigQueryで簡単にできます。あくまでMatillionでのやり方解説です。