旧テーブルと新テーブルについて月別で件数差分を出力する時のサンプルコード
with oldBase as (
select
date_format(date_trunc('MONTH', createdAt), 'YYYY-MM') as ym,
count(1) as old_count
from
dataset.oldtable -- 旧テーブルを指定
group by 1
),
newBase as (
select
date_format(date_trunc('MONTH', createdAt), 'YYYY-MM') 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
* -- SnowflakeにはBigQueryの "* EXCEPT(column_name)" と同等の構文がないため、
-- 必要な列を明示的に指定する必要があります。
-- もし "addColumn1" を除外したい場合は、以下のように列リストを記述してください。
-- 例: columnA, columnB, columnC, ...
from
dataset.oldtable -- 旧テーブルを指定
),
newBase as (
select
* -- 同様に、除外したい列がある場合は明示的に列リストを記述してください。
-- 例: columnA, columnB, columnC, ...
from
dataset.newtable -- 新テーブルを指定
),
diff as (
select 'old_diff' as status, * from ( select * from oldBase except select * from newBase)
union all
select 'new_diff' as status, * from ( select * from newBase except select * from oldBase)
)
select * from diff
order by status, 2; -- statusでソート後、2番目の列(最初のデータ列)でソート