コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

BigQueryでJOIN時に各々のテーブルに_TABLE_SUFFIXを適用する方法

イマイチすぐに出てこないのでメモがてら

前提条件

  • STANDARD SQLです(記載タイミングでレガシーのほうを使っているほうが稀かなと思いますが念の為)

そもそも _TABLE_SUFFIX とは

こちらに関しては別記事で書いたのでそちらを参考のこと

書き方

カラム名に関してテーブル名を指定するのと同じ書き方でできる。以下は別々のテーブルに対してTABLE_SUFFIXを当てている書き方

SELECT hoge FROM `example-project.example-dataset.example_table_2010*` AS table_a
LEFT JOIN `example-project.example-dataset.join_table_2010*` AS table_b
WHERE table_a._TABLE_SUFFIX = "0801"
AND table_b._TABLE_SUFFIX = "0801"

GoogleAnalyticsのBigQueryExportサンプルをJOINして表現しています(いい例がなかったので同じテーブルをJOINしています…)

SELECT original_table.visitStartTime , original_table.fullVisitorID 
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_2016*` AS original_table
LEFT JOIN `bigquery-public-data.google_analytics_sample.ga_sessions_2016*` AS join_table ON original_table.fullVisitorID = join_table.fullVisitorID
WHERE original_table.fullVisitorId = "0001363886612345162"
AND original_table._TABLE_SUFFIX = "0803" 
AND join_table._TABLE_SUFFIX BETWEEN "0801" AND "0831"

参考リンク