次の方法で共有


event_log テーブル値関数

適用対象:check marked yes Databricks SQL Databricks Runtime 13.3 LTS 以上

マテリアライズド ビューストリーミング テーブルおよび Lakeflow Spark 宣言パイプラインのイベント ログを返します。

Lakeflow Spark 宣言パイプライン のイベント ログの詳細を確認します。

Note

この関数は、レガシ発行モードを使用して発行された Unity カタログ パイプラインにのみ適用されます。 他のすべてのパイプラインについては、イベント ログ テーブルに直接クエリを実行します。

event_log テーブル値関数は、ストリーミング テーブルまたはマテリアライズド ビューの所有者のみが呼び出すことができます。event_log テーブル値関数に対して作成されたビューは、ストリーミング テーブルまたはマテリアライズド ビューの所有者のみがクエリを実行できます。 ビューを他のユーザーと共有することはできません。

Syntax

event_log( { TABLE ( table_name ) | pipeline_id } )

Arguments

  • table_name: マテリアライズド ビューまたはストリーミング テーブルの名前。 この名前には、テンポラル仕様を含めることはできません。 名前が修飾されていない場合、現在のカタログとスキーマを使用して識別子を修飾します。
  • pipeline_id: パイプラインの文字列識別子。

Returns

  • id STRING NOT NULL: イベント ログ レコードの一意識別子。
  • sequence STRING NOT NULL: イベントを識別し、順序付けるためのメタデータを含む JSON オブジェクト。
  • origin STRING NOT NULL: イベントの発生元のメタデータを含む JSON オブジェクト (クラウド プロバイダー、リージョン、user_idpipeline_id など)。
  • timestamp TIMESTAMP NOT NULL: イベントが記録された時刻 (UTC)。
  • message STRING NOT NULL: 人が判読できる、イベントを説明するメッセージ。
  • level STRING NOT NULL: ログのレベル (INFOWARNERRORMETRICS)。
  • maturity_level STRING NOT NULL: イベント スキーマの安定性。 指定できる値は、
    • STABLE: このスキーマは安定しており、変更されません。
    • NULL: このスキーマは安定しており、変更されません。 NULL フィールドが追加される前にレコードが作成された場合、この値は maturity_level になる可能性があります (リリース 2022.37)。
    • EVOLVING: このスキーマは安定していないため、変更される可能性があります。
    • DEPRECATED: スキーマは非推奨となり、Lakeflow Spark 宣言パイプライン ランタイムは、いつでもこのイベントの生成を停止する可能性があります。
  • error STRING: エラーが発生した場合の、エラーの詳細説明。
  • details STRING NOT NULL: イベントの構造化された詳細を含む JSON オブジェクト。 これは、イベントの分析に使用される主なフィールドです。
  • event_type STRING NOT NULL: イベントの種類。

Examples

その他の例については、 パイプライン イベント ログを参照してください。

-- View the events on a materialized view
> SELECT timestamp, message, details
  FROM event_log(table(my_mv))
  WHERE level in ('INFO', 'WARN', 'ERROR')
  ORDER BY timestamp;

timestamp, message, details
---------------------------
2023-08-12 01:03:05.000, 'Flow "my_mv" is STARTING.', '{"flow_progress":{"status":"STARTING"}}'

-- Create a temp view with the latest update to the table/pipeline
> CREATE OR REPLACE TEMP VIEW latest_update AS
  SELECT origin.update_id AS id FROM event_log('<pipeline-ID>')
  WHERE event_type = 'create_update' ORDER BY timestamp DESC LIMIT 1;

-- Query lineage information
> SELECT
  details:flow_definition.output_dataset as output_dataset,
  details:flow_definition.input_datasets as input_dataset
FROM
  event_log('<pipeline-ID>'),
  latest_update
WHERE
  event_type = 'flow_definition' AND origin.update_id = latest_update.id;

output_dataset, input_dataset
-----------------------------
customers, null
sales_orders_raw, null
sales_orders_cleaned, ["customers", "sales_orders_raw"]
sales_order_in_la, ["sales_orders_cleaned"]

-- Query data quality expectation history for a streaming table
> WITH expectations_parsed AS (
    SELECT
      explode(
        from_json(
          details:flow_progress.data_quality.expectations,
          "array<struct<name: string, dataset: string, passed_records: int, failed_records: int>>"
        )
      ) row_expectations
    FROM
      event_log(table(my_st)),
      latest_update
    WHERE
      event_type = 'flow_progress'
      AND origin.update_id = latest_update.id
  )
  SELECT
    row_expectations.dataset as dataset,
    row_expectations.name as expectation,
    SUM(row_expectations.passed_records) as passing_records,
    SUM(row_expectations.failed_records) as failing_records
  FROM expectations_parsed
  GROUP BY
    row_expectations.dataset,
    row_expectations.name;

dataset, expectation, passing_records, failing_records
------------------------------------------------------
sales_orders_cleaned, valid_order_number, 4083, 0