0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Bigquery勉強メモ#001】BigQueryで日次データの欠損値を補完する。

Posted at

Crezitの@yabebe_tです。
最近ひたすらBQ書いてるのでわからなかったことのメモを残していくことにしました。

課題

貸付データをサーバーから日次で集計しつつ、銀行口座データとのダブルチェックができるようにしたい。日付の欠損があった場合に、集計がずれてしまわないように、欠損日には0をいれてクエリーする。

解決方法

シンプルに2ステップで解決しました。
色々調べているとSQLで@numなど変数を使ってやっている方もいました

  1. GENERATE_DATE_ARRAYで日付データを生成
  2. 集計したテーブルをLEFT JOIN。

1. GENERATE_DATE_ARRAYで日付データを生成

2020年3月1日から今日+1日までの日付データを生成。

WITH date_series as (
select publish_date
from unnest(GENERATE_DATE_ARRAY( DATE("2020-03-01"), DATE_ADD(CURRENT_DATE(), INTERVAL 1 DAY))) as publish_date
)

GENERATE_DATE_ARRAY

GENERATE_DATE_ARRAY(start_date, end_date[, INTERVAL INT64_expr date_part])


SELECT GENERATE_DATE_ARRAY('2016-10-05', '2016-10-08') AS example;

+--------------------------------------------------+
| example                                          |
+--------------------------------------------------+
| [2016-10-05, 2016-10-06, 2016-10-07, 2016-10-08] |
+--------------------------------------------------+

Date_ADD

DATE_ADD(date_expression, INTERVAL int64_expression date_part)

SELECT DATE_ADD(DATE "2008-12-25", INTERVAL 5 DAY) as five_days_later;

+--------------------+
| five_days_later    |
+--------------------+
| 2008-12-30         |
+--------------------+

2. 集計したテーブルをLEFT JOIN。

参考記事

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?