Snowflakeインタラクティブテーブルとインタラクティブウェアハウス

概要

Snowflakeインタラクティブテーブルとインタラクティブウェアハウスは、低レイテンシの高同時実行性ワークロード向けに最適化された特殊なSnowflakeオブジェクトです。リアルタイムダッシュボード、データ駆動型APIs、高い同時実行性を持つワークロードの提供などのユースケースに最適です。

インタラクティブウェアハウス

低レイテンシでインタラクティブなワークロードに最適化されたウェアハウスです。ウェアハウスには、低レイテンシの高同時実行性クエリ向けに最適化されたクエリエンジンが含まれています。

インタラクティブテーブル

インタラクティブウェアハウスと適切に連携し、標準のSnowflakeウェアハウスでも使用できる、低レイテンシの高同時実行性ワークロード向けに最適化されたSnowflakeテーブルの一種です。インタラクティブウェアハウスを通じてこれらのテーブルをクエリすると、最高のパフォーマンスが得られます。

ユーザーによるインタラクティブウェアハウスとインタラクティブテーブルの使用方法を示している図。

インタラクティブテーブルのユースケース

リアルタイムダッシュボード

低レイテンシ、高同時実行性で何千ものユーザーリクエストを処理するダッシュボードクエリに役立ちます。特に、ある程度の集計と柔軟性が求められるユースケースに対応するのに役立ちます。

データ駆動型APIs

予測可能で一貫性のあるレイテンシを必要とし、反復的なクエリシェイプを含むデータ駆動型APIsに役立ちます。

アラートおよびエージェント型AIワークロード

予測できないクエリ負荷の急増を引き起こす可能性があり、クエリあたりの低コストが求められる、オブザーバビリティおよびAIエージェント型ワークロードに適しています。

インタラクティブテーブルの使用を開始する

インタラクティブテーブルの使用を始めるには、次の一連のステップを完了します。

  1. 標準のウェアハウスを使用して、インタラクティブテーブルを作成します。詳細については、 インタラクティブテーブルの作成 をご参照ください。

  2. インタラクティブウェアハウスを作成します。詳細については、 インタラクティブウェアハウスの作成 をご参照ください。

  3. インタラクティブウェアハウスを再開します。詳細については、 インタラクティブウェアハウスの再開と一時停止 をご参照ください。

  4. インタラクティブテーブルをインタラクティブウェアハウスに追加します。詳細については、 インタラクティブウェアハウスへのインタラクティブテーブルの追加 をご参照ください。

  5. インタラクティブウェアハウスを通じてインタラクティブテーブルのクエリを開始します。詳細については、 インタラクティブテーブルのクエリ をご参照ください。

インタラクティブテーブルとインタラクティブウェアハウスの操作

次の手順では、インタラクティブテーブルを使用してクエリを実行するために必要なすべてのオブジェクトを作成および管理する方法について説明します。この機能を初めて試す場合は、これらの手順を次の順序で実行してください。

インタラクティブテーブルの作成

テーブル作成は、標準 CTAS ( CREATE TABLE AS SELECT )構文と、テーブルタイプを定義する追加の INTERACTIVE キーワードに従います。

CREATE INTERACTIVE TABLE コマンドには CLUSTER BY 句も必要です。CLUSTER BY 句で1つ以上の列を指定して、最もタイムクリティカルなクエリで WHERE 句と一致させます。CLUSTER BY 句で指定する列は、インタラクティブテーブルでのクエリのパフォーマンスに大きな影響を与える可能性があります。したがって、クラスタリング列を慎重に選択してください。最適なクラスタリング列の選択の詳細については、 クラスタリングキーとクラスタ化されたテーブル を参照してください。

注釈

標準ウェアハウスで CREATE INTERACTIVE TABLE コマンドを実行します。インタラクティブウェアハウスは、インタラクティブテーブルをクエリするために後のステップでのみ使用します。

次のコマンドは、標準テーブルと同じ列とデータを含むインタラクティブテーブルを作成します。CLUSTER BY 句は、ソーステーブルから id という列を参照します。

CREATE INTERACTIVE TABLE
  IF NOT EXISTS orders
  CLUSTER BY (id)
AS
  SELECT * FROM demoSource;

インタラクティブテーブルの自動リフレッシュの指定

他のテーブルのデータを使用してインタラクティブテーブルが自動的にリフレッシュされるようにするには、 TARGET_LAG 句と間隔を指定します。TARGET_LAGを指定する場合は、WAREHOUSE句と、Snowflakeが定期的なメンテナンスリフレッシュに使用する標準ウェアハウスの名前も指定する必要があります。

