AT | BEFORE のドキュメントによると、AT または BEFORE 句は Snowflake Time Travel で使用され、過去の特定の時点に基づいてテーブルから履歴データをクエリできます。この句では、アクセスしたい履歴データを正確に特定するために、以下のいずれかのパラメータを使用できます。 * TIMESTAMP: タイムトラベルに使用する正確な日付と時刻を指定します。 * OFFSET: タイムトラベルに使用する現在の時刻からの差を秒単位で指定します。 * STATEMENT: Time Travel の参照ポイントとして使用するステートメントのクエリ ID を指定します。 したがって、クエリが実行される前にテーブル内にあった履歴データをユーザーが表示できるようにするクエリは次のようになります。 * B. SELECT * FROM my_table AT (TIMESTAMP => '2021-01-01 07:00:00' :: timestamp); このクエリは、TIMESTAMP パラメータを使用して、クエリ実行時刻 07:01 より前の時点を指定します。 * D. SELECT * FROM my table PRIOR TO STATEMENT '8e5d0ca9-005e-44e6-b858-a8f5b37c5726'; このクエリは、PRIOR TO STATEMENT キーワードと STATEMENT パラメータを使用して、クエリ実行時間 07:01 の直前の時点を指定します。 * F. SELECT * FROM my_table BEFORE (STATEMENT => '8e5d0ca9-005e-44e6-b858-a8f5b37c5726'); このクエリは、BEFORE キーワードと STATEMENT パラメータを使用して、クエリ実行時刻 07:01 の直前の時点を指定します。 その他のクエリは次の理由で正しくありません。 * A. SELECT * FROM my table WITH TIME_TRAVEL (OFFSET => -60*30); このクエリは、OFFSETパラメータを使用して、現在時刻(07:30)の30分前の時点を指定しています。これはクエリ実行時刻(07:01)より後なので、クエリ実行前の履歴データは表示されません。 * C. SELECT * FROM TIME_TRAVEL ('MY_TABLE', 2021-01-01 07:00:00); このクエリはTime Travelでは有効な構文ではありません。TIME_TRAVEL関数はSnowflakeには存在しません。正しい構文は、FROM句のテーブル名の後にAT句またはBEFORE句を使用することです。 * E. SELECT * FROM my_table AT (OFFSET => -60*30); このクエリでは、ATキーワードとOFFSETパラメータを使用して、現在時刻の30分前、つまり07:30の時点を指定しています。これはクエリ実行時刻の07:01と等しいため、クエリ実行前の履歴データは表示されません。ATキーワードは、指定されたパラメータに等しいタイムスタンプを持つステートメントまたはトランザクションによって行われた変更がリクエストに含まれることを指定します。クエリによる変更を除外するには、代わりにBEFOREキーワードを使用する必要があります。