Tutorial: Menjalankan alur Tabel Langsung Delta pertama Anda

Penting

Alur DLT tanpa server ada di Pratinjau Umum. Untuk mempelajari tentang mengaktifkan alur DLT Tanpa Server, hubungi tim akun Azure Databricks Anda.

Tutorial ini menunjukkan kepada Anda cara mengonfigurasi alur Tabel Langsung Delta dari kode dalam buku catatan Databricks dan menjalankan alur dengan memicu pembaruan alur. Tutorial ini mencakup contoh alur untuk menyerap dan memproses himpunan data sampel dengan contoh kode menggunakan antarmuka Python dan SQL . Anda juga dapat menggunakan instruksi dalam tutorial ini untuk membuat alur dengan notebook apa pun dengan sintaks Tabel Langsung Delta yang ditentukan dengan benar.

Anda dapat mengonfigurasi alur Delta Live Tables dan memicu pembaruan menggunakan antarmuka pengguna ruang kerja Azure Databricks atau opsi alat otomatis seperti API, CLI, Bundel Aset Databricks, atau sebagai tugas dalam alur kerja Databricks. Untuk membiasakan diri dengan fungsionalitas dan fitur Tabel Langsung Delta, Databricks merekomendasikan terlebih dahulu menggunakan UI untuk membuat dan menjalankan alur. Selain itu, saat Anda mengonfigurasi alur di UI, Tabel Langsung Delta menghasilkan konfigurasi JSON untuk alur Anda yang dapat digunakan untuk mengimplementasikan alur kerja terprogram Anda.

Untuk menunjukkan fungsionalitas Tabel Langsung Delta, contoh dalam tutorial ini mengunduh himpunan data yang tersedia untuk umum. Namun, Databricks memiliki beberapa cara untuk terhubung ke sumber data dan menyerap data yang akan digunakan alur yang menerapkan kasus penggunaan dunia nyata. Lihat Menyerap data dengan Tabel Langsung Delta.

Persyaratan

  • Untuk memulai alur tanpa server, Anda harus memiliki izin pembuatan kluster atau akses ke kebijakan kluster yang menentukan kluster Tabel Langsung Delta. Runtime Delta Live Tables membuat kluster sebelum menjalankan alur Anda dan gagal jika Anda tidak memiliki izin yang benar.

  • Untuk menggunakan contoh dalam tutorial ini, ruang kerja Anda harus mengaktifkan Katalog Unity.

  • Anda harus memiliki izin berikut di Katalog Unity:

    • READ VOLUME dan WRITE VOLUME, atau ALL PRIVILEGES, untuk my-volume volume.
    • USE SCHEMA atau ALL PRIVILEGES untuk default skema.
    • USE CATALOG atau ALL PRIVILEGES untuk main katalog.

    Untuk mengatur izin ini, lihat administrator Databricks atau hak istimewa Unity Catalog dan objek yang dapat diamankan.

  • Contoh dalam tutorial ini menggunakan volume Katalog Unity untuk menyimpan data sampel. Untuk menggunakan contoh ini, buat volume dan gunakan katalog, skema, dan nama volume volume tersebut untuk mengatur jalur volume yang digunakan oleh contoh.

Catatan

Jika ruang kerja Anda tidak mengaktifkan Katalog Unity, buku catatan dengan contoh yang tidak memerlukan Katalog Unity dilampirkan ke artikel ini. Untuk menggunakan contoh ini, pilih Hive metastore sebagai opsi penyimpanan saat Anda membuat alur.

Di mana Anda menjalankan kueri Delta Live Tables?

Kueri Tabel Langsung Delta terutama diimplementasikan di buku catatan Databricks, tetapi Tabel Langsung Delta tidak dirancang untuk dijalankan secara interaktif di sel buku catatan. Menjalankan sel yang berisi sintaks Tabel Langsung Delta dalam buku catatan Databricks menghasilkan pesan kesalahan. Untuk menjalankan kueri, Anda harus mengonfigurasi buku catatan Anda sebagai bagian dari alur.