オプションでINITIALIZATION_WAREHOUSEを指定して、別のウェアハウスで初期リフレッシュを実行することもできます。初期リフレッシュは、多くの場合、メンテナンスリフレッシュよりも多くのデータを処理します。多くの場合、初期リフレッシュにはXLなどのより大きなウェアハウスを使用し、継続的なメンテナンスリフレッシュにはSなどのより小さなウェアハウスを使用できます。

TARGET_LAG 句の時間間隔では、秒、分、時間、または日数の最大ラグを指定できます。

TARGET_LAG = '<num> { seconds | minutes | hours | days }'

単位を指定しない場合、数値は秒を表します。最小値は60秒または1分です。

たとえば、次のCREATE INTERACTIVE TABLEステートメントは、指定されたソーステーブルから20分以上遅れないインタラクティブテーブルを定義し、初期リフレッシュにはより大きなウェアハウスを使用し、継続的なメンテナンスリフレッシュにはより小さなウェアハウスを使用します。

CREATE INTERACTIVE TABLE my_dynamic_interactive_table
  CLUSTER BY (c1, c2)
  TARGET_LAG = '20 minutes'
  WAREHOUSE = s_maintenance_wh
  INITIALIZATION_WAREHOUSE = xl_initial_wh
AS SELECT c1, SUM(c2) FROM my_source_table GROUP BY c1;

データのコストと鮮度のバランスをとる適切なラグタイムの選択に関する詳細については、 Snowflakeがリフレッシュをスケジュールする方法 をご参照ください。初期リフレッシュとメンテナンスリフレッシュに別々のウェアハウスを使用する際のガイダンスについては、:ref:`label-dt-optimize-warehouse`を参照してください。インタラクティブテーブルにも動的テーブルと同様の考慮事項が適用されます。

次のコマンドを実行して、動的インタラクティブテーブルのリフレッシュを手動でトリガーすることもできます。

ALTER INTERACTIVE TABLE ``my_dynamic_interactive_table`` REFRESH.

インタラクティブウェアハウスの作成

インタラクティブテーブルを作成した後、そのテーブルを最適なパフォーマンスでクエリするには、インタラクティブウェアハウスが必要です。CREATE WAREHOUSE で INTERACTIVE キーワードを指定するか、 CREATE OR REPLACE WAREHOUSE コマンドを指定します。

オプションで、インタラクティブテーブル名のコンマ区切りリストで TABLES 句を指定できます。その句を使用すると、これらのインタラクティブテーブルがインタラクティブウェアハウスにすぐに関連付けられます。

次のコマンドは、 orders というインタラクティブテーブル名と関連付けられているインタラクティブウェアハウスを作成します。この場合、すぐにインタラクティブウェアハウスの USE WAREHOUSE コマンドを実行でき、インタラクティブテーブルのクエリの実行を開始できます。

CREATE OR REPLACE INTERACTIVE WAREHOUSE interactive_demo
  TABLES (orders)
  WAREHOUSE_SIZE = 'XSMALL';

次のコマンドは、関連付けられたインタラクティブテーブルのないインタラクティブウェアハウスを作成します。この場合、後で ALTER WAREHOUSE コマンドを実行して、インタラクティブテーブルをインタラクティブウェアハウスに関連付けます。

CREATE OR REPLACE INTERACTIVE WAREHOUSE interactive_demo
  WAREHOUSE_SIZE = 'XSMALL';

インタラクティブウェアハウスを作成すると、再開するまで一時停止状態が維持されます。インタラクティブウェアハウスの自動一時停止と自動再開を構成できます。インタラクティブウェアハウスの最小自動一時停止間隔は24時間(86400秒)です。詳細については、 インタラクティブウェアハウスの再開と一時停止 をご参照ください。

インタラクティブテーブルのパフォーマンスの考慮事項

次のセクションでは、インタラクティブテーブルの特殊な特性と最適なワークロードによって発生する可能性のある、パフォーマンスの問題を解決する方法について説明します。

インタラクティブウェアハウスのクエリのベストプラクティス

インタラクティブウェアハウスは、 選択的なワークロード を使用するクエリに最適化されています。つまり、選択性の高いクエリでは、他のクエリタイプよりもパフォーマンスが大幅に向上します。

インタラクティブウェアハウスでより良いパフォーマンスが想定される

インタラクティブウェアハウスでパフォーマンスがより限定されることが想定される

SELECT col1, col4, AVG(col_x)
  FROM my_table
  GROUP BY col1, col4;

このクエリは、いくつかの列を必要とするだけなので、高い選択性を持ちます。Snowflakeは、この1つのクエリに必要な列のみのロードを最適化できます。

SELECT * FROM my_table;

