LoginSignup
0
0

BigQueryで、あるtableの時刻間の差分データを取得

Posted at

BigQueryのタイムトラベル機能を用いれば良い。しかし注意点として次の2点があります:

  1. タイムトラベルの時間枠はデフォルトでは7日間
  2. 一度に同じtableの2つの異なる時間を参照することは無理みたいなので、TEMP TABLEを使う

以下のsample queryで適宜<target_table_id>INTERVAL ***key_*を置き換えて使ってください:

CREATE TEMP TABLE before_snapshot
AS 
SELECT DISTINCT 
  key_1,
  ...  ,
  key_n
FROM `<target_table_id>`
FOR SYSTEM_TIME AS OF TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
;

SELECT 
  * 
FROM `<target_table_id>` after_snapshot
WHERE NOT EXISTS (
  SELECT 1
  FROM before_snapshot
  WHERE 
    after_snapshot.key_1 = before_snapshot.key_1 AND
    ...                                          AND
    after_snapshot.key_n = before_snapshot.key_n 
)
;
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0