• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

bigquery inline table

date: 2022-11-19 excerpt: bigqueryインラインテーブルの使い方

tag: bqbigquerygcpinline table


bigqueryインラインテーブルの使い方

概要

  • インラインテーブルを利用することで、一時的な変数を作成することができる
    • 実行タイミングに依存するようなデータを作成するときに便利
  • インラインテーブルを利用することで、テーブルにアクセスしなくても簡単なSQLのテストを行える
    • 複雑な機能や関数を試すときに便利な機能
  • STRUCTのARRAYをUNNESTすることで簡潔に記すことができる

具体例

現在時間から一時的な変数を作成する

-- 現在日時から特定の期間を計算して、期間ごとにデータを分類する
date_ranges as (
  select
    datetime_sub(current_datetime(), interval 14 day) as two_weeks_ago,  -- 2週間前
    datetime_sub(current_datetime(), interval 56 day) as eight_weeks_ago  -- 8週間前
),

select
    ts,
    user,
    event,
    case
      when ts >= (select two_weeks_ago from date_ranges) then 'Last2Weeks'
      when ts >= (select eight_weeks_ago from date_ranges) and ts < (select two_weeks_ago from date_ranges) then '2WeeksTo8WeeksAgo'
      else 'Older'
    end as period
from
    `...`
where
    ts >= (select eight_weeks_ago from date_ranges)

STRUCTのARRAYをUNNESTする

SELECT
  name,
  email
FROM UNNEST([
  STRUCT("山田 太郎" as name, "taro.yamada@example.com" as email),
  ("佐藤 花子", "hanako.sato@example.com"),
  ("鈴木 一郎", "ichiro.suzuki@example.com"),
  ("田中 二郎", "jiro.tanaka@example.com"),
  ("高橋 三郎", "saburo.takahashi@example.com")
])

参考

  • BigQuery create small sample table all in one query/stackoverflow


bqbigquerygcpinline table Share Tweet