このクエリは、すべての列を処理します。クエリは単純ですが、Snowflakeは大量のデータを処理する必要があり、これはキャッシュのサイズを超える可能性があります。テーブルの内容がキャッシュに収まっても、他のクエリからデータをキャッシュするためのスペースが少なくなるため、同時実行性が低下します。

SELECT col1, col2
  FROM my_table
  WHERE
    col_x IN (1,4,7,8)
    AND event_time >=
      DATEADD(hour, -1, CURRENT_TIMESTAMP());

WHERE 句の条件により、このクエリは選択性が高くなります。IN 句は結果を比較的少ないアイテムに制限し、時間比較はデータをさらに特定の期間に制限します。

SELECT col1, col2
  FROM my_table
  WHERE
    event_time >=
      DATEADD(day, -365, CURRENT_TIMESTAMP());

1年分のデータを要求すると、このクエリの選択性が低下します。データセットが大きい場合、このクエリはテーブル内のすべての行を処理する可能性があります。

大規模な結合(例:2つのファクトテーブルを結合する)や正規表現などの計算負荷の高い式など、その他の複雑な状況では、コンピューティングリソースの使用量が多くなるため、同時実行性が低下する可能性があります。このような状況での最適化については、 インタラクティブウェアハウスのサイズの選択 をご参照ください。

インタラクティブテーブルのデータレイアウトのベストプラクティス

インタラクティブテーブルは、パフォーマンスのための標準的なSnowflakeベストプラクティスに従います。特に、インタラクティブテーブルは、 適切にクラスター化されたテーブル を活用します。これは、フィルタリングする同じ列に基づいてソートされるテーブルです。たとえば、クエリが sale_date などの TIMESTAMP 列で頻繁にフィルタリングする場合、インタラクティブテーブルを作成するときにその列をクラスタリングキーとして使用することは理にかなっています。たとえば、インタラクティブテーブルは次のように作成することができます。

CREATE INTERACTIVE TABLE product_sales (<column definitions>) CLUSTER BY (sale_date);

そうすると、 sale_date でフィルタリングする SELECT クエリは、関係のないすべてのデータをすばやくスキップして結果を返すことができます。たとえば、次のクエリは sale_date 列をテストすることにより、日付範囲でフィルターします。

SELECT ... WHERE sale_date > '2025-10-24' AND ...

最適なクラスタリングキーの選択の詳細については、 クラスタリングキーとクラスタ化されたテーブル をご参照ください。

インタラクティブウェアハウスのサイズの選択

すべてのクエリとレイアウトの最適化を完了したら、需要を満たすために ウェアハウスのスケーリング を検討します。インタラクティブウェアハウスには、 XSMALL から 3XLARGE までさまざまなサイズがあり、 マルチクラスターウェアハウス にも対応しています。

インタラクティブテーブルの 作業データセット のおおよそのサイズに基づいて、ウェアハウスのサイズを設定することから始めることをお勧めします。作業データセットとは、頻繁にクエリされるデータの部分を指します。たとえば、クエリが通常、過去7日間の売上データのみをクエリする場合、作業セットはその7日間に対応するインタラクティブテーブルの一部です。

これは、インタラクティブウェアハウスが ローカルストレージキャッシュ を利用するためです。データセット(テーブル)全体のデータには常にアクセスできますが、キャッシュされていないデータにアクセスすると、最初の読み込み時に高い読み込みレイテンシが発生します。

ワークロードのニーズに合わせてウェアハウスのサイズを選択します。特定のデータとワークロードを試して、インタラクティブウェアハウスの最適なサイズを決定します。

Tip

パフォーマンスを向上させるために、クエリの作業セット全体をキャッシュに収める必要はありません。ホットデータ 、つまり頻繁にアクセスする行のデータを保持するのに十分なキャッシュサイズを選択します。実際、多くのお客様は、データの一部のみがキャッシュされている場合でも、インタラクティブウェアハウスキャッシュからほとんどのクエリを処理できます。

作業データセットのサイズに基づいて、次のウェアハウスサイズから始めることをお勧めします(クラウドプロバイダーとリージョンに応じて変更になる場合や、ハードウェアが異なる場合があります)。

作業セット

ウェアハウスサイズ

約350GB未満

XSMALL

約350GB~約600GB

SMALL

約600GB~約1.2TB

MEDIUM

約1.2TB~約2.5TB

LARGE

約2.5TB~約5.5TB

XLARGE

5.5TB~約11TB

2XLARGE

約11TB~約22TB

3XLARGE

約22TB~約44TB

4XLARGE

インタラクティブテーブルのパフォーマンスのトラブルシューティング

問題1:単一のクエリに時間がかかりすぎる