Penting

  • Anda tidak dapat mengandalkan urutan eksekusi sel demi sel buku catatan saat menulis kueri untuk Tabel Langsung Delta. Tabel Langsung Delta mengevaluasi dan menjalankan semua kode yang ditentukan dalam buku catatan tetapi memiliki model eksekusi yang berbeda dari buku catatan Jalankan semua perintah.
  • Anda tidak dapat mencampur bahasa dalam satu file kode sumber Tabel Langsung Delta. Misalnya, buku catatan hanya boleh berisi kueri Python atau kueri SQL. Jika Anda harus menggunakan beberapa bahasa dalam alur, gunakan beberapa buku catatan atau file khusus bahasa dalam alur.

Anda juga dapat menggunakan kode Python yang disimpan dalam file. Misalnya, Anda dapat membuat modul Python yang dapat diimpor ke alur Python Anda atau menentukan fungsi yang ditentukan pengguna (UDF) Python untuk digunakan dalam kueri SQL. Untuk mempelajari tentang mengimpor modul Python, lihat Mengimpor modul Python dari folder Git atau file ruang kerja. Untuk mempelajari tentang menggunakan UDF Python, lihat Fungsi skalar yang ditentukan pengguna - Python.

Contoh: Menyerap dan memproses data nama bayi New York

Contoh dalam artikel ini menggunakan himpunan data yang tersedia untuk umum yang berisi catatan nama bayi Status New York. Contoh-contoh ini menunjukkan menggunakan alur Delta Live Tables untuk:

  • Baca data CSV mentah dari himpunan data yang tersedia untuk umum ke dalam tabel.
  • Baca catatan dari tabel data mentah dan gunakan ekspektasi Delta Live Tables untuk membuat tabel baru yang berisi data yang dibersihkan.
  • Gunakan rekaman yang dibersihkan sebagai input ke kueri Tabel Langsung Delta yang membuat himpunan data turunan.

Kode ini menunjukkan contoh arsitektur medali yang disederhanakan. Lihat Apa itu arsitektur medallion lakehouse?.

Implementasi contoh ini disediakan untuk antarmuka Python dan SQL . Anda bisa mengikuti langkah-langkah untuk membuat buku catatan baru yang berisi kode contoh, atau Anda bisa melompat ke depan untuk Membuat alur dan menggunakan salah satu buku catatan yang disediakan di halaman ini.

Menerapkan alur Delta Live Tables dengan Python

Kode Python yang membuat himpunan data Delta Live Tables harus mengembalikan DataFrames, yang akrab bagi pengguna dengan pengalaman PySpark atau Pandas for Spark. Untuk pengguna yang tidak terbiasa dengan DataFrames, Databricks merekomendasikan penggunaan antarmuka SQL. Lihat Menerapkan alur Delta Live Tables dengan SQL.

Semua API Python Tabel Langsung Delta diimplementasikan dalam dlt modul. Kode alur Tabel Langsung Delta Anda yang diterapkan dengan Python harus secara eksplisit mengimpor dlt modul di bagian atas buku catatan dan file Python. Tabel Langsung Delta berbeda dari banyak skrip Python dengan cara kunci: Anda tidak memanggil fungsi yang melakukan penyerapan dan transformasi data untuk membuat himpunan data Tabel Langsung Delta. Sebagai gantinya, Delta Live Tables menginterpretasikan fungsi dekorator dari dlt modul di semua file yang dimuat ke dalam alur dan membangun grafik aliran data.

Untuk menerapkan contoh dalam tutorial ini, salin dan tempel kode Python berikut ke dalam notebook Python baru. Anda harus menambahkan setiap contoh cuplikan kode ke selnya sendiri di buku catatan dalam urutan yang dijelaskan. Untuk meninjau opsi untuk membuat buku catatan, lihat Membuat buku catatan.

Catatan

Saat Anda membuat alur dengan antarmuka Python, secara default, nama tabel ditentukan oleh nama fungsi. Misalnya, contoh Python berikut membuat tiga tabel bernama baby_names_raw, , baby_names_prepareddan top_baby_names_2021. Anda dapat mengambil alih nama tabel menggunakan name parameter . Lihat Membuat tampilan terwujud atau tabel streaming Tabel Langsung Delta.

