Snowflakeの新UI「Snowsight」の「クエリフィルタ」を試してみました

2020.06.18

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは!DA(データアナリティクス)事業本部 インテグレーション部の大高です。

先日Snowflakeのオンラインイベント「Say Hello To The Data Cloud」にて、様々な新機能、実装予定の機能が紹介されました。

この中の既にPreview Featuresとして公開されているSnowsightのクエリフィルタを試してみたいと思います。

Snowsightの簡単な利用方法などについてはこちらの記事にも記載しています。

クエリフィルタを使ってみる

今回試すクエリフィルタはこちらに記載のシステムフィルタ「:daterange」と「:datebucket」です。

利用例

始めに例を挙げると、以下のようなクエリでフィルタが利用できます。

SELECT
    :datebucket(DATE) AS DATE
  , CASE_TYPE
  , SUM(CASES) AS CASES
FROM
  JHU_COVID_19
WHERE
  COUNTRY_REGION = 'Japan'
  AND PROVINCE_STATE = 'Tokyo'
  AND DATE = :daterange
GROUP BY
    :datebucket(DATE)
  , CASE_TYPE
;

このクエリは、COVID-19の東京の感染者数を状態別(Active, Confirmed, Deaths, Recoverd)に集約したものです。

チャート化するとこんな感じですね。

daterange フィルタ

こちらは名前の通り「日付の範囲」でフィルタリングできます。今回はDATEカラムに対してかけています。

SELECT
    :datebucket(DATE) AS DATE
  , CASE_TYPE
  , SUM(CASES) AS CASES
FROM
  JHU_COVID_19
WHERE
  COUNTRY_REGION = 'Japan'
  AND PROVINCE_STATE = 'Tokyo'
  AND DATE = :daterange
GROUP BY
    :datebucket(DATE)
  , CASE_TYPE
;

フィルタを利用すると画面上部からdaterange用のフィルタ選択が出来るようになります。

Last dayからAll timeまでは、記載の通りそのまま期間指定が可能です。クリックした瞬間に、指定期間でフィルタが行われたクエリが発行されます。

Custom

Customを指定すると、更に細かく指定することもできます。

Range

カレンダーベースで範囲指定ができて、更にタイムゾーン指定もできます。

Last

現在時刻から過去への期間指定ができます。日、週、月、年が指定が可能です。

さらに「部分的な日を含める」か、などのオプションもありました。これはどういうオプションなのかも見てみます。

例として、「2020/06/18」に「include partial days」として直近1週間を指定すると以下のように「2020/06/12 から 2020/06/16 (元データが16日までしかないため)まで」のデータが取得できました。直近の7日間が指定された形ですね。

また、「2020/06/18」に「exclude partial weeks」として直近1週間を指定すると以下のように「2020/06/08」から「2020/06/14」までのデータが取得できました。今度は先週の「月曜日 から 日曜日 まで」が指定された形となりました。

このように、指定した単位(週)で考えた時に、絶対的な範囲(月~日)として考えてそれ以外の日を除外する(exclude partial weeks)のか、相対的な範囲(直近7日間)(include partial days)なのかが変わるようです。

更にタイムゾーン指定もできるので、非常に細かい設定が可能なのが分かりますね。

Next

こちらはLastと同じように現在時刻から未来への期間指定ができます。日、週、月、年が指定が可能です。

Before

指定日からの過去すべてを指定できます。

After

指定日からの未来すべてを指定できます。

databucket フィルタ

このフィルタはGROUP BYで利用できるフィルタです。引数にカラムを指定します。

SELECT
    :datebucket(DATE) AS DATE
  , CASE_TYPE
  , SUM(CASES) AS CASES
FROM
  JHU_COVID_19
WHERE
  COUNTRY_REGION = 'Japan'
  AND PROVINCE_STATE = 'Tokyo'
  AND DATE = :daterange
GROUP BY
    :datebucket(DATE)
  , CASE_TYPE
;

フィルタを利用すると画面上部からdatabucket用のフィルタ選択が出来るようになります。

秒単位から年単位までと細かくグルーピングできますね。こちらもタイムゾーン指定可能でした。

まとめ

以上、Snowsightの「クエリフィルタ」を試してみました。実際にチャートと組み合わせて使ってみると、色々なフィルタ条件でチャート表示がすぐに切り替えられるので非常に便利だと感じました。

どなたかのお役に立てば幸いです。それでは!