event_log funzione con valori di tabella

Si applica a:segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime 13.3 LTS e versioni successive

Restituisce il registro eventi per viste materializzate, tabelle di streaming e pipeline DLT.

Altre informazioni sul registro eventi Delta Live Tables.

Sintassi

event_log( { TABLE ( table_name ) | pipeline_id } )

Argomenti

  • table_name: nome di una vista materializzata o di una tabella di streaming. Il nome non deve includere una specifica temporale. Se il nome non è qualificato, il catalogo e lo schema correnti vengono usati per qualificare l'identificatore.
  • pipeline_id: identificatore di stringa di una pipeline delta live tables.

Valori restituiti

  • id STRING NOT NULL: identificatore univoco per il record del registro eventi.
  • sequence STRING NOT NULL: oggetto JSON contenente metadati per identificare e ordinare gli eventi.
  • origin STRING NOT NULL: oggetto JSON contenente metadati per l'origine dell'evento, ad esempio provider di servizi cloud, area, user_ido pipeline_id.
  • timestamp TIMESTAMP NOT NULL: ora in cui l'evento è stato registrato in formato UTC.
  • message STRING NOT NULL: messaggio leggibile che descrive l'evento.
  • level STRING NOT NULL: livello di registrazione, ad esempio , INFO, WARNERROR, o METRICS.
  • maturity_level STRING NOT NULL: stabilità dello schema di eventi. I valori possibili sono:
    • STABLE: lo schema è stabile e non cambierà.
    • NULL: lo schema è stabile e non cambierà. Il valore può essere NULL se il record è stato creato prima dell'aggiunta del maturity_level campo (versione 2022.37).
    • EVOLVING: lo schema non è stabile e può cambiare.
    • DEPRECATED: lo schema è deprecato e il runtime di Tabelle live Delta potrebbe interrompere la produzione di questo evento in qualsiasi momento.
  • error STRING: se si è verificato un errore, vengono descritti in dettaglio l'errore.
  • details STRING NOT NULL: oggetto JSON contenente i dettagli strutturati dell'evento. Questo è il campo principale usato per l'analisi degli eventi.
  • event_type STRING NOT NULL: tipo di evento.

Utilizzo

Solo i proprietari della pipeline, della tabella di streaming o della vista materializzata possono visualizzare il registro eventi. Creare una visualizzazione e concedere agli utenti l'accesso alla visualizzazione per consentire ad altri utenti di eseguire query sul registro eventi.

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

Esempi

Per altri esempi, vedere Esecuzione di query sul registro eventi.

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