Compartilhar via


Função event_log com valores de tabela

Aplica-se a:marque sim SQL do Databricks marque sim LTS do Databricks Runtime 13.3 e superior

Retorna o log de eventos das exibições materializadas, das tabelas de streaming e dos pipelines declarativos do Lakeflow Spark.

Saiba mais sobre o log de eventos do Lakeflow Spark Declarative Pipelines.

Note

Essa função só se aplica aos pipelines do Unity Catalog publicados usando o modo de publicação antigo. Para todos os outros pipelines, consulte diretamente a tabela de log de eventos.

A TVF event_log somente poderá ser chamada pelo proprietário de uma tabela de fluxo ou exibição materializada e uma exibição criada na TVF event_log somente poderá ser consultada pelo proprietário de uma tabela de fluxo ou exibição materializada. A exibição não pode ser compartilhada com outros usuários.

Syntax

event_log( { TABLE ( table_name ) | pipeline_id } )

Arguments

  • table_name: o nome de uma exibição materializada ou tabela de streaming. O nome não deve incluir uma especificação temporal. Se o nome não for qualificado, o catálogo e o esquema atuais serão usados para qualificar o identificador.
  • pipeline_id: o identificador de cadeia de caracteres de um pipeline.

Returns

  • id STRING NOT NULL: um identificador exclusivo para o registro do log de eventos.
  • sequence STRING NOT NULL: um documento JSON que contém metadados para identificar e ordenar eventos.
  • origin STRING NOT NULL: um documento JSON que contém metadados para a origem do evento, por exemplo, provedor de nuvem, região,user_id ou pipeline_id.
  • timestamp TIMESTAMP NOT NULL: a hora em que o evento foi registrado no UTC.
  • message STRING NOT NULL: uma mensagem legível por humanos que descreve o evento.
  • level STRING NOT NULL: O nível de registro em log, por exemplo, INFO, WARN, ERROR ou METRICS.
  • maturity_level STRING NOT NULL: a estabilidade do esquema de evento. Os valores possíveis são:
    • STABLE: o esquema é estável e não será alterado.
    • NULL: o esquema é estável e não será alterado. O valor poderá ser NULL se o registro tiver sido criado antes da adição do campo maturity_level (versão 2022.37).
    • EVOLVING: o esquema não é estável e pode ser alterado.
    • DEPRECATED: o esquema foi preterido e o runtime do Lakeflow Spark Declarative Pipelines pode parar de produzir esse evento a qualquer momento.
  • error STRING: em caso de erro, detalhes que descrevem o erro.
  • details STRING NOT NULL: um documento JSON que contém detalhes estruturados do evento. Esse é o campo primário usado para analisar eventos.
  • event_type STRING NOT NULL: o tipo de evento.

Examples

Para obter mais exemplos, consulte o log de eventos do Pipeline.

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