Mengimpor modul Delta Live Tables

Semua API Python Tabel Langsung Delta diimplementasikan dalam dlt modul. Impor dlt modul secara eksplisit di bagian atas buku catatan dan file Python.

Contoh berikut menunjukkan impor ini, bersama dengan pernyataan impor untuk pyspark.sql.functions.

import dlt
from pyspark.sql.functions import *

Unduh data

Untuk mendapatkan data untuk contoh ini, Anda mengunduh file CSV dan menyimpannya dalam volume sebagai berikut:

import os

os.environ["UNITY_CATALOG_VOLUME_PATH"] = "/Volumes/<catalog-name>/<schema-name>/<volume-name>/"
os.environ["DATASET_DOWNLOAD_URL"] = "https://health.data.ny.gov/api/views/jxy9-yhdk/rows.csv"
os.environ["DATASET_DOWNLOAD_FILENAME"] = "rows.csv"

dbutils.fs.cp(f"{os.environ.get('DATASET_DOWNLOAD_URL')}", f"{os.environ.get('UNITY_CATALOG_VOLUME_PATH')}{os.environ.get('DATASET_DOWNLOAD_FILENAME')}")

Ganti <catalog-name>, <schema-name>, dan <volume-name> dengan katalog, skema, dan nama volume untuk volume Katalog Unity.

Membuat tabel dari file di penyimpanan objek

Tabel Langsung Delta mendukung pemuatan data dari semua format yang didukung oleh Azure Databricks. Lihat Opsi format data.

Dekorator @dlt.table memberi tahu Delta Live Tables untuk membuat tabel yang berisi hasil yang DataFrame dikembalikan oleh fungsi. @dlt.table Tambahkan dekorator sebelum definisi fungsi Python yang mengembalikan Spark DataFrame untuk mendaftarkan tabel baru di Tabel Langsung Delta. Contoh berikut menunjukkan menggunakan nama fungsi sebagai nama tabel dan menambahkan komentar deskriptif ke tabel:

@dlt.table(
  comment="Popular baby first names in New York. This data was ingested from the New York State Department of Health."
)
def baby_names_raw():
  df = spark.read.csv(f"{os.environ.get('UNITY_CATALOG_VOLUME_PATH')}{os.environ.get('DATASET_DOWNLOAD_FILENAME')}", header=True, inferSchema=True)
  df_renamed_column = df.withColumnRenamed("First Name", "First_Name")
  return df_renamed_column

Menambahkan tabel dari himpunan data upstram di alur

Anda dapat menggunakan dlt.read() untuk membaca data dari himpunan data lain yang dideklarasikan dalam alur Delta Live Tables Anda saat ini. Mendeklarasikan tabel baru dengan cara ini membuat dependensi yang diselesaikan secara otomatis oleh Tabel Langsung Delta sebelum menjalankan pembaruan. Kode berikut juga mencakup contoh pemantauan dan menegakkan kualitas data dengan harapan. Lihat Mengelola kualitas data dengan Tabel Langsung Delta.

@dlt.table(
  comment="New York popular baby first name data cleaned and prepared for analysis."
)
@dlt.expect("valid_first_name", "First_Name IS NOT NULL")
@dlt.expect_or_fail("valid_count", "Count > 0")
def baby_names_prepared():
  return (
    dlt.read("baby_names_raw")
      .withColumnRenamed("Year", "Year_Of_Birth")
      .select("Year_Of_Birth", "First_Name", "Count")
  )

Membuat tabel dengan tampilan data yang diperkaya

Karena Tabel Langsung Delta memproses pembaruan untuk alur sebagai serangkaian grafik dependensi, Anda dapat mendeklarasikan tampilan yang sangat diperkaya yang mendukung dasbor, BI, dan analitik dengan mendeklarasikan tabel dengan logika bisnis tertentu.

Tabel dalam Tabel Langsung Delta setara secara konseptual dengan tampilan materialisasi. Sedangkan tampilan tradisional pada logika eksekusi Spark setiap kali tampilan dikueri, tabel Tabel Langsung Delta menyimpan versi terbaru hasil kueri dalam file data. Karena Tabel Langsung Delta mengelola pembaruan untuk semua himpunan data dalam alur, Anda dapat menjadwalkan pembaruan alur agar sesuai dengan persyaratan latensi untuk tampilan materialisasi dan mengetahui bahwa kueri terhadap tabel ini berisi versi data terbaru yang tersedia.

