テーブルの改修を行った時の検証用クエリメモです

旧テーブルと新テーブルについて月別で件数差分を出力する時のサンプルコード

with oldBase as (

  select
    substr(createdAt, 1, 7) as ym,  -- レコード作成日時情報(項目名は適宜変更)
    count(1) as old_count
  from
    dataset.oldtable  -- 旧テーブルを指定
  group by 1

)

, newBase as (

  select
    substr(createdAt, 1, 7) as ym,  -- レコード作成日時情報(項目名は適宜変更)
    count(1) as new_count
  from
    dataset.newtable  -- 新テーブルを指定
  group by 1

)

select
  coalesce(o.ym, n.ym) as ym, -- oldとnewどちらかの月にしかレコードない場合の考慮
  o.old_count,
  n.new_count,
  o.old_count - n.new_count as diff
from
  oldBase as o
  full join newBase as n using(ym)
order by 1

旧テーブルと新テーブルの差分レコードを出力する時のサンプルコード


with oldBase as (

  select
    * except(addColumn1) -- except指定することで、diffの対象外項目を指定する。不要なら削除する
  from
    dataset.oldtable -- 旧テーブルを指定
)

, newBase as (
  select
    * except(addColumn1) -- except指定することで、diffの対象外項目を指定する。不要なら削除する
  from
    dataset.newtable -- 新テーブルを指定
)

, diff as (
  select 'old_diff' as status, * from ( select * from oldBase except distinct select * from newBase)
  union all
  select 'new_diff' as status, * from ( select * from newBase except distinct select * from oldBase)
)

select * from diff order by 1
おすすめの記事