Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfada, AUTO CDC ve AUTO CDC FROM SNAPSHOT hedef tablolarla çalışmaya yönelik gelişmiş konular ele alınır; bunlar arasında DML işlemleri, değişiklik veri akışlarını okuma ve işleme ölçümlerini izleme bulunmaktadır. API'lere giriş için AUTO CDC bkz. AUTO CDC API'leri: İşlem hatları ile değişiklik verilerini yakalamayı basitleştirme.
Hedef akış tablosuna veri ekleme, değiştirme veya silme
İşlem hattınız tabloları Unity Kataloğu'nda yayımlıyorsa, akış tablolarında (DML) deyimlerini, örneğin ekleme, güncelleştirme, silme ve birleştirme deyimlerini kullanarak, AUTO CDC ... INTO deyimleriyle oluşturulan hedef tabloları değiştirebilirsiniz.
Uyarı
- Akış tablosunun tablo şemasını değiştiren DML deyimleri desteklenmez. DML deyimlerinizin tablo şemasını geliştirmeye çalışmadığından emin olun.
- Akış tablosunu güncelleştiren DML deyimleri, Databricks Runtime 13.3 LTS ve üzeri kullanılarak yalnızca paylaşılan unity kataloğu kümesinde veya SQL ambarında çalıştırılabilir.
- Akış, yalnızca eklemeye izin veren veri kaynakları gerektirdiğinden, işlemeniz bir kaynak akış tablosundan değişiklikler içeren akış gerektiriyorsa (örneğin, DML deyimleri kullanılarak), kaynak akış tablosunu okurken skipChangeCommits bayrağını ayarlayın.
skipChangeCommitsayarlandığında, kaynak tablodaki kayıtları silen veya değiştiren işlemler yoksayılır. İşlemeniz bir akış tablosu gerektirmiyorsa, ekleme kısıtlaması olmayan gerçekleştirilmiş bir görünümü hedef tablo olarak kullanabilirsiniz.
Lakeflow Spark Bildirimli İşlem Hatları belirtilen SEQUENCE BY bir sütun kullandığından ve uygun sıralama değerlerini hedef tablonun ve __START_AT sütunlarına __END_AT yaydığından (SCD Tür 2 için), DML deyimlerinin kayıtların doğru sıralamasını korumak için bu sütunlar için geçerli değerler kullandığından emin olmanız gerekir. Bkz. AUTO CDC nasıl çalışır?
Akış tablolarıyla DML deyimlerini kullanma hakkında daha fazla bilgi için bkz. Akış tablosunda veri ekleme, değiştirme veya silme.
Aşağıdaki örnek, başlangıç dizisi 5 olan etkin bir kayıt ekler:
INSERT INTO my_streaming_table (id, name, __START_AT, __END_AT) VALUES (123, 'John Doe', 5, NULL);
İpucu
SCD Tür 2 hedef tablosundaki __START_AT ve __END_AT sütunlarını yeniden adlandırmanız gerekiyorsa (örneğin, karşılayan şema gereksinimlerine uyum sağlamak için), hedef tablo üzerinde bir görünüm oluşturun.
CREATE VIEW my_employees_view AS
SELECT
*,
__START_AT AS valid_from,
__END_AT AS valid_to
FROM my_scd2_target_table;
AUTO CDC hedef tablosundan değişiklik veri akışını okuma
Databricks Runtime 15.2 ve üzeri sürümlerde, diğer Delta tablolarındaki değişiklik veri akışını okuduğunuz şekilde, AUTO CDC veya AUTO CDC FROM SNAPSHOT sorgularının hedefi olan bir akış tablosundan da değişiklik veri akışını okuyabilirsiniz. Bir hedef akış tablosundan değişiklik veri akışını okumak için aşağıdakiler gereklidir:
- Hedef akış tablosunun Unity Kataloğu'nda yayımlanması gerekir. Bkz. Unity Kataloğu'nu işlem hatlarıyla kullanma.
- Hedef akış tablosundaki değişiklik veri akışını erişmek için Databricks Runtime 15.2 veya üzerini kullanmanız gerekir. Değişiklik veri akışını farklı bir işlem hattında okumak için işlem hattının Databricks Runtime 15.2 veya üzerini kullanacak şekilde yapılandırılması gerekir.
Lakeflow Spark Bildirimli İşlem Hatlarında oluşturulan bir hedef akış tablosundaki değişiklik veri akışını, diğer Delta tablolarından değişiklik veri akışını okumakla aynı şekilde okursunuz. Python ve SQL örnekleri de dahil olmak üzere Delta değişiklik veri akışı işlevini kullanma hakkında daha fazla bilgi edinmek için bkz. Azure Databricks'te Delta Lake değişiklik veri akışını kullanma.
Uyarı
Değişiklik veri akışı kaydı, değişiklik olayının türünü tanımlayan meta verileri içerir. Tabloda bir kayıt güncellendiğinde, ilişkili değişiklik kayıtlarının meta verileri genellikle _change_type değerlerine ayarlanmış ve update_preimage ile update_postimage olaylarını içerir.
Ancak, birincil anahtar değerlerinin değiştirilmesini _change_type içeren hedef akış tablosunda güncelleştirmeler yapıldığında değerler farklıdır. Değişiklikler birincil anahtar güncelleştirmelerini içerdiğinde, _change_type meta veri alanları, insert ve delete olayları olarak ayarlanır. Birincil anahtarlardaki değişiklikler, UPDATE veya MERGE deyimiyle anahtar alanlarından birinde manuel güncellemeler yapıldığında veya SCD tür 2 tabloları için __start_at alanı, daha önceki bir başlangıç dizisi değerini yansıtacak şekilde değiştiğinde meydana gelebilir.
Sorgu AUTO CDC , SCD tür 1 ve SCD tür 2 işleme için farklılık gösteren birincil anahtar değerlerini belirler:
| SCD Türü | Birincil anahtar |
|---|---|
| SCD türü 1 ve işlem hatları için Python arabirimi | Birincil anahtar, create_auto_cdc_flow() işlevindeki keys parametresinin değeridir. SQL arabirimi için birincil anahtar, KEYS ifadesindeki AUTO CDC ... INTO yan tümcesi tarafından tanımlanan sütunlardır. |
| SCD türü 2 | Birincil anahtar, coalesce(__START_AT, __END_AT) işleminden gelen dönüş değeri ile birlikte keys parametresi veya KEYS yan tümcesidir; burada __START_AT ve __END_AT, hedef akış tablosundaki ilgili sütunlar olarak konumlanır. |
Veri işleme hatlarındaki CDC sorgusu tarafından işlenen kayıtlar hakkında veri alın
Uyarı
Aşağıdaki ölçümler yalnızca AUTO CDC sorgular tarafından yakalanır, AUTO CDC FROM SNAPSHOT sorgular tarafından yakalanmaz.
Aşağıdaki metrikler AUTO CDC sorgular tarafından yakalanır.
-
num_upserted_rows: Güncelleştirme sırasında veri kümesine ekli çıkış satırlarının sayısı. -
num_deleted_rows: Güncelleştirme sırasında veri kümesinden silinen mevcut çıkış satırlarının sayısı.
num_output_rows CDC olmayan akışlar için çıkış olan ölçüm, AUTO CDC sorgular için yakalanmaz.
Bir işlem hattında CDC işleme için hangi veri nesneleri kullanılır?
Hive meta veri deposunda hedef tabloyu bildirdiğinizde iki veri yapısı oluşturulur:
- Hedef tabloya atanan adı kullanan bir görünüm.
- CDC işlemeyi yönetmek için işlem hattı tarafından kullanılan bir iç yedekleme tablosu. Bu tablo, hedef tablo adının önüne
__apply_changes_storage_eklenerek adlandırılır.
Örneğin, adlı dp_cdc_targetbir hedef tablo bildirirseniz, meta veri deposunda adlı dp_cdc_target bir görünüm ve adlı __apply_changes_storage_dp_cdc_target bir tablo görürsünüz. İşlenen verilere erişmek için görünümü sorgular. Yedekleme tablosunu doğrudan değiştirmeyin.
Uyarı
Bu veri yapıları yalnızca AUTO CDC işlemi için geçerlidir, AUTO CDC FROM SNAPSHOT işlemi için geçerli değildir. Bunlar Unity Kataloğu'na değil yalnızca Hive meta veri deposuna da uygulanır.