Tabel yang ditentukan oleh kode berikut menunjukkan kesamaan konseptual dengan tampilan materialisasi yang berasal dari data hulu di alur Anda:

@dlt.table(
  comment="A table summarizing counts of the top baby names for New York for 2021."
)
def top_baby_names_2021():
  return (
    dlt.read("baby_names_prepared")
      .filter(expr("Year_Of_Birth == 2021"))
      .groupBy("First_Name")
      .agg(sum("Count").alias("Total_Count"))
      .sort(desc("Total_Count"))
      .limit(10)
  )

Untuk mengonfigurasi alur yang menggunakan buku catatan, lihat Membuat alur.

Menerapkan alur Delta Live Tables dengan SQL

Databricks merekomendasikan Delta Live Tables dengan SQL sebagai cara yang disukai bagi pengguna SQL untuk membangun alur ETL, penyerapan, dan transformasi baru di Azure Databricks. Antarmuka SQL untuk Tabel Langsung Delta memperluas Spark SQL standar dengan banyak kata kunci, konstruksi, dan fungsi bernilai tabel baru. Penambahan SQL standar ini memungkinkan pengguna untuk mendeklarasikan dependensi antara himpunan data dan menyebarkan infrastruktur tingkat produksi tanpa mempelajari alat baru atau konsep tambahan.

Bagi pengguna yang terbiasa dengan Spark DataFrames dan yang membutuhkan dukungan untuk pengujian dan operasi yang lebih luas yang sulit diterapkan dengan SQL, seperti operasi metaprogram, Databricks merekomendasikan penggunaan antarmuka Python. Lihat Contoh: Menyerap dan memproses data nama bayi New York.

Unduh data

Untuk mendapatkan data untuk contoh ini, salin kode berikut, tempelkan ke buku catatan baru, lalu jalankan buku catatan. Untuk meninjau opsi untuk membuat buku catatan, lihat Membuat buku catatan.

%sh
wget -O "/Volumes/<catalog-name>/<schema-name>/<volume-name>/babynames.csv" "https://health.data.ny.gov/api/views/jxy9-yhdk/rows.csv"

Ganti <catalog-name>, <schema-name>, dan <volume-name> dengan katalog, skema, dan nama volume untuk volume Katalog Unity.

Membuat tabel dari file di Katalog Unity

Untuk contoh lainnya, salin cuplikan SQL berikut dan tempelkan ke buku catatan SQL baru, terpisah dari buku catatan di bagian sebelumnya. Anda harus menambahkan setiap contoh cuplikan SQL ke selnya sendiri di buku catatan dalam urutan yang dijelaskan.

Tabel Langsung Delta mendukung pemuatan data dari semua format yang didukung oleh Azure Databricks. Lihat Opsi format data.

Semua pernyataan SQL Tabel Langsung Delta menggunakan CREATE OR REFRESH sintaksis dan semantik. Saat Anda memperbarui alur, Tabel Langsung Delta menentukan apakah hasil yang benar secara logis untuk tabel dapat dicapai melalui pemrosesan inkremental atau jika diperlukan komputasi ulang penuh.

Contoh berikut membuat tabel dengan memuat data dari file CSV yang disimpan dalam volume Katalog Unity:

CREATE OR REFRESH LIVE TABLE baby_names_sql_raw
COMMENT "Popular baby first names in New York. This data was ingested from the New York State Department of Health."
AS SELECT Year, `First Name` AS First_Name, County, Sex, Count FROM read_files(
  '/Volumes/<catalog-name>/<schema-name>/<volume-name>/babynames.csv',
  format => 'csv',
  header => true,
  mode => 'FAILFAST')

Ganti <catalog-name>, <schema-name>, dan <volume-name> dengan katalog, skema, dan nama volume untuk volume Katalog Unity.

Menambahkan tabel dari himpunan data upstream ke alur

