Dela via


event_log tabellvärdesfunktion

Gäller för: markerad ja Databricks SQL markerad ja Databricks Runtime 13.3 LTS och senare

Returnerar händelseloggen för materialiserade vyer, strömmande tabeller och DLT-pipelines.

Läs mer om Delta Live Tables-händelseloggen.

Kommentar

Funktionen event_log tabellvärde kan bara anropas av ägaren till en strömmande tabell eller materialiserad vy, och en vy som skapats över event_log funktionen tabellvärde kan endast efterfrågas av ägaren till en strömmande tabell eller materialiserad vy. Det går inte att dela vyn med andra användare.

Syntax

event_log( { TABLE ( table_name ) | pipeline_id } )

Argument

  • table_name: Namnet på en materialiserad vy eller en strömmande tabell. Namnet får inte innehålla någon temporal specifikation. Om namnet inte är kvalificerat används den aktuella katalogen och schemat för att kvalificera identifieraren.
  • pipeline_id: Strängidentifieraren för en Delta Live Tables-pipeline.

Returer

  • id STRING NOT NULL: En unik identifierare för händelseloggposten.
  • sequence STRING NOT NULL: Ett JSON-objekt som innehåller metadata för att identifiera och beställa händelser.
  • origin STRING NOT NULL: Ett JSON-objekt som innehåller metadata för händelsens ursprung, till exempel molnleverantör, region, user_ideller pipeline_id.
  • timestamp TIMESTAMP NOT NULL: Den tid då händelsen registrerades i UTC.
  • message STRING NOT NULL: Ett läsbart meddelande som beskriver händelsen.
  • level STRING NOT NULL: Loggningsnivån, till exempel INFO, , WARNERROReller METRICS.
  • maturity_level STRING NOT NULL: Händelseschemats stabilitet. Möjliga värden är:
    • STABLE: Schemat är stabilt och ändras inte.
    • NULL: Schemat är stabilt och ändras inte. Värdet kan vara NULL om posten skapades innan fältet maturity_level lades till (version 2022.37).
    • EVOLVING: Schemat är inte stabilt och kan ändras.
    • DEPRECATED: Schemat är inaktuellt och Delta Live Tables-körningen kan sluta producera den här händelsen när som helst.
  • error STRING: Om ett fel uppstod finns information som beskriver felet.
  • details STRING NOT NULL: Ett JSON-objekt som innehåller strukturerad information om händelsen. Det här är det primära fältet som används för att analysera händelser.
  • event_type STRING NOT NULL: Händelsetypen.

Exempel

Fler exempel finns i Fråga efter händelseloggen.

-- 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