Snowflakeにおいてクレジットを使用しないクエリを試してみた
こんにちは!DA(データアナリティクス)事業本部 インテグレーション部の大高です。
Snowflakeでクエリを実行すると、通常はウェアハウスが起動し、ウェアハウスを利用した分だけクレジットが使用されて課金対象となります。一方で、クエリによってはウェアハウスを利用せず、クレジットを使用しないクエリもあります。
今回はそんなクエリを改めてまとめてみました。
SHOW コマンド
まずはSHOW
コマンドです。SHOW
コマンドには、SHOW DATABASES
やSHOW ROLES
などの多くのコマンドがありますが、いずれもウェアハウスの起動を必要としません。また、LIKE
句を利用してフィルタリングすることもできます。
検証
クエリとその実行結果プロファイルです。
SHOW DATABASES LIKE 'OOTAKA%';
Metadata operation
となっており、すべてメタデータだけでの処理なのでクレジットは消費していません。
MIN / MAX 関数
つぎはMIN
とMAX
関数です。値のMIN/MAXもSnowflakeの内部でメタデータとして保存されていますので、ウェアハウスの起動は不要となります。
検証
クエリとその実行結果プロファイルです。
SELECT MIN(C_CUSTKEY) FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER; SELECT MAX(C_CUSTKEY) FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER;
こちらはMIN
のクエリプロファイルですが、MAX
も同様です。METADATA-BASED RESULT
になっていますね。
COUNT 関数
COUNT
関数です。MIN/MAXと同様にレコードのカウント数もメタデータとして保存されていますので、ウェアハウスの起動は不要です。
検証
クエリとその実行結果プロファイルです。
SELECT COUNT(C_CUSTKEY) FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER;
MIN
やMAX
のクエリプロファイルと同様にMETADATA-BASED RESULT
になっています。
一方で、以下のようにGROUP BYで集約するようなクエリの場合はウェアハウスの起動が必要なので注意が必要です。
SELECT COUNT(C_CUSTKEY) FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER GROUP BY C_CUSTKEY;
CREATE TABLE ... LIKE ..., DROP TABLE
CREATE TABLE ... LIKE ...
やDROP TABLE
もウェアハウスの利用は不要です。試してみましょう。
検証
クエリとその実行結果プロファイルです。
CREATE TABLE REGION LIKE SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.REGION; DROP TABLE REGION;
こちらはCREATE TABLE ... LIKE ...
のクエリプロファイルですが、DROP TABLE
も同様です。コンピュートを利用しないクエリとなります。
一方でCREATE TABLE ... AS SELECT ...
(CTAS)の場合には、ウェアハウスの起動が必要となります。
まとめ
以上、Snowflakeにおいてクレジットを使用しないクエリを試してみました。
今回検証したクエリは、Snowflakeの処理レイヤにおけるクラウドサービスレイヤーのみを利用するクエリであったため、ウェアハウスを利用する必要がなく、また、高速に動作するクエリとなっています。
自分自身の知識の整理として、改めて実際に試しつつまとめてみました。
どなたかのお役に立てば幸いです。それでは!