Share via


event_log-Tabellenwertfunktion

Gilt für:Häkchen gesetzt ja Databricks SQL Häkchen gesetzt ja Databricks Runtime ab Version 13.3 LTS

Gibt das Ereignisprotokoll für materialisierte Sichten, Streamingtabellen und DLT-Pipelines zurück.

Erfahren Sie mehr über das Delta Live Tables-Ereignisprotokoll.

Syntax

event_log( { TABLE ( table_name ) | pipeline_id } )

Argumente

  • table_name: Der Name einer materialisierten Sicht oder einer Streamingtabelle. Der Name darf keine temporale Spezifikation enthalten. Wenn der Name nicht qualifiziert ist, werden der aktuelle Katalog und das aktuelle Schema verwendet, um den Bezeichner zu qualifizieren.
  • pipeline_id: Der Zeichenfolgenbezeichner einer Delta Live Tables-Pipeline.

Gibt zurück

  • id STRING NOT NULL: Ein eindeutiger Bezeichner für den Ereignisprotokolldatensatz.
  • sequence STRING NOT NULL: Ein JSON-Objekt, das Metadaten zum Identifizieren und Anordnen von Ereignissen enthält.
  • origin STRING NOT NULL: Ein JSON-Dokument, das Metadaten für den Ursprung des Ereignisses enthält (z. B. Cloudanbieter, Region, user_id oder pipeline_id)
  • timestamp TIMESTAMP NOT NULL: Der Zeitpunkt, zu dem das Ereignis aufgezeichnet wurde (in UTC).
  • message STRING NOT NULL: Eine Meldung für Benutzer*innen, die das Ereignis beschreibt.
  • level STRING NOT NULL: Die Protokollierungsebene, z. B. INFO, WARN, ERROR oder METRICS.
  • maturity_level STRING NOT NULL: Die Stabilität des Ereignisschemas. Mögliche Werte:
    • STABLE: Das Schema ist stabil und ändert sich nicht.
    • NULL: Das Schema ist stabil und ändert sich nicht. Der Wert lautet möglicherweise NULL, wenn der Datensatz erstellt wurde, bevor das Feld maturity_level hinzugefügt wurde (Release 2022.37).
    • EVOLVING: Das Schema ist nicht stabil und ändert sich möglicherweise.
    • DEPRECATED: Das Schema ist veraltet, und die Delta Live Tables-Runtime kann die Erstellung dieses Ereignisses jederzeit beenden.
  • error STRING: Wenn ein Fehler aufgetreten ist, werden Details zur Beschreibung des Fehlers angezeigt.
  • details STRING NOT NULL: Ein JSON-Dokument, das strukturierte Details des Ereignisses enthält. Dies ist das primäre Feld, das zum Analysieren von Ereignissen verwendet wird.
  • event_type STRING NOT NULL: Der Ereignistyp.

Verwendung

Nur Besitzer*innen der Pipeline, der Streamingtabelle oder der materialisierten Sicht können das Ereignisprotokoll anzeigen. Erstellen Sie eine Sicht, und gewähren Sie Benutzer*innen Zugriff auf die Sicht, damit andere Benutzer*innen das Ereignisprotokoll abfragen können.

> CREATE VIEW event_log_raw AS SELECT * FROM event_log(table(my_mv));
> GRANT SELECT ON VIEW event_log_raw TO `user@databricks.com`;

Beispiele

Weitere Beispiele finden Sie unter Abfragen des Ereignisprotokolls.

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