お問い合わせ
1 分で読むことができます

【Snowflake】lead/lag関数を使用して歯抜けのチェックをしよう

執筆者 bird 更新日時 2023年7月24日

Topics: snowflake
【Snowflake】lead/lag関数を使用して歯抜けのチェックをしよう

目次

歯抜けのチェックをしたい

日ごとの集計テーブルにおいて、歯抜けとなっている日がどれくらいあるか調べる機会がありました。

シンプルにdistinctをかけるだけでは一目でわかりづらいので、少し工夫してみました。

lead/lag関数についての説明は割愛いたします。

https://docs.snowflake.com/ja/sql-reference/functions/lead

https://docs.snowflake.com/ja/sql-reference/functions/lag

出来上がったクエリ

 

クエリ

previous_day:lag関数によって呼び出した1つ前の日付

not_enough:previous_dayとの差(歯抜け日数)

を表しています。

上の例では、

・2023-04-04と2023-04-02の間が1日歯抜け(2023-04-03)

・2023-04-16と2023-04-10の間が5日歯抜け(2023-04-11~2023-04-15)

・2023-04-30と2023-04-21の間が8日歯抜け(2023-04-22~2023-04-29)

ということがわかります。

調査する日付けの範囲がもっと広い場合は、上記クエリをサブクエリ化し「where not_enough > 0」を加えると歯抜けのあるレコードのみ表示することができます。

lead関数を使用するときは(order by $1 desc)とすると同じ結果になります。

 

上記のクエリの良い点は、大体どのくらい歯抜けがあるか数字で分かるところです。

これからもどんどんリカバリ業務の効率化をしていきたいですね。

Snowflakeを体験してみませんか?

INSIGHT LABではSnowflake紹介セミナーを定期開催しています。Snowflakeの製品紹介だけでなく、デモンストレーションを通してSnowflakeのシンプルなUI操作や処理パフォーマンスの高さを体感いただけます。

詳細はこちら

bird

執筆者 bird

4 分で読むことができます。
Snowflakeの料金体系|クレジットと費用最適化のポイントをご紹介
5 分で読むことができます。
【禁断の比較?】SnowflakeとTreasure Dataを比べてみました
1 分で読むことができます。
誤ってupdateしてしまったレコードをtime travelで復元する
3 分で読むことができます。
AWS Lambdaを使ってSnowflakeとSFTPサーバーを連携してみた
6 分で読むことができます。
【Snowflake】初めてStreamを使ったデータパイプライン構築をした話