Unity Kataloğu'nu DLT işlem hatlarınızla kullanma
Önemli
Unity Kataloğu için DLT desteği, Genel Önizlemeaşamasında.
Databricks, Unity Kataloğu ile DLT işlem hatlarının yapılandırılmasını önerir.
Unity Kataloğu ile yapılandırılan işlem hatları, tanımlı tüm gerçekleştirilmiş görünümleri ve akış tablolarını belirtilen katalog ve şemada yayımlar. Unity Kataloğu işlem hatları diğer Unity Kataloğu tablolarından ve birimlerinden okuyabilir.
Unity Kataloğu işlem hattı tarafından oluşturulan tablolardaki izinleri yönetmek için GRANT ve REVOKEkullanın.
Not
Bu makalede, işlem hatları için geçerli varsayılan yayımlama modunun işlevselliği açıklanır. 5 Şubat 2025'den önce oluşturulan işlem hatları, eski yayımlama modunu ve LIVE
sanal şemayı kullanabilir. Bkz. LIVE şeması (eski).
Gereksinimler
Unity Kataloğu'nda bir hedef şemada akış tabloları ve gerçekleştirilmiş görünümler oluşturmak için şema ve üst katalog üzerinde aşağıdaki izinlere sahip olmanız gerekir:
-
USE CATALOG
hedef katalog üzerinde ayrıcalıklara sahiptir. - İşlem hattınız gerçekleştirilmiş görünümler oluşturursa, hedef şemada
CREATE MATERIALIZED VIEW
veUSE SCHEMA
ayrıcalıklarına sahip olursunuz. - İşlem hattınız akış tabloları oluşturursa hedef şemada
CREATE TABLE
veUSE SCHEMA
ayrıcalıkları.
İşlem hattınız yeni şemalar oluşturuyorsa, hedef katalogda USE CATALOG
ve CREATE SCHEMA
ayrıcalıklarına sahip olmanız gerekir.
Unity Kataloğu özellikli işlem hattını çalıştırmak için gereken işlem:
- Standart erişim modu (eski adıyla paylaşılan erişim modu). Unity Kataloğu özellikli bir işlem hattı özel hesaplama biriminde (eski adıyla tek kullanıcı hesaplama birimi) çalıştırılamaz. Bkz. Unity Kataloğu Standart erişim modu sınırlamaları.
Unity Kataloğu kullanılarak DLT işlem hattı tarafından oluşturulan tabloları sorgulamak için gereken işlem (akış tabloları ve gerçekleştirilmiş görünümler dahil) aşağıdakilerden herhangi birini içerir:
- SQL ambarları
- Standart erişim modu, Databricks Runtime 13.3 LTS veya üstü sürümlerde işlem yapma.
- Ayrılmış erişim modunda işlem, ayrılmış işlem üzerinde ayrıntılı erişim denetimi etkinleştirilmişse (yani Databricks Runtime 15.4 veya üzerinde çalışıyorsa ve çalışma alanı için sunucusuz işlem etkinleştirilmişse). Daha fazla bilgi için bkz. ayrılmış işlem (eski adıyla tek kullanıcılı işlem) üzerinde ayrıntılı erişim denetimi.
- Tablo sahibi sorguyu çalıştırdığı takdirde, yalnızca 13.3 LTS'den 15.3'e kadar olan sürümlerde ayrılmış erişim modu işlemcisi kullanılır.
Ek işlem sınırlamaları geçerlidir. Aşağıdaki bölüme bakın.
Sınırlamalar
Unity Kataloğu'nu DLT ile kullanırken sınırlamalar şunlardır:
- Varsayılan olarak, Unity Kataloğu etkin işlem hattını çalıştıran işlemden sürücü günlüklerini yalnızca işlem hattı sahibi ve çalışma alanı yöneticileri görüntüleyebilir. Diğer kullanıcıların sürücü günlüklerine erişmesine izin vermek için bkz. Yönetici olmayan kullanıcıların Unity Kataloğu özellikli işlem hattından sürücü günlüklerini görüntülemesine izin verme.
- Hive meta veri deposu kullanan mevcut işlem hatları Unity Kataloğu'nu kullanacak şekilde yükseltilemez. Hive meta veri deposuna yazan mevcut bir işlem hattını geçirmek için yeni bir işlem hattı oluşturmanız ve veri kaynağından/veya veri kaynaklarından verileri yeniden almanız gerekiyor. bkz. Hive meta veri deposu işlem hattınıkopyalayarak Unity Kataloğu işlem hattı oluşturma.
- Unity Kataloğu Genel Önizlemesi sırasında oluşturulmuş bir meta veri deposuna bağlı bir çalışma alanında Unity Kataloğu etkin işlem hattı oluşturamazsınız. Bkz. Ayrıcalık devralmanın yükseltilmesi.
- JAR'ler desteklenmez. Yalnızca üçüncü taraf Python kitaplıkları desteklenir. bkz. DLT işlem hatları için Python bağımlılıklarını yönetme.
- Akış tablosunun şemasını değiştiren veri işleme dili (DML) sorguları desteklenmez.
- DLT işlem hattında oluşturulan gerçekleştirilmiş görünüm, bu işlem hattının dışında, örneğin başka bir işlem hattında veya aşağı yönde bir not defterinde, bir akış kaynağı olarak kullanılamaz.
- Gerçekleştirilmiş görünümler ve akış tabloları için veriler, içeren şemanın depolama konumunda depolanır. Şema depolama konumu belirtilmezse tablolar katalog depolama konumunda depolanır. Şema ve katalog depolama konumları belirtilmezse, tablolar meta veri deposunun kök depolama konumunda depolanır.
- Katalog Gezgini Geçmiş sekmesi malzemeleştirilmiş görünümlerin geçmişini göstermez.
- tablo tanımlanırken
LOCATION
özelliği desteklenmez. - Unity Catalog etkinleştirilmiş işlem hatları Hive meta veri deposuna yayımlanamaz.
- Python UDF desteği, Genel Önizlemesürümündedir.
- Delta Sharing, Unity Kataloğu'na yayımlanan DLT tarafından oluşturulan malzeme görünümü veya akış tablosuyla kullanılamaz.
Not
Gerçekleştirilmiş görünümleri destekleyen temel dosyalar, gerçekleştirilmiş görünüm tanımında görünmeyen yukarı akış tablolarındaki verileri (olası kişisel bilgiler dahil) içerebilir. Bu veriler, materyalize edilmiş görünümlerin artımlı olarak yenilenmesini desteklemek için temel alınan depolamaya otomatik olarak eklenir.
Gerçekleştirilmiş bir görünümün temel dosyaları, gerçekleştirilmiş görünüm şemasına dahil olmayan yukarı akış tablolarından verilerin açığa çıkarma riski taşıyabileceğinden, Databricks, alttaki depolamanın güvenilmeyen aşağı akış tüketicilerle paylaşılmamasını önerir.
Örneğin, gerçekleştirilmiş görünüm tanımının bir COUNT(DISTINCT field_a)
klausul içerdiğini varsayalım. Gerçekleştirilmiş görünüm tanımı yalnızca toplama COUNT DISTINCT
yan tümcesini içerse de, temel dosyalar field_a
'in gerçek değerlerinden oluşan bir liste içerir.
Hive meta veri deposu ve Unity Kataloğu işlem hatlarını birlikte kullanabilir miyim?
Çalışma alanınız Unity Kataloğu ve eski Hive meta veri depolarını kullanan işlem hatları içerebilir. Ancak, tek bir işlem hattı Hive meta veri deposuna ve Unity Kataloğu'na yazamaz. Hive meta veri deposuna yazan mevcut işlem hatları Unity Kataloğu'nu kullanacak şekilde yükseltilemez. Hive meta veri deposuna yazan mevcut bir işlem hattını taşımak için yeni bir işlem hattı oluşturmanız ve verileri veri kaynaklarından yeniden almalısınız. bkz. Hive meta veri deposu işlem hattınıkopyalayarak Unity Kataloğu işlem hattı oluşturma.
Unity Kataloğu kullanmayan mevcut işlem hatları, Unity Kataloğu ile yapılandırılmış yeni işlem hatları oluşturulmasından etkilenmez. Bu boru hatları, yapılandırılmış depolama konumunu kullanarak Hive meta veri deposuna verileri aktarmaya devam eder.
Bu belgede aksi belirtilmediği sürece, Unity Kataloğu'nu kullanan işlem hatlarında tüm mevcut veri kaynakları ve DLT işlevleri desteklenir. Hem Python hem de SQL arabirimleri Unity Kataloğu kullanan işlem hatlarıyla desteklenir.
Mevcut işlevlerde yapılan değişiklikler
DLT verileri Unity Kataloğu'na kalıcı hale getirmek üzere yapılandırıldığında, DLT işlem hattı tablonun yaşam döngüsünü ve izinlerini yönetir. Sonuç olarak:
- Bir tablo işlem hattı tanımından kaldırıldığında, sonraki işlem hattı güncelleştirmesi, karşılık gelen materyalize edilmiş görünümü veya akış tablosu girişini etkin değil olarak işaretler. Etkin olmayan tablolar yine sorgulanabilir ancak güncelleştirilmez. Gerçekleştirilmiş görünümleri veya akış tablolarını temizlemek için tabloyu açıkça
DROP
kullanarak işlemi gerçekleştirebilirsiniz.-
UNDROP
komutunu kullanarak bırakılan tabloları 7 gün içinde kurtarabilirsiniz. - Bir sonraki veri hattı güncellemesinde gerçekleştirilmiş görünüm veya akış tablosu girişinin Unity Kataloğu'ndan kaldırıldığı eski davranışı korumak için veri hattı yapılandırmasını
"pipelines.dropInactiveTables": "true"
olarak ayarlayın. Gerçek veriler bir süre boyunca saklanır, böylece yanlışlıkla silinirse kurtarılabilir. Gerçekleştirilmiş görünüm veya akış tablosu işlem hattı tanımına geri eklenerek veriler 7 gün içinde kurtarılabilir.
-
- DLT işlem hattının silinmesi, bu işlem hattında tanımlanan tüm tabloların silinmesine neden olur. Bu değişiklik nedeniyle DLT kullanıcı arabirimi, işlem hattının silinmesini onaylamanızı isteyecek şekilde güncelleştirilir.
-
APPLY CHANGES INTO
desteklemek için kullanılanlar da dahil olmak üzere iç yedekleme tablolarına kullanıcılar tarafından doğrudan erişilemez.
DLT işlem hattından Unity Kataloğu'na tablo yazma
Tablolarınızı Unity Kataloğu'na yazmak için işlem hattınızı çalışma alanınız aracılığıyla onunla çalışacak şekilde yapılandırmanız gerekir. bir işlem hattı oluşturduğunuzda, Depolama seçeneklerialtında Unity Kataloğu seçin, Kataloğu açılan menüsünde bir katalog seçin ve var olan bir şemayı seçin veya Hedef şema açılan menüsünde yeni şemanın adını girin. Unity Kataloğu katalogları hakkında bilgi edinmek için bkz. Azure Databricks'te kataloglar nedir?. Unity Kataloğu'ndaki şemalar hakkında bilgi edinmek için bkz. Azure Databricks'te şemalar nedir?.
Unity Kataloğu işlem hattına veri aktarma
Unity Kataloğu'nu kullanacak şekilde yapılandırılmış işlem hattınız şu kaynaklardan veri okuyabilir:
- Unity Kataloğu yönetilen ve dış tablolar, tablo görünümleri, maddileştirilmiş görünümler ve akış tabloları.
- Hive meta veri deposu tabloları ve görünümleri.
- Unity Kataloğu dış konumlarından okumak için
read_files()
işlevini kullanan otomatik yükleyici. - Apache Kafka ve Amazon Kinesis.
Aşağıda Unity Kataloğu ve Hive meta veri deposu tablolarından okuma örnekleri verilmiştir.
Unity Kataloğu tablosundan toplu alma
SQL
CREATE OR REFRESH MATERIALIZED VIEW
table_name
AS SELECT
*
FROM
my_catalog.my_schema.table1;
Piton
@dlt.table
def table_name():
return spark.read.table("my_catalog.my_schema.table")
Unity Kataloğu tablosundan değişiklikleri akışla aktarma
SQL
CREATE OR REFRESH STREAMING TABLE
table_name
AS SELECT
*
FROM
STREAM(my_catalog.my_schema.table1);
Piton
@dlt.table
def table_name():
return spark.readStream.table("my_catalog.my_schema.table")
Hive meta veri deposundan veri alma
Unity Kataloğu kullanan bir işlem hattı, hive_metastore
kataloğunu kullanarak Hive meta veri deposu tablolarındaki verileri okuyabilir:
SQL
CREATE OR REFRESH MATERIALIZED VIEW
table_name
AS SELECT
*
FROM
hive_metastore.some_schema.table;
Piton
@dlt.table
def table3():
return spark.read.table("hive_metastore.some_schema.table")
Otomatik Yükleyiciden veri alma
SQL
CREATE OR REFRESH STREAMING TABLE table_name
AS SELECT *
FROM STREAM read_files(
"/path/to/uc/external/location",
format => "json"
)
Piton
@dlt.table(table_properties={"quality": "bronze"})
def table_name():
return (
spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "json")
.load(f"{path_to_uc_external_location}")
)
Gerçekleştirilmiş görünümleri paylaşın
Varsayılan olarak, yalnızca işlem hattı sahibinin işlem hattı tarafından oluşturulan veri kümelerini sorgulama izni vardır. Diğer kullanıcılara GRANT deyimlerini kullanarak tablo sorgulama olanağı verebilir ve REVOKE deyimlerini kullanarak sorgu erişimini iptal edebilirsiniz. Unity Kataloğu'ndaki ayrıcalıklar hakkında daha fazla bilgi için bkz. Unity Kataloğu'nda ayrıcalıkları yönetme.
Bir tablo üzerinde seçme yetkisi verme
GRANT SELECT ON TABLE
my_catalog.my_schema.table_name
TO
`user@databricks.com`
Bir tabloda SELECT yetkisini geri alma
REVOKE SELECT ON TABLE
my_catalog.my_schema.table_name
FROM
`user@databricks.com`
Tablo oluşturma veya maddileştirilmiş görünüm oluşturma ayrıcalıkları verme
GRANT CREATE { MATERIALIZED VIEW | TABLE } ON SCHEMA
my_catalog.my_schema
TO
{ principal | user }
İşlem hattı kökenini görüntüleme
DLT işlem hattındaki tabloların kökeni Katalog Gezgini'nde görünür. Katalog Gezgini köken kullanıcı arabirimi, Unity Kataloğu özellikli bir işlem hattında gerçekleştirilmiş görünümler veya akış tabloları için yukarı ve aşağı akış tablolarını gösterir. Unity Kataloğu kökeni hakkında daha fazla bilgi edinmek için Unity Kataloğu'nu kullanarak veri kökenini yakalama ve görüntülemebölümüne bakın.
Unity Kataloğu etkinleştirilmiş DLT işlem hattında gerçekleştirilmiş görünüm veya akış tablosu için Katalog Gezgini köken kullanıcı arabirimi, işlem hattına geçerli çalışma alanından erişilebiliyorsa gerçekleştirilmiş görünümü veya akış tablosunu oluşturan işlem hattına da bağlanır.
Akış tablosunda veri ekleme, değiştirme veya silme
Unity Kataloğu'nda yayımlanan Akış tablolarını değiştirmek için ekleme, güncelleştirme, silme ve birleştirme deyimleri gibi veri işleme dili (DML) deyimlerini kullanabilirsiniz. Akış tablolarına yönelik DML sorguları desteği, Genel Veri Koruma Yönetmeliği (GDPR) ile uyumluluk için tabloları güncelleştirme gibi kullanım örneklerini etkinleştirir.
Not
- 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 ekleme veri kaynakları gerektirdiğinden, işlemeniz bir kaynaktan, değişiklik içeren bir akış tablosundan akış gerektiriyorsa (örneğin, DML deyimleri aracılığıyla), kaynak akış tablosunu okurken skipChangeCommits bayrağını olarak ayarlayın.
skipChangeCommits
ayarlandığı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.
Aşağıda, akış tablosundaki kayıtları değiştirmeye yönelik DML deyimlerine örnekler verilmiştir.
Belirli bir kimlik numarasına sahip kayıtları silin:
DELETE FROM my_streaming_table WHERE id = 123;
Kayıtları belirli bir kimlikle güncelleştirin:
UPDATE my_streaming_table SET name = 'Jane Doe' WHERE id = 123;
Satır filtreleri ve sütun maskeleriyle tablo yayımlama
Önemli
Bu özellik Genel Önizlemesürümündedir.
Satır filtreleri, tablo taraması satırları her getirdiğinde filtre olarak uygulanan bir işlev belirtmenize olanak tanır. Bu filtreler, izleyen sorguların yalnızca filtre koşulunun true olarak değerlendirildiği satırları döndürmesini sağlar.
Sütun maskeleri, tablo taraması sırasında satırlar getirildiğinde sütun değerlerini maskelemeye olanak tanır. Bu sütun için gelecekteki sorgular, sütunun özgün değeri yerine değerlendirilen işlevin sonucunu döndürür. Satır filtrelerini ve sütun maskelerini kullanma hakkında daha fazla bilgi için bkz. satır filtrelerini ve sütun maskelerini kullanarak hassas tablo verilerini filtreleme.
Satır Filtrelerini ve Sütun Maskelerini Yönetme
Gerçekleştirilmiş görünümlerde ve akış tablolarında satır filtreleri ve sütun maskeleri CREATE OR REFRESH
deyimi aracılığıyla eklenmeli, güncellenmeli veya kaldırılmalıdır.
Satır filtreleri ve sütun maskeleriyle tablo tanımlama hakkında ayrıntılı söz dizimi için bkz. DLT SQL dil başvurusu ve DLT Python dil başvurusu.
Davranış
DLT işlem hatlarında satır filtrelerini veya sütun maskelerini kullanırken önemli ayrıntılar şunlardır:
-
Sahip olarak yenile: Bir işlem hattı güncellemesi materyalize edilmiş bir görüşü veya akış tablosunu yenilediğinde, satır filtresi ve sütun maskesi işlevleri, işlem hattı sahibinin haklarıyla birlikte çalışır. Bu, tablo yenileme işleminin işlem hattını oluşturan kullanıcının güvenlik bağlamını kullandığı anlamına gelir. Kullanıcı bağlamını denetleen işlevler (
CURRENT_USER
veIS_MEMBER
gibi) işlem hattı sahibinin kullanıcı bağlamı kullanılarak değerlendirilir. -
Sorgu: Gerçekleştirilmiş bir görünüm veya akış tablosu sorgulandığında, kullanıcı bağlamını denetleen işlevler (
CURRENT_USER
veIS_MEMBER
gibi) çağıranın kullanıcı bağlamı kullanılarak değerlendirilir. Bu yaklaşım, geçerli kullanıcının bağlamını temel alarak kullanıcıya özgü veri güvenliği ve erişim denetimlerini zorunlu kılıp uygular. - Satır filtreleri ve sütun maskeleri içeren kaynak tablolar üzerinde gerçekleştirilmiş görünümler oluştururken, gerçekleştirilmiş görünümün yenilenmesi her zaman tam bir yenilemedir. Tam yenileme, kaynakta bulunan tüm verileri en son tanımlarla yeniden işler. Bu işlem, kaynak tablolardaki güvenlik ilkelerinin en up-totarih verileri ve tanımlarıyla değerlendirilip uygulandığını denetler.
Gözlemlenebilirlik
Belirli bir gerçekleştirilmiş görünüme veya Akış tablosuna uygulanan mevcut satır filtrelerini ve sütun maskelerini incelemek için DESCRIBE EXTENDED
, INFORMATION_SCHEMA
veya Katalog Gezgini'ni kullanın. Bu işlevsellik, kullanıcıların gerçekleştirilmiş görünümler ve akış tablolarında veri erişimi ve koruma ölçülerini denetlemesine ve gözden geçirmesine olanak tanır.