これは、クエリの終了までにより多くのコンピューティングリソースを必要とすることが原因である可能性があります。クエリに多くの複雑な処理が存在する可能性があるため、より多くの CPUs が必要になっている可能性があります。たとえば、多くの正規表現フィルターや CASE 句を含むクエリです。また、多くの COUNT(DISTINCT ...) を実行するクエリなど、クエリに大量のメモリが必要になっている可能性があります。単一クエリの実行時間を短縮するには、 より大きなウェアハウスサイズ を検討してください。上記の推奨サイズから開始し、1つのクエリのレイテンシが許容できるまでウェアハウスのサイズを増やし続けます。

問題2:クエリの実行に突然時間がかかるようになった(高いテールレイテンシ、高いP95レイテンシ)

クエリ時間が突然増加する場合、原因はキャッシュ不足である可能性があります。各ウェアハウスのサイズにはローカルSSDキャッシュがあります。これはSnowflakeが最新の使用済みデータをキャッシュするために使用します。Snowflakeは、頻繁にアクセスされるテーブルの一部のみを保存するようにキャッシュを管理しています。クエリが選択的である場合は、ウェアハウスのサイズを大きくすると、テールレイテンシが短縮される可能性があります。

また、新しく起動されたウェアハウスは、 キャッシュをウォームアップする のに時間がかかることに注意してください。Snowflakeは、新しく追加されたデータを積極的にウォームアップします。ベンチマークの場合は、キャッシュがウォームアップの時間を確保できるように、ベンチマークを開始する前にしばらくお待ちください。キャッシュのウォームアップ速度は、ウェアハウスのサイズとテーブルのサイズに基づきます。インタラクティブテーブルが大きければ大きいほど、Snowflakeはキャッシュのウォームアップに時間がかかります。一方、インタラクティブウェアハウスに指定したサイズが大きいほど、ウォームアップの時間は短くなります。

問題3:クエリがキューイングされているか、想定した同時実行を実現できない

MIN_CLUSTER_COUNT および MAX_CLUSTER_COUNT パラメーターを設定すると、ウェアハウスをスケールアウトできます。そうすることで、マルチクラスターのインタラクティブウェアハウスを作成できます。MAX_CLUSTER_COUNTがMIN_CLUSTER_COUNTより大きい値に設定されている場合、ウェアハウスは自動的にスケールアウトします。

インタラクティブウェアハウスへのインタラクティブテーブルの追加

インタラクティブテーブルで最適なクエリパフォーマンスを得るには、インタラクティブウェアハウスを使用する必要があります。

インタラクティブウェアハウスからインタラクティブテーブルをクエリするには、1回限りの操作を実行してインタラクティブテーブルをインタラクティブウェアハウスに追加する必要があります。そうしないと、インタラクティブウェアハウスからそのようなテーブルに対してクエリを実行すると、object not found`というエラーが表示されます。CREATE INTERACTIVE WAREHOUSE コマンドで TABLES 句を使用してインタラクティブウェアハウスに関連付けるインタラクティブテーブルを指定しなかった場合は、後で :doc:/sql-reference/sql/alter-warehouse` コマンドを使用して指定できます。

次のコマンドは orders テーブルを interactive_demo ウェアハウスに関連付けます。ADD TABLES 句を使用して、コンマで区切って複数のテーブル名を指定できます。

ALTER WAREHOUSE interactive_demo ADD TABLES (orders);

インタラクティブテーブルがインタラクティブウェアハウスに既に関連付けられている場合、コマンドは成功しますが、効果は反映されません。インタラクティブテーブルは、複数のインタラクティブウェアハウスに関連付けることができます。

このアクションにより、キャッシュのウォームアッププロセスが開始されます。キャッシュのウォームアップ時間は、データのサイズとウェアハウスのサイズに基づいています。XSウェアハウスは、約300~350MB/秒でウォームアップします。テーブルが大きいほど、キャッシュのウォームアップ時間は長くなります。ウェアハウスが大きいほど、より速くウォームアップします。

ウォームアッププロセスは、ウェアハウスが新しいクエリを受け入れることをブロックしません。ウォームアップの優先順位は、1.ユーザーが発行したクエリ、2.自動リフレッシュまたはその他のデータインジェスション手段によって新しく追加されたマイクロパーティション、3.既存のデータです。

キャッシュのウォームアップはクエリに依存するため、キャッシュがウォームアップされているかどうかを監視する最適な方法は、:ref:`Snowsightクエリプロファイル<label-snowsight_query_profile>`でリモートの読み取り率を確認することです。クエリ演算子の統計へのプログラムによるアクセスについては、:doc:`GET_QUERY_OPERATOR_STATS </sql-reference/functions/get_query_operator_stats>`を参照してください。理想的な実行シナリオでは、低レイテンシクエリのリモート読み取り率は0%である必要があります。

インタラクティブウェアハウスからのインタラクティブテーブルの削除

インタラクティブウェアハウスから1つ以上のインタラクティブテーブルをデタッチするには、 DROP TABLES 句を使用して ALTER WAREHOUSE コマンドを実行します。

ALTER WAREHOUSE interactive_demo DROP TABLES (orders, customers);

注釈

この操作後も、インタラクティブテーブルは存在します。この ALTER WAREHOUSE 句は、 SQL コマンドの DROP TABLE の実行と同じではありません。

ポイントルックアップでの検索最適化の使用

インタラクティブテーブルでポイントルックアップクエリを実行する場合は、検索最適化</user-guide/search-optimization/enabling>`を追加することをお勧めします。ポイントルックアップは、1つまたは数行のデータを取得するために単一の列でフィルタリングするクエリです。良い例として ``WHERE some_id = some_UUID` があります。

インタラクティブテーブルのマテリアライズドビューのサポート

インタラクティブテーブルでマテリアライズドビューを作成できます。*インタラクティブマテリアライズドビュー*は、インタラクティブテーブルに対するクエリの結果を事前に計算して保存するため、一般的な集計パターンのクエリパフォーマンスをさらに向上させることができます。

*インタラクティブマテリアライズドビュー*を作成するには、:doc:`CREATE MATERIALIZED VIEW</sql-reference/sql/create-materialized-view>`ステートメントでINTERACTIVEキーワードを使用します。

CREATE INTERACTIVE MATERIALIZED VIEW IF NOT EXISTS mv_order_summary
  AS
    SELECT region, SUM(quantity) AS total_quantity, SUM(net_paid) AS total_net_paid
      FROM orders
      GROUP BY region;

インタラクティブマテリアライズドビューを作成した後、マテリアライズドビューと基になるベーステーブルの**両方**をインタラクティブウェアハウスに追加する必要があります。

ALTER WAREHOUSE interactive_demo ADD TABLES (mv_order_summary, orders);

インタラクティブマテリアライズドビューのベストプラクティス

インタラクティブテーブルを使用してマテリアライズドビューを作成する場合は、以下のガイドラインに従ってください。

  • インタラクティブマテリアライズドビューは、通常のマテリアライズドビューと同様に機能します。インタラクティブテーブルに基づいている必要があります。

  • インタラクティブマテリアライズドビューとその基になるソースインタラクティブテーブルは、同じインタラクティブウェアハウスに追加する必要があります。そうしないと、インタラクティブウェアハウスからそのようなマテリアライズドビューに対してクエリを実行すると、:code:`object not found`というエラーが表示されます。

  • 結合は、インタラクティブまたは標準のいずれのマテリアライズドビューでもサポートされません。単一のベーステーブルから集計またはフィルタリングを行うようにクエリを構成してください。

  • インタラクティブテーブルやインタラクティブマテリアライズドビューを、:doc:`動的テーブル</user-guide/dynamic-tables-about>`のソースとして使用することはできません。

  • インタラクティブマテリアライズドビューの候補を検討する際は、頻繁に実行され、計算コストが高い集計クエリを選択してください。

インタラクティブウェアハウスの再開と一時停止

次のコマンドは、インタラクティブウェアハウスを再開します。ウェアハウスは一時停止状態で作成されるため、作成後にこれを行う必要があります。

ALTER WAREHOUSE interactive_demo RESUME;

また、ウェアハウスを手動で一時停止した場合は、同じようにしてウェアハウスを介してクエリの実行を開始します。

再開後のキャッシュのウォームアップ中、クエリは遅くなります。そのテーブルにあるデータの量によっては、数分から1時間ほどかかる場合があります。

次のコマンドは、インタラクティブウェアハウスを一時停止します。

ALTER WAREHOUSE interactive_demo SUSPEND;

インタラクティブウェアハウスの自動一時停止と自動再開

インタラクティブウェアハウスは、自動一時停止と自動再開をサポートしています。インタラクティブウェアハウスの作成時または変更時に、AUTO_SUSPENDおよびAUTO_RESUMEプロパティを設定できます。

インタラクティブウェアハウスの最小AUTO_SUSPEND値は86400秒(24時間)です。この最小値により、キャッシュが十分に長くウォーム状態に保たれ、一貫した低レイテンシのパフォーマンスが提供されます。86400より小さい値を指定すると、Snowflakeは代わりに86400を使用します。

次の例では、24時間の非アクティブ後に自動一時停止を行い、自動再開を有効に設定したインタラクティブウェアハウスを作成します。

CREATE INTERACTIVE WAREHOUSE interactive_demo
  WAREHOUSE_SIZE = 'XSMALL'
  AUTO_SUSPEND = 86400
  AUTO_RESUME = TRUE;

これらのプロパティは、既存のインタラクティブウェアハウスに設定することもできます。

ALTER WAREHOUSE interactive_demo SET
  AUTO_SUSPEND = 86400
  AUTO_RESUME = TRUE;

注釈

実稼働環境では、通常、24時間多数の同時クエリを実行するワークロードや、クエリにとって低レイテンシが重要な場合に、インタラクティブウェアハウスを使用します。インタラクティブウェアハウスの一時停止と再開(手動または自動一時停止)には、長いキャッシュウォームアップ時間が必要なため、自動一時停止がワークロードパターンに適しているかどうかを評価してください。

リージョンの可用性

インタラクティブテーブルとインタラクティブウェアハウスは、次のAmazon Web Services(AWS)、Google Cloud Platform(GCP)、およびMicrosoft Azureリージョンで利用できます。Snowflakeリージョンの詳細については、 サポートされているクラウドリージョン をご参照ください。

  • us-east-1 - AWS US東部(バージニア北部)

  • us-west-2 - AWS US西部(オレゴン)

  • us-east-2 - AWS US東部(オハイオ)

  • ca-central-1 - AWSカナダ(中部)

  • ap-northeast-1 - AWSアジア太平洋(東京)

  • ap-southeast-2 - AWSアジア太平洋(シドニー)

  • eu-central-1 - AWS EU(フランクフルト)

  • eu-west-1 - AWS EU(アイルランド)

  • eu-west-2 - AWSヨーロッパ(ロンドン)

  • us-central1 - GCP US中部1(アイオワ)

  • us-east4 - GCP US東部4(バージニア北部)

  • europe-west2 - GCPヨーロッパ西部2(ロンドン)

  • europe-west3 - GCPヨーロッパ西部3(フランクフルト)

  • europe-west4 - GCPヨーロッパ西部4(オランダ)

  • australia-southeast2 - GCPオーストラリア南東部2(メルボルン)

  • Azure:すべてのAzureリージョン。

タスクベースのマルチクラスターのサイズ設定

スケジュールされたタスクを使用してMIN_CLUSTER_COUNTパラメーターを調整できます。

-- 1) Task to scale OUT during business hours
CREATE OR REPLACE TASK mcw_scale_out_morning
  WAREHOUSE = my_wh          -- the warehouse that *executes the task*
  SCHEDULE = 'USING CRON 0 8 * * * UTC'   -- 08:00 UTC daily
AS
  ALTER WAREHOUSE my_wh      -- the warehouse you want to change (can be same or different)
    SET
      MIN_CLUSTER_COUNT = 10;  -- optional: ECONOMY or STANDARD

-- 2) Task to scale IN after hours
CREATE OR REPLACE TASK mcw_scale_in_evening
  WAREHOUSE = my_wh
  SCHEDULE = 'USING CRON 0 20 * * * UTC'  -- 20:00 UTC daily
AS
  ALTER WAREHOUSE my_wh
    SET
      MIN_CLUSTER_COUNT = 2;

自動スケーリングポリシーを使用して、ワークロードの同時実行のピークに対応するようにMAX_CLUSTER_COUNTを設定することをお勧めします。

インタラクティブウェアハウスのドロップ

DROP WAREHOUSE コマンドを実行して、インタラクティブウェアハウスを完全に削除することができます。インタラクティブウェアハウスをドロップすると、そのウェアハウスとインタラクティブテーブルとの関連付けが削除されます。ただし、他のインタラクティブウェアハウスを使用して、それらの同じインタラクティブテーブルをクエリすることはできます。

インタラクティブテーブルのクエリ

クエリセッションでは、現在のセッションのウェアハウスがインタラクティブウェアハウスであることを確認してください。

USE WAREHOUSE interactive_demo;

確認後、インタラクティブテーブルを通常通りにクエリできます。

注釈

  • インタラクティブウェアハウスでは、インタラクティブテーブルのみをクエリできます。標準テーブルやハイブリッドテーブルなど、他のタイプのSnowflakeテーブルをクエリするには、まず標準ウェアハウスに切り替えます。

  • 特定の種類のクエリは、特にインタラクティブテーブルに適しています。詳細については、 インタラクティブテーブルのユースケース をご参照ください。

ベンチマークのベストプラクティス

テスト環境でインタラクティブテーブルのパフォーマンスを評価する場合は、一貫性のない、または誤解を招く結果を避けるために、次のベストプラクティスに従ってください。

  • クエリ結果キャッシュをオフにして、複数のベンチマーク実行間でベンチマーク結果の一貫性を確保します。USE_CACHED_RESULT セッションパラメーターを設定すると、アカウント、ユーザー、セッションレベルでクエリ結果キャッシュをオフにできます。そうすることで、クエリはインタラクティブウェアハウスのテーブルデータキャッシュのみを使用します。実稼働環境で結果キャッシュをオンにすると、ベンチマークテストと同等以上のパフォーマンスが期待できます。

  • インタラクティブなウェアハウスはテーブルデータキャッシュを準備するのに時間がかかるため、インタラクティブなウェアハウスを作成または再開してからクエリのパフォーマンスをテストするまでしばらく待ってください。これは、ウェアハウスが長期間アクティブであり続ける典型的な本番構成をシミュレートします。Snowflakeは、キャッシュの警告プロセスに最適化を適用します。したがって、サンプルクエリを実行してキャッシュを自分で準備するよりも、Snowflakeがこのプロセスを完了させる方が効率的です。

  • インタラクティブテーブルのパフォーマンスを標準的なSnowflakeテーブルと比較する場合は、標準テーブルとインタラクティブテーブルの間でクエリをインターリーブしないでください。代わりに、標準テーブルで完全なベンチマークを実行してから、インタラクティブテーブルで同じテストを実行します。

  • 他のデータベースシステムと比較してベンチマークを行う場合は、インタラクティブテーブルのクラスタリング列がクエリのWHERE句の述語と一致していることを確認してください。最適なクラスタリング列の選択の詳細については、 クラスタリングキーとクラスタ化されたテーブル を参照してください。特に、一意のIDsまたはタイムスタンプなど、カーディナリティの高い列でクラスター化しないでください。

  • クエリが短く単純な場合は、インタラクティブウェアハウス向けの MAX_CONCURRENCY_LEVEL パラメーターをより高い値に設定すると、より高い同時実行性を実現できます。

インタラクティブなテーブルとストレージのライフサイクルポリシー

ストレージライフサイクルポリシー を使用して、データの年齢やその他の基準など、定義した条件に基づいて、特定のテーブル行をアーカイブまたは期限切れにできます。

現在、自動リフレッシュを使用するインタラクティブテーブルにはストレージライフサイクルポリシーを使用できません。TARGET_LAGパラメーターまたはストレージライフサイクルポリシーを使用することができますが、両方はできません。

障害復旧と複製

複製グループに追加すると、インタラクティブテーブルとインタラクティブウェアハウスはターゲットアカウントに複製されます。

インタラクティブテーブルの複製は、標準テーブルの複製と同じように動作します。インタラクティブウェアハウスの複製は、インタラクティブウェアハウスがターゲットリージョンでサポートされていることを前提とする点を除き、標準ウェアハウスの複製と同じように動作します。現時点では、ターゲットリージョンでインタラクティブウェアハウスの複製は検証されません。

ターゲットアカウントのインタラクティブウェアハウスは自動再開されます。ただし、キャッシュのウォームアップが必要なため、ウェアハウスのパフォーマンスは保証されません。一貫したパフォーマンスを確保するために、ウェアハウスをターゲットリージョンで実行し続けることができます。

コストと請求の考慮事項

インタラクティブウェアハウスは、アクティブな場合にコンピューティング料金が発生します。インタラクティブなウェアハウスの最小請求可能期間は1時間で、その後は1秒単位です。

注釈

一時停止されたインタラクティブウェアハウスを(手動または自動再開によって)再開すると、その操作により新しい最小請求期間の料金が発生します。その料金は、ウェアハウスでの他の最近のアクティビティにより、その期間にすでに請求があった場合でも適用されます。このため、短時間にインタラクティブウェアハウスを何度も一時停止したり再開したりしないようにしてください。24時間の最小自動一時停止間隔は、過剰な一時停止/再開サイクルを防ぐのに役立ちます。

インタラクティブテーブルには標準のストレージコストがかかります。インタラクティブテーブルのストレージ価格は、標準テーブルと同じです。データエンコーディングと追加インデックスの違いにより、インタラクティブテーブルは同等の標準テーブルよりも大きくなる場合があります。より大きなデータサイズとインデックスは、ストレージボリュームの計算に考慮されます。

インタラクティブウェアハウスとインタラクティブテーブルのコストと請求の詳細については、 Snowflakeサービス利用表 をご参照ください。

インタラクティブウェアハウスとインタラクティブテーブルの制限

インタラクティブウェアハウスとインタラクティブテーブルには次の制限が適用されます。一部の制限は、インタラクティブテーブルと標準的なSnowflakeテーブルのアーキテクチャの違いによるもので、これらの制限は永続的なものです。

インタラクティブウェアハウスの制限

  • Snowflakeインタラクティブウェアハウスは、短時間実行されるクエリに合わせて最適化されています。SELECT コマンドのクエリのタイムアウトは、デフォルトで5秒です。5秒後、クエリはキャンセルされます。クエリのタイムアウト値を減らすことはできますが、増やすことはできません。これは、長時間実行されるクエリがインタラクティブウェアハウスのリソースを枯渇させ、低レイテンシクエリのパフォーマンスを低下させることを防ぐための仕様です。SHOWやINSERT OVERWRITEなどの特定の種類のコマンドは、5秒間のタイムアウト間隔の対象外です。

  • クエリが常にタイムアウトする場合は、インタラクティブウェアハウスでの使用に適していない可能性があることを示しています。一般に、パフォーマンスチューニングテクニックのいくつかを適用すると、クエリのレイテンシを短縮できます。詳細については、:ref:`label-interactive_performance_considerations`を参照してください。

  • インタラクティブウェアハウスは、24時間(86400秒)の最小自動一時停止間隔で、自動一時停止と自動再開をサポートします。インタラクティブウェアハウスを再開すると、データキャッシュの再ウォームアップが必要になるため、クエリに大幅なレイテンシが生じることが予想されます。詳細については、 インタラクティブウェアハウスの再開と一時停止 をご参照ください。

  • インタラクティブウェアハウスから標準のSnowflakeテーブルをクエリすることはできません。同じセッションで標準テーブルとインタラクティブテーブルの両方をクエリするには、:doc:`USE WAREHOUSE </sql-reference/sql/use-warehouse>`を実行して適切なウェアハウスタイプに切り替えます。

  • インタラクティブウェアハウスには最大10個のインタラクティブテーブルを追加できます。これは、システムの過負荷を防ぐための一時的な制限です。この制限は将来引き上げられる予定です。10個を超えるインタラクティブテーブルを追加する必要がある場合は、Snowflakeサポートにお問い合わせください。

  • CALLコマンド を実行して、インタラクティブウェアハウスでストアドプロシージャを呼び出すことはできません。

  • ->> :doc:`パイプ演算子</sql-reference/operators-flow>`は使用できません。その演算子は、バックグラウンドでストアドプロシージャを使用します。

インタラクティブテーブルの制限

  • インタラクティブテーブルは以下の機能をサポートしていません。

    • UPDATEおよびDELETEなどの データ操作言語(DML)コマンド 。推奨されるワークフローは、自動リフレッシュインタラクティブテーブルを使用し(つまり、TARGET_LAGを設定する)、代わりにソーステーブルにDMLを適用することです。自動リフレッシュメカニズムは、インタラクティブテーブルでDMLを使用するよりも効率的で費用対効果が高くなります。実行できる DML は INSERT OVERWRITE だけです。

    • Fail-safe。このデータ復旧メカニズムはインタラクティブテーブルでは使用できません。ただし、インタラクティブテーブルではTime Travelを引き続き使用できます。

    • 行のタイムスタンプ。インタラクティブテーブルで行タイムスタンプを有効にすることはできません。これは一時的な制限です。

    • クエリインサイト。現在のところ、クエリ実行のレイテンシを短縮するために、インタラクティブテーブルで実行されるクエリに対してクエリインサイトは収集されず、利用することもできません。

  • 以下の操作は実行できません。

    • 標準(非インタラクティブ)マテリアライズドビューのソースとして、インタラクティブテーブルを使用する。インタラクティブテーブルでマテリアライズドビューを作成するには、INTERACTIVEキーワードを使用します。インタラクティブテーブルのマテリアライズドビューのサポート をご参照ください。

    • ADD COLUMNまたはREMOVE COLUMNなどの ALTER TABLE 句を使用して、インタラクティブテーブルのプロパティを変更します。実行 できる ALTER TABLE 操作は以下の通りです。

    • インタラクティブテーブルで ストリーム を使用する。

    • ベーステーブルとしてインタラクティブテーブルを使用して 動的テーブル を作成する。

    • インタラクティブテーブルのクエリに RESAMPLE句 を使用する。

    • CREATE INTERACTIVE TABLEまたはALTER TABLEを使用してTime Travel保持期間を設定する。インタラクティブなテーブルは、親スキーマ、データベース、またはアカウントからDATA_RETENTION_TIME_IN_DAYS値を継承します。

影響を受ける SQL ステートメント

この機能により、次のSnowflakeの SQL コマンドに変更が行われます。

  • ALTER WAREHOUSE :新しい ADD TABLES および DROP TABLES 句。

  • CREATE INTERACTIVE TABLE :必要な CLUSTER BY 句を持つインタラクティブテーブルを作成します。

  • CREATE INTERACTIVE WAREHOUSE :オプションの TABLES 句を持つインタラクティブウェアハウスを作成します。

  • CREATE MATERIALIZED VIEW:インタラクティブテーブルでマテリアライズドビューを作成するための新しいオプションのINTERACTIVEキーワード。