Anda dapat menggunakan live skema virtual untuk mengkueri data dari himpunan data lain yang dideklarasikan dalam alur Tabel Langsung Delta Anda saat ini. Mendeklarasikan tabel baru dengan cara ini membuat dependensi yang diselesaikan secara otomatis oleh Tabel Langsung Delta sebelum menjalankan pembaruan. live Skema adalah kata kunci kustom yang diterapkan dalam Tabel Langsung Delta yang dapat diganti dengan skema target jika Anda ingin menerbitkan himpunan data Anda. Lihat Menggunakan Unity Catalog dengan alur Tabel Langsung Delta Anda dan Menerbitkan data dari Tabel Langsung Delta ke metastore Apache Hive.

Kode berikut juga mencakup contoh pemantauan dan menegakkan kualitas data dengan harapan. Lihat Mengelola kualitas data dengan Tabel Langsung Delta.

CREATE OR REFRESH LIVE TABLE baby_names_sql_prepared(
  CONSTRAINT valid_first_name EXPECT (First_Name IS NOT NULL),
  CONSTRAINT valid_count EXPECT (Count > 0) ON VIOLATION FAIL UPDATE
)
COMMENT "New York popular baby first name data cleaned and prepared for analysis."
AS SELECT
  Year AS Year_Of_Birth,
  First_Name,
  Count
FROM live.baby_names_sql_raw;

Membuat tampilan data yang diperkaya

Karena Tabel Langsung Delta memproses pembaruan untuk alur sebagai serangkaian grafik dependensi, Anda dapat mendeklarasikan tampilan yang sangat diperkaya yang mendukung dasbor, BI, dan analitik dengan mendeklarasikan tabel dengan logika bisnis tertentu.

Tabel langsung setara dengan tampilan materialisasi. Sedangkan tampilan tradisional pada logika eksekusi Spark setiap kali tampilan dikueri, tabel langsung menyimpan versi terbaru hasil kueri dalam file data. Karena Tabel Langsung Delta mengelola pembaruan untuk semua himpunan data dalam alur, Anda dapat menjadwalkan pembaruan alur agar sesuai dengan persyaratan latensi untuk tampilan materialisasi dan mengetahui bahwa kueri terhadap tabel ini berisi versi data terbaru yang tersedia.

Kode berikut membuat tampilan data hulu yang diperkaya:

CREATE OR REFRESH LIVE TABLE top_baby_names_sql_2021
COMMENT "A table summarizing counts of the top baby names for New York for 2021."
AS SELECT
  First_Name,
  SUM(Count) AS Total_Count
FROM live.baby_names_sql_prepared
WHERE Year_Of_Birth = 2021
GROUP BY First_Name
ORDER BY Total_Count DESC
LIMIT 10;

Untuk mengonfigurasi alur yang menggunakan buku catatan, lanjutkan ke Membuat alur.

Buat alur

Tabel Langsung Delta membuat alur dengan menyelesaikan dependensi yang ditentukan dalam buku catatan atau file (disebut kode sumber atau pustaka) menggunakan sintaks Tabel Langsung Delta. Setiap file kode sumber hanya dapat berisi satu bahasa, tetapi Anda dapat mencampur pustaka dari berbagai bahasa dalam alur Anda.

  1. Klik Tabel Langsung Delta di bar samping dan klik Buat Alur.
  2. Beri nama alur.
  3. (Opsional) Pilih kotak centang Tanpa Server untuk menggunakan komputasi terkelola penuh untuk alur ini. Saat Anda memilih Tanpa Server, pengaturan Komputasi dihapus dari UI.
  4. (Opsional) Pilih edisi produk.
  5. Pilih Dipicu untuk Mode Alur.
  6. Konfigurasikan satu atau beberapa buku catatan yang berisi kode sumber untuk alur. Di kotak teks Jalur , masukkan jalur ke buku catatan atau klik Ikon Pemilih File untuk memilih buku catatan.
  7. Pilih tujuan untuk himpunan data yang diterbitkan oleh alur, baik metastore Apache Hive atau Katalog Unity. Lihat Menerbitkan himpunan data.
    • Metastore Apache Hive:
      • (Opsional) Masukkan lokasi Penyimpanan untuk data output dari alur. Sistem menggunakan lokasi default jika Anda membiarkan lokasi Penyimpanan kosong.
      • (Opsional) Tentukan skema Target untuk menerbitkan himpunan data Anda ke metastore Apache Hive.
    • Katalog Unity: Tentukan Katalog dan skema Target untuk menerbitkan himpunan data Anda ke Katalog Unity.
  8. (Opsional) Jika Anda belum memilih Tanpa Server, Anda dapat mengonfigurasi pengaturan komputasi untuk alur. Untuk mempelajari tentang opsi untuk pengaturan komputasi, lihat Mengonfigurasi pengaturan alur untuk Tabel Langsung Delta.
  9. (Opsional) Klik Tambahkan pemberitahuan untuk mengonfigurasi satu atau beberapa alamat email untuk menerima pemberitahuan peristiwa alur. Lihat Menambahkan pemberitahuan email untuk peristiwa alur.
  10. (Opsional) Konfigurasikan pengaturan tingkat lanjut untuk alur. Untuk mempelajari tentang opsi untuk pengaturan tingkat lanjut, lihat Mengonfigurasi pengaturan alur untuk Tabel Langsung Delta.
  11. Klik Buat.

Sistem menampilkan halaman Detail Alur setelah Anda mengklik Buat. Anda juga dapat mengakses alur Anda dengan mengeklik nama alur di tab Delta Live Tables.

Memulai eksekusi alur

Untuk memulai pembaruan untuk alur, klik tombol Ikon Mulai Tabel Langsung Delta di panel atas. Sistem mengembalikan pesan yang mengonfirmasi bahwa alur Anda akan dimulai.

Setelah berhasil memulai pembaruan, sistem Delta Live Tables:

  1. Memulai kluster menggunakan konfigurasi kluster yang dibuat oleh sistem Delta Live Tables. Anda juga dapat menentukan konfigurasi kluster kustom.
  2. Membuat tabel apa pun yang tidak ada dan memastikan bahwa skema tersebut benar untuk tabel yang ada.
  3. Memperbarui tabel dengan data terbaru yang tersedia.
  4. Matikan kluster saat pembaruan selesai.

Catatan

Mode eksekusi diatur ke Produksi secara default, yang menyebarkan sumber daya komputasi ephemeral untuk setiap pembaruan. Anda dapat menggunakan mode Pengembangan untuk mengubah perilaku ini, memungkinkan sumber daya komputasi yang sama digunakan untuk beberapa pembaruan alur selama pengembangan dan pengujian. Lihat Mode pengembangan dan produksi.

Menerbitkan himpunan data

Anda bisa membuat himpunan data Tabel Langsung Delta tersedia untuk kueri dengan menerbitkan tabel ke metastore Apache Hive atau Katalog Unity. Jika Anda tidak menentukan target untuk menerbitkan data, tabel yang dibuat di alur Delta Live Tables hanya dapat diakses oleh operasi lain dalam alur yang sama. Lihat Menerbitkan data dari Tabel Langsung Delta ke metastore Apache Hive dan Menggunakan Katalog Unity dengan alur Tabel Langsung Delta Anda.

Contoh buku catatan kode sumber

Anda dapat mengimpor buku catatan ini ke ruang kerja Azure Databricks dan menggunakannya untuk menyebarkan alur Tabel Langsung Delta. Lihat Membuat alur.

Mulai dengan buku catatan Python Delta Live Tables

Dapatkan buku catatan

Mulai dengan buku catatan SQL Delta Live Tables

Dapatkan buku catatan

Contoh buku catatan kode sumber untuk ruang kerja tanpa Katalog Unity

Anda dapat mengimpor buku catatan ini ke ruang kerja Azure Databricks tanpa Mengaktifkan Katalog Unity dan menggunakannya untuk menyebarkan alur Tabel Langsung Delta. Lihat Membuat alur.

Mulai dengan buku catatan Python Delta Live Tables

Dapatkan buku catatan

Mulai dengan buku catatan SQL Delta Live Tables

Dapatkan buku catatan