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.
Şunlar için geçerlidir:
Databricks SQL
Kaynaktan FLOW AUTO CDC akış tablosuna değişiklik verisi yakalama (CDC) kayıtlarını işlemek için ile CREATE STREAMING TABLE yan tümcesini kullanın.
MERGE INTO Daha önce deyimi, Azure Databricks'te CDC kayıtlarını işlemek için yaygın olarak kullanılıyordu. Ancak, MERGE INTO sıra dışı kayıtlar nedeniyle yanlış sonuçlar verebilir veya kayıtları yeniden sıralamak için karmaşık mantık gerektirir.
AUTO CDC sıra dışı kayıtları otomatik olarak işleyerek CDC'yi basitleştirir. Kayıtları tanımlamak için anahtarlar, sıralama için bir sıra sütunu ve sonuçların SCD tür 1 (doğrudan güncelleştirmeler) veya SCD tür 2 (geçmiş izleme) olarak depolanıp depolanmayacağını belirtirsiniz.
Sözdizimi
FLOW AUTO CDC
FROM source
KEYS ( keys )
[ IGNORE NULL UPDATES [ ON { columnList | * EXCEPT ( exceptColumnList ) } ] ]
[ APPLY AS DELETE WHEN condition ]
[ APPLY AS TRUNCATE WHEN condition ]
SEQUENCE BY orderByColumn
[ SYSTEM SEQUENCE BY systemOrderByColumn ]
[ COLUMNS { columnList | * EXCEPT ( exceptColumnList ) } ]
[ STORED AS { SCD TYPE 1 | SCD TYPE 2 | BITEMPORAL } ]
[ TRACK HISTORY ON { columnList | * EXCEPT ( exceptColumnList ) } ]
[ COLUMNS TO UPDATE columnName ]
ve INSERT olayları için UPDATE varsayılan davranış, kaynaktan CDC olayları eklemektir: hedef tablodaki belirtilen anahtarlarla eşleşen satırları güncelleştirin veya hedef tabloda eşleşen bir kayıt olmadığında yeni bir satır ekleyin.
DELETE olayları için işleme APPLY AS DELETE WHEN koşuluyla belirtilebilir.
Parametreler
sourceVerilerin kaynağı. Kaynak bir akış kaynağı olmalıdır. Akış semantiğini kullanarak kaynaktan okumak için
STREAManahtar sözcüğünü kullanın. Okuma işlemi var olan bir kayıtta bir değişiklik veya silme işlemiyle karşılaşırsa bir hata oluşur. Statik veya yalnızca ekleme kaynaklarından okumak en güvenlidir.Akış verileri hakkında daha fazla bilgi için bkz. İşlem hatları ile veri dönüştürme.
KEYSKaynak verilerdeki bir satırı benzersiz olarak tanımlayan sütun veya sütun bileşimi. Bu sütunlardaki değerler, hedef tablodaki belirli kayıtlara hangi CDC olaylarının uygulanacağını belirlemek için kullanılır.
Sütunların birleşimini tanımlamak için virgülle ayrılmış sütun listesi kullanın.
Bu madde gereklidir.
IGNORE NULL UPDATESHedef sütunların bir alt kümesini içeren güncelleştirmelerin alımına izin verir. CDC olayı mevcut bir satırla eşleştiğinde ve
IGNORE NULL UPDATESbelirtildiğinde, değeri olannullsütunlar hedefteki mevcut değerlerini korur. Bu, bir değeri olannulliç içe sütunlar için de geçerlidir.Kısmi güncelleştirmeler için, hangi sütunların değerleri yoksayacaklarını
ONdenetlemek için birnullyan tümce ekleyin:-
IGNORE NULL UPDATES ON columnList: gelen değer olduğundanullyalnızca listelenen sütunlar mevcut değerlerini korur. Diğer tüm sütunlar açıknulldeğerler uygular. -
IGNORE NULL UPDATES ON * EXCEPT (exceptColumnList): Listelenenler dışındaki tüm sütunlar, gelen değer olduğundanullmevcut değerlerini korur. Listelenen sütunlar açıknulldeğerler uygular.
Daha fazla bilgi için bkz. Kısmi güncelleştirmeleri uygulama.
Bu yan tümce isteğe bağlıdır.
Varsayılan ayar,
nulldeğerlerinin mevcut sütunların üzerine yazılmasıdır.-
APPLY AS DELETE WHENBir CDC olayının ne zaman upsert yerine bir
DELETEolarak ele alınacağı belirtir.SCD tip 2 kaynaklar için, sırası bozuk verileri işlemek amacıyla, silinen satır temel Delta tablosunda geçici olarak bir "mezar taşı" olarak tutulur ve meta veri deposunda bu "mezar taşlarını" filtreleyen bir görünüm oluşturulur. Bekletme aralığı
pipelines.cdc.tombstoneGCThresholdInSecondsyapılandırılabilir.Bu yan tümce isteğe bağlıdır.
APPLY AS TRUNCATE WHENBir CDC olayının tam tablo
TRUNCATEolarak ne zaman ele alınacağı belirtir. Bu yan tümce hedef tablonun tam kesilmesini tetiklediğinden, yalnızca bu işlevi gerektiren belirli kullanım örnekleri için kullanılmalıdır.APPLY AS TRUNCATE WHENyan tümcesi yalnızca SCD türü 1 için desteklenir. SCD tür 2, kesme işlemini desteklemez.Bu yan tümce isteğe bağlıdır.
SEQUENCE BYKaynak verilerdeki CDC olaylarının mantıksal sırasını belirten sütun adı. İşlem hattı işleme, sıralama dışı gelen değişiklik olaylarını işlemek için bu sıralamayı kullanır.
Sıralama için birden çok sütun gerekiyorsa bir
STRUCTifade kullanın: önce ilk yapı alanına göre, sonra bir bağlama varsa ikinci alana göre sıralanır ve bu şekilde devam eder.Belirtilen sütunlar sıralanabilir veri türleri olmalıdır.
Bu madde gereklidir.
SYSTEM SEQUENCE BYImportant
Bitemporal AUTO CDC Beta sürümündedir.
Her CDC olayının sistem tarafından bilindiği sistem saatini belirten sütun adı. hem iş zamanında (
STORED AS BITEMPORAL) hem de sistem zamanındaki değişiklikleri izlemek için ile birlikteSEQUENCE BYkullanılır. Bkz . Bitemporal AUTO CDC.Belirtilen sütunlar sıralanabilir veri türleri olmalıdır.
Bu yan tümce isteğe bağlıdır ve yalnızca bitemporal tablolar için geçerlidir.
COLUMNSHedef tabloya eklenecek sütunların bir alt kümesini belirtir. Şunlardan birini yapabilirsiniz:
- Eklenecek sütunların tam listesini belirtin:
COLUMNS (userId, name, city). - Dışlanması gereken sütunların listesini belirtin:
COLUMNS * EXCEPT (operation, sequenceNum)
Bu yan tümce isteğe bağlıdır.
Varsayılan değer,
COLUMNSyan tümcesi belirtilmediğinde tüm sütunları hedef tabloya eklemektir.- Eklenecek sütunların tam listesini belirtin:
STORED ASKayıtların SCD tür 1, SCD tür 2 veya bitemporal olarak depolanması.
BITEMPORALHem iş zamanında hem de sistem zamanındaki değişiklikleri izlemek için olarak ayarlayın. Bitemporal gerektirirSYSTEM SEQUENCE BYve Beta'dadır. Bkz . Bitemporal AUTO CDC.Bu yan tümce isteğe bağlıdır.
Varsayılan değer SCD tür 1'dir.
TRACK HISTORY ONBelirtilen sütunlarda herhangi bir değişiklik olduğunda geçmiş kayıtları oluşturmak için çıkış sütunlarının bir alt kümesini belirtir. Şunlardan birini yapabilirsiniz:
- İzlenen sütunların tam listesini belirtin:
COLUMNS (userId, name, city). - İzlemenin dışında tutulacak sütunların listesini belirtin:
COLUMNS * EXCEPT (operation, sequenceNum)
Bu yan tümce isteğe bağlıdır. Varsayılan değer, herhangi bir değişiklik olduğunda tüm çıkış sütunlarının geçmişini izlemektir ve ile eşdeğerdir
TRACK HISTORY ON *.- İzlenen sütunların tam listesini belirtin:
COLUMNS TO UPDATEHer değişiklik kaydı için sütun adı dizeleri dizisi (
array<string>) olarak güncelleştirilecek sütun kümesini tutan bir kaynak sütunun adını belirtir. Dizide olmayan sütunlar mevcut hedef değerlerini tutarken, listelenen sütunlar açıknulldeğerler de dahil olmak üzere kaynaktan yazılır.Her değişiklik kaydı farklı bir sütun kümesini güncelleştirdiğinde ve açık
nulldeğerler uygulamanız gerektiğinde kısmi güncelleştirmeler için bu yan tümceyi kullanın.ile
COLUMNS TO UPDATEbirlikte kullanamazsınızIGNORE NULL UPDATESve bitemporal tablolarında desteklenmez.Daha fazla bilgi için bkz. Kısmi güncelleştirmeleri uygulama.
Bu yan tümce isteğe bağlıdır.
Örnekler
-- SCD type 1: apply CDC changes with direct updates (no history)
> CREATE OR REFRESH STREAMING TABLE target
FLOW AUTO CDC
FROM stream(cdc_data.users)
KEYS (userId)
SEQUENCE BY sequenceNum
STORED AS SCD TYPE 1;
-- SCD type 2: retain a history of changes, with delete handling
> CREATE OR REFRESH STREAMING TABLE target
FLOW AUTO CDC
FROM stream(cdc_data.users)
KEYS (userId)
APPLY AS DELETE WHEN operation = "DELETE"
SEQUENCE BY sequenceNum
COLUMNS * EXCEPT (operation, sequenceNum)
STORED AS SCD TYPE 2;
-- SCD type 2 with history tracking on specific columns
> CREATE OR REFRESH STREAMING TABLE target
FLOW AUTO CDC
FROM stream(cdc_data.users)
KEYS (userId)
APPLY AS DELETE WHEN operation = "DELETE"
SEQUENCE BY sequenceNum
COLUMNS * EXCEPT (operation, sequenceNum)
STORED AS SCD TYPE 2
TRACK HISTORY ON * EXCEPT (city);
-- SCD type-2 dimension with a generated surrogate key and automatic clustering
> CREATE OR REFRESH STREAMING TABLE ${target_catalog}.silver.dim_customer (
customer_sk BIGINT GENERATED ALWAYS AS IDENTITY,
customer_id INT,
email STRING,
segment STRING,
city STRING,
__START_AT TIMESTAMP,
__END_AT TIMESTAMP
)
COMMENT 'SCD Type 2 customer dimension with generated surrogate key'
CLUSTER BY AUTO
FLOW AUTO CDC
FROM stream(${target_catalog}.bronze.customer_changes)
KEYS (customer_id)
SEQUENCE BY updated_at
STORED AS SCD TYPE 2;