【BigQuery】どこよりもやさしい|歯抜けになった日付を埋める

【BigQuery】どこよりもやさしい|歯抜けになった日付を埋める

更新日:2024/03/19

この記事をシェア

  • X
  • Facebook
  • LINE
  • COPY LINK
クリップボードにコピーしました

この記事が解決できること

  1. 歯抜けになった日付を補完したテーブルが作成できる

はじめに

今回は、歯抜けになってしまっている日付を、SQLを使用して補完する方法を紹介します。トランザクションデータを扱っていると、日付が飛び飛びなデータに遭遇することがあります。
そのままBIツールで可視化をした場合、ぽっかりと空いてしまっている日付が発生します。


このような可視化の場合はもちろん、データ整形の際に日付が存在しないことで結合が上手くできなかったりもするので、できれば処理をしておきたいところです。

BigQueryを使った実践

今回使用するデータは、TableauというBIツールに付属しているサンプルデータです。こちらのデータをBigQueryに保存して使用します。赤枠で囲んだ部分が今回の解説で登場するカラムです。

order_date:注文日
sales:売上

ロジックの概要

ロジックはとてもシンプルで、既存の日付カラムの最小日と最大日を使って、新しい日付カラムを生成します。

この生成した日付カラムに対して、歯抜けが起きているテーブルをLEFT JOINさせます。当然としてNULLが発生するので、IFNULL関数を使用して0で埋めます。

クエリ

今回使用したクエリは以下の通りです。

SQLクエリ

WITH _generate_date_table AS
(
 SELECT
  gen_order_date
 FROM
  (
   SELECT
   --日付最小日と最大日を使って、generate関数で日付カラムを生成
    GENERATE_DATE_ARRAY(MIN(order_date),MAX(order_date)) AS gen_order_date
   FROM `your_pj.your_dataset.sample_data_for_looker_studio`
  )
  --generate関数で作成したカラムは配列になっているので、unnestで分解
 ,UNNEST(gen_order_date) AS gen_order_date
)

SELECT
 gen_order_date
 ,IFNULL(sales,0) AS sales
FROM _generate_date_table AS a
--生成した日付カラムに対して元のセールスデータを結合させる
 LEFT JOIN `your_pj.your_dataset.sample_data_for_looker_studio` AS b
  ON a.gen_order_date = b.order_date

ロジックで組んだ通りの結果を出すことができました。

まとめ

歯抜けになった日付を補完する方法をご紹介しました。この工程をすっ飛ばしてデータ処理をしたりBIで可視化をすることも可能ですが、手段として知っておくことで便利なタイミングがあると思います。是非ご活用ください。

ここまでお読みいただきありがとうございました!

この記事をシェア

  • X
  • Facebook
  • LINE
  • COPY LINK
クリップボードにコピーしました

関連記事

DX-Acceleratorについて
より詳しく知りたい方!

DX-Accelerator データ人材常駐支援サービス

即戦力の
アナリティクスエンジニアが
常駐支援!
まずはお気軽にご相談ください。

DX-Acceleratorについて
より詳しく知りたい方!