Aracılığıyla paylaş


event_log tablo değerli işlev

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 13.3 LTS ve üzeri

Gerçekleştirilmiş görünümler, akış tabloları ve DLT işlem hatları için olay günlüğünü döndürür.

Delta Live Tables olay günlüğü hakkında daha fazla bilgi edinin.

Söz dizimi

event_log( { TABLE ( table_name ) | pipeline_id } )

Bağımsız değişkenler

  • table_name: Gerçekleştirilmiş bir görünümün veya akış tablosunun adı. Ad bir zamansal belirtim içermemelidir. Ad nitelenmiş değilse, tanımlayıcıyı nitelemek için geçerli katalog ve şema kullanılır.
  • pipeline_id: Delta Live Tables işlem hattının dize tanımlayıcısı.

Döndürülenler

  • id STRING NOT NULL: Olay günlüğü kaydı için benzersiz bir tanımlayıcı.
  • sequence STRING NOT NULL: Olayları tanımlamak ve sıralamak için meta verileri içeren bir JSON nesnesi.
  • origin STRING NOT NULL: Olayın kaynağı için meta verileri içeren bir JSON nesnesi, örneğin, bulut sağlayıcısı, bölge, user_idveya pipeline_id.
  • timestamp TIMESTAMP NOT NULL: Olayın UTC olarak kaydedilildiği saat.
  • message STRING NOT NULL: Olayı açıklayan, insan tarafından okunabilen bir ileti.
  • level STRING NOT NULL: Günlüğe kaydetme düzeyi; örneğin, INFO, WARN, ERRORveya METRICS.
  • maturity_level STRING NOT NULL: Olay şemasının kararlılığı. Olası değerler şunlardır:
    • STABLE: Şema kararlıdır ve değişmez.
    • NULL: Şema kararlıdır ve değişmez. Değer, kayıt alan eklenmeden maturity_level önce oluşturulduysa (NULLsürüm 2022.37) olabilir.
    • EVOLVING: Şema kararlı değil ve değişebilir.
    • DEPRECATED: Şema kullanım dışıdır ve Delta Live Tables çalışma zamanı bu olayı üretmeyi istediği zaman durdurabilir.
  • error STRING: Bir hata oluştuysa, hatayı açıklayan ayrıntılar.
  • details STRING NOT NULL: Olayın yapılandırılmış ayrıntılarını içeren bir JSON nesnesi. Bu, olayları çözümlemek için kullanılan birincil alandır.
  • event_type STRING NOT NULL: Olay türü.

Kullanım

Olay günlüğünü yalnızca işlem hattı, akış tablosu veya gerçekleştirilmiş görünümün sahipleri görüntüleyebilir. Bir görünüm oluşturun ve diğer kullanıcıların olay günlüğünü sorgulamasına izin vermek için kullanıcılara görünümde erişim verin.

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

Örnekler

Daha fazla örnek için olay günlüğünü sorgulama bölümüne bakın.

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