動的テーブルの制限¶
このトピックでは、動的テーブルに関する一般的な制限と機能横断的な制限について説明します。
一般的な制限¶
動的テーブルの使用には、次の一般的な制限が適用されます。
1つのアカウントは最大50,000個の動的テーブルを保持できます。
動的テーブルからデータを切り捨てることはできません。
仮の動的テーブルは作成できません。
動的テーブルを使用して 共有データをインジェストする 場合、クエリは共有動的テーブルまたは上流の動的テーブルを参照する共有セキュアビューから選択できません。
動的テーブルのリフレッシュが所有者ロールとして動作するため、動的テーブルではセカンダリロールを使用できません。詳細については、 プライマリ・ロールとセカンダリ・ロールによる権限付与 をご参照ください。
ソーステーブルの DATA_RETENTION_TIME_IN_DAYS オブジェクトパラメータをゼロに設定することはできません。
動的テーブルの定義では、動的 SQL (例えば、セッション変数や匿名ブロックの未束縛変数)を使用することはできません。
動的テーブル定義では、ユーザー定義テーブル関数(UDTF)から読み込む SELECT ブロックは、明示的に列を指定する必要があり、
*
を使用することはできません。動的テーブルは、入力テーブルの MAX_DATA_EXTENSION_TIME_IN_DAYS 期間内にリフレッシュされないと、古くなる可能性があります。一度古くなると、リフレッシュを再開するには再作成する必要があります。
動的テーブルは現在、 ACCESS_HISTORY ビュー のトラッキングをサポートしていません。つまり、動的テーブルに対して実行されたクエリや操作は、監査や監視の目的でSnowflakeの ACCESS_HISTORY にキャプチャされません。
DEFAULT という名前のウェアハウスを使用する動的テーブルを作成する場合は、 の二重引用符で囲まれた識別子要件 に続いて、名前を二重引用符で囲む必要があります。例えば、
CREATE DYNAMIC TABLE ... WAREHOUSE = "DEFAULT"
です。動的テーブルの作成に関する詳細情報は、 動的テーブルを作成する を参照してください。動的・テーブルは、ディレクトリ・テーブル、外部テーブル、ストリーム、およびマテリアライズド・ビューを含むソースをサポートしません。
他の動的テーブルをクエリするビューから読み取る動的テーブルは作成できません。
機能間の相互作用のサポート¶
次の機能間の相互作用はサポートされていません。
Query Acceleration Service(QAS)を使用して、動的テーブルのリフレッシュを実行する。
共有テーブルのデータベースロールによるマスキングポリシー。
集約および投影ポリシーは、動的・テーブルのベーステーブルには適用できません。ベーステーブルに集約または投影ポリシーが関連付けられている場合、動的テーブルは作成に失敗します。
増分リフレッシュのサポート¶
動的テーブルは、インクリメンタルとフルという2つのリフレッシュ・モードをサポートしています。リフレッシュモードは AUTO、または明示的にセットすることができます。詳細については、 動的テーブルのリフレッシュモード および 動的なテーブル更新モードを選択するためのベストプラクティス をご参照ください。
マスキングポリシーおよび行アクセスポリシー¶
動的テーブルのマスキングや行アクセスポリシーは、リフレッシュモードには影響しません。ただし、ソーステーブルに適用されたポリシーがリフレッシュモードに影響する場合があります:
インクリメンタルリフレッシュは、ソーステーブルのポリシーが CURRENT_ROLE または IS_ROLE_IN_SESSION 関数を使用している場合にサポートされます。
ソーステーブルのポリシーが他の関数、 INFORMATION_SCHEMA ビュー、またはテーブルへのクエリ(例えば、 マッピングテーブルルックアップ)を使用している場合、インクリメンタルリフレッシュはサポートされません。
複製¶
増分リフレッシュで 複製された動的テーブルは、フェールオーバー後に再初期化してから増分リフレッシュを再開します。
詳細については、 複製と動的テーブル をご参照ください。
クローニング¶
クローンされた増分動的テーブル は、作成後の最初のリフレッシュ時に再初期化が必要になることがあります。
動的テーブルが、ベーステーブルが削除された別の動的テーブルからクローンされた場合、クローンは中断され、再開やリフレッシュはできません。