カテゴリ:

データメトリック関数

FRESHNESS (システムデータメトリック関数)

テーブルが最後に変更されてからの経過時間を秒単位で返します。

列の引数が指定される場合、期間は、関数の現在の実行とタイムスタンプ列の最大値の比較によって計算されます。関数を実行するスケジュールされた時間が実際に実行された時間と異なる場合は、スケジュールされた時間が比較に使用されます。

列が指定されていない場合、期間は、関数の現在の実行と、テーブルに対する DML コマンド の最後の動作との比較によって計算されます。関数を実行するスケジュールされた時間が実際に実行された時間と異なる場合は、スケジュールされた時間が比較に使用されます。

このトピックでは、関数を直接呼び出すための構文を提供します。関数をテーブルまたはビューに関連付け、一定の間隔で実行する方法については、DMF と関連付けて、データ品質チェックを自動化します。 をご参照ください。

構文

SNOWFLAKE.CORE.FRESHNESS( [ <query> ] )
Copy

引数

query

指定された場合、クエリは単一のタイムスタンプ列を投影する必要があります。

列を指定しない場合は、直接呼び出すのではなく 関数をテーブルに関連付ける 必要があります。

許可されるデータ型

query によって投影された列には、以下のデータ型のいずれかが必要です。

  • DATE

  • TIMESTAMP_LTZ

  • TIMESTAMP_TZ

戻り値

この関数は、 NUMBER データ型のスカラー値を返します。

使用上の注意

  • この関数をビューまたは外部テーブルに関連付ける場合は、列引数を指定する必要があります。

  • この関数を直接呼び出すことができるのは、タイムスタンプ列を投影するクエリを指定した場合のみです。関数をテーブルまたはビューに関連付け、列引数の有無にかかわらず、定期的な間隔で実行されるようにする場合は、DMF と関連付けて、データ品質チェックを自動化します。 をご参照ください。

関数をテーブル t1 に関連付けて、テーブルに対する最後の DML 操作からの経過時間を判断します。

ALTER TABLE t1
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.FRESHNESS on ();
Copy

関数を直接呼び出して TIMESTAMP 列を測定し、テーブルのデータ鮮度(300秒または5分)を判断します。

SELECT SNOWFLAKE.CORE.FRESHNESS(
  SELECT
    timestamp
  FROM hr.tables.empl_info
) < 300;
Copy
+---------------------------------------------------------------------+
| SNOWFLAKE.CORE.FRESHNESS(SELECT timestamp FROM hr.tables.empl_info) |
+---------------------------------------------------------------------+
| True                                                                |
+---------------------------------------------------------------------+