event_log fungsi table-valued

Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime 13.3 LTS ke atas

Mengembalikan log peristiwa untuk tampilan materialisasi, tabel streaming, dan alur DLT.

Pelajari selengkapnya tentang log peristiwa Delta Live Tables.

Sintaks

event_log( { TABLE ( table_name ) | pipeline_id } )

Argumen

  • table_name: Nama tampilan materialisasi atau tabel streaming. Nama tidak boleh menyertakan spesifikasi temporal. Jika nama tidak memenuhi syarat, katalog dan skema saat ini digunakan untuk memenuhi syarat pengidentifikasi.
  • pipeline_id: Pengidentifikasi string dari alur Delta Live Tables.

Mengembalikan

  • id STRING NOT NULL: Pengidentifikasi unik untuk catatan log peristiwa.
  • sequence STRING NOT NULL: Objek JSON yang berisi metadata untuk mengidentifikasi dan mengurutkan peristiwa.
  • origin STRING NOT NULL: Objek JSON yang berisi metadata untuk asal peristiwa, misalnya, penyedia cloud, wilayah, user_id, atau pipeline_id.
  • timestamp TIMESTAMP NOT NULL: Waktu peristiwa direkam dalam UTC.
  • message STRING NOT NULL: Pesan yang dapat dibaca manusia yang menjelaskan peristiwa tersebut.
  • level STRING NOT NULL: Tingkat pengelogan, misalnya, , INFO, WARNERROR, atau METRICS.
  • maturity_level STRING NOT NULL: Stabilitas skema peristiwa. Nilai yang mungkin adalah:
    • STABLE: Skema stabil dan tidak akan berubah.
    • NULL: Skema stabil dan tidak akan berubah. Nilainya mungkin NULL jika rekaman dibuat sebelum maturity_level bidang ditambahkan (rilis 2022.37).
    • EVOLVING: Skema tidak stabil dan dapat berubah.
    • DEPRECATED: Skema tidak digunakan lagi dan runtime Tabel Langsung Delta dapat berhenti menghasilkan peristiwa ini kapan saja.
  • error STRING: Jika terjadi kesalahan, detail yang menjelaskan kesalahan.
  • details STRING NOT NULL: Objek JSON yang berisi detail terstruktur peristiwa. Ini adalah bidang utama yang digunakan untuk menganalisis peristiwa.
  • event_type STRING NOT NULL: Jenis peristiwa.

Penggunaan

Hanya pemilik alur, tabel streaming, atau tampilan materialisasi yang dapat melihat log peristiwa. Buat tampilan dan beri pengguna akses pada tampilan untuk memungkinkan pengguna lain mengkueri log peristiwa.

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

Contoh

Untuk contoh lainnya, lihat Mengkueri log peristiwa.

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