動的テーブルのリフレッシュに関する一般的な問題の診断

このトピックでは、動的テーブルが期待どおりに更新されない場合のトラブルシューティングの解決策について説明します。

動的テーブルの使用に関する制限や、必要な権限がない場合、一部の操作が制限されることがあります。詳細については、 動的テーブルの制限 および 動的テーブルのアクセス制御 をご参照ください。

ここに記載されていない問題が発生した場合は、 Snowflakeサポート までお問い合わせください。

問題

解決策

動的テーブルは増分リフレッシュではなくフルリフレッシュを使用しています。

動的テーブルの実際の リフレッシュモード は作成時に決定され、その後は不変です。明示的に指定されない場合、リフレッシュモードのデフォルトは AUTO です。これは、クエリの複雑さ、サポートされていない構成要素、演算子、関数などの様々な要因に基づいてリフレッシュモードを選択します。

Snowflakeのリリース間で一貫した動作を維持するには、すべての動的テーブルで明示的にリフレッシュモードを設定する必要があります。たとえば、動的テーブルを増分的にのみリフレッシュさせたい場合は、作成時にリフレッシュモードを明示的に INCREMENTAL に設定する必要があります。 増分リフレッシュの使用には、制限がある かもしれないことを念頭に置いてください。詳細については、 動的なテーブル更新モードを選択するためのベストプラクティス をご参照ください。

必要な権限 を持つロールを使用して、以下のいずれかの方法でリフレッシュモードを検証できます。

  • SQLの使用:SHOWDYNAMICTABLESステートメントを実行します。出力で、 text 列はユーザーが指定したリフレッシュモードを示し、 refresh_mode 列は実際のリフレッシュモードを示し、 refresh_mode_reason は実際のリフレッシュモードが選択された理由を示しています。

  • Snowsight の使用:ナビゲーションメニューで、 Monitoring » Dynamic Tables を選択し、動的テーブルを選択します。動的テーブルのリフレッシュモードは、 Table Details タブに表示できます。

動的テーブルの増分リフレッシュが遅いようです。

動的テーブルのリフレッシュパフォーマンスは、そのテーブルが扱うワークロードやデータに関する特定の仮定に依存します。

Refresh History を使用して、分散を表示したり、外れ値を検出します。

  1. Snowsight にサインインします。

  2. ナビゲーションで、 Monitoring » Dynamic Tables に移動します。

  3. 動的テーブルを選択し、 Refresh History タブを開きます。

  4. トラブルシューティングには、過去24時間の動的テーブルのリフレッシュ時間を使用します。

動的テーブルが空のリフレッシュを実行していますが、コストが表示されています。

動的テーブルが参照する上流オブジェクトの変更に関連する場合、正味の新しい行がゼロ(つまり、追加、リフレッシュ、削除された行がゼロ)のリフレッシュはウェアハウスリソースを消費します。

たとえば、関連する仮想ウェアハウスが中断され、ベースオブジェクトの変更が識別子で確認されない場合、中断された仮想ウェアハウスは再開されず、クレジットも消費されません。これは、 NO_DATA リフレッシュと呼ばれています。逆に、変更が識別された場合、更新を処理するために仮想ウェアハウスが自動的に再開され、その結果、動的テーブルに適用される行がゼロであってもウェアハウスのリソースが消費されます。

動的テーブルに変更を加えていないにもかかわらずコストが表示される場合は、ソーステーブルの変更が原因である可能性があります。 Snowsight の Refresh History タブを使用して、仮想ウェアハウスのクレジットが消費されたかどうかを確認できます。

  1. Snowsight にサインインします。

  2. ナビゲーションメニューで Monitoring » Dynamic Tables を選択します。

  3. 動的テーブルを選択し、 Refresh History タブを開きます。

  4. Warehouse used only チェックボックスをチェックして、ウェアハウスを使用してリフレッシュされたリフレッシュを表示します。

詳細については、 動的テーブルのコストを理解する をご参照ください。

動的テーブルが再初期化されています。

動的テーブルが再初期化されるのは、以下のいずれかの原因が考えられます。

  • 動的テーブルの1つ以上の入力が置換されている場合。例えば、動的テーブルがビュー上で定義されていて、ビューを置き換えた場合、動的テーブルは再初期化する必要があります。

  • 入力のスキーマが変更され、動的テーブルが変更された列に依存している場合。

  • データアクセスポリシー は、動的テーブルの入力に対して追加、削除、変更されます。

  • クローンされた増分動的テーブル は、作成後の最初のリフレッシュ時に再初期化が必要になることがあります。

  • 増分リフレッシュで 複製された動的テーブル は、フェールオーバー後に再初期化してから増分リフレッシュを再開します。

初期化に関する一般的な情報については、 動的テーブル初期化の理解 をご参照ください。