Satır filtrelerini ve sütun maskelerini kullanarak hassas tablo verilerini filtreleme
Bu makalede, tablolarınızdaki hassas verileri filtrelemek için satır filtrelerini, sütun maskelerini ve eşleme tablolarını kullanmaya yönelik yönergeler ve örnekler sağlanır. Bu özellikler Unity Kataloğu gerektirir.
Satır filtreleri nedir?
Satır filtreleri, sorguların yalnızca filtre ölçütlerine uyan satırları döndürmesi için tabloya filtre uygulamanıza olanak sağlar. Satır filtrelerini SQL kullanıcı tanımlı işlevi (UDF) olarak uygularsınız. Python ve Scala UDF'leri de desteklenir, ancak yalnızca SQL UDF'lerinde sarmalandığında desteklenir.
Sütun maskeleri nelerdir?
Sütun maskeleri, bir tablo sütununa maskeleme işlevi uygulamanızı sağlar. Maskeleme işlevi sorgu çalışma zamanında değerlendirir ve hedef sütunun her başvurusunu maskeleme işlevinin sonuçlarıyla değiştirir. Çoğu kullanım örneğinde, sütun maskeleri özgün sütun değerinin döndürüleceğini veya çağıran kullanıcının kimliğine göre yeniden işlem yapılıp yapılmayacağını belirler. Sütun maskeleri, SQL UDF'leri olarak ya da SQL UDF'lerinde sarılmış Python veya Scala UDF'leri biçiminde yazılmış ifadelerdir.
Her tablo sütununda yalnızca bir maskeleme işlevi uygulanabilir. Maskeleme işlevi, sütunun maskelenmemiş değerini giriş olarak alır ve bunun sonucu olarak maskelenmiş değeri döndürür. Maskeleme işlevinin dönüş değeri maskelenen sütunla aynı türde olmalıdır. Maskeleme işlevi ayrıca giriş parametresi olarak ek sütunlar alabilir ve bunları maskeleme mantığında kullanabilir.
Bu filtrelerle dinamik görünümler arasındaki fark nedir?
Dinamik görünümler, satır filtreleri ve sütun maskelerinin tümü tablolara karmaşık mantık uygulamanıza ve sorgu çalışma zamanında filtreleme kararlarını işlemenize olanak tanır.
Dinamik görünüm, bir veya daha fazla kaynak tablonun soyut, salt okunur bir görünümüdür. Kullanıcı, kaynak tablolara doğrudan erişimi olmadan dinamik görünüme erişebilir. Dinamik görünüm oluşturma, kaynak tabloların veya aynı şemada bulunan diğer tabloların ve görünümlerin adıyla eşleşmemesi gereken yeni bir tablo adı tanımlar.
Öte yandan, bir satır filtresinin veya sütun maskesinin hedef tabloyla ilişkilendirilmesi, yeni tablo adları eklemeden ilgili mantığı doğrudan tablonun kendisine uygular. Sonraki sorgular özgün adını kullanarak hedef tabloya doğrudan başvurmaya devam edebilir.
Filtreler ve maskeler gibi dönüştürme mantığını salt okunur tablolara uygulamanız gerekiyorsa ve kullanıcıların farklı adlar kullanarak dinamik görünümlere başvurması kabul edilebilirse dinamik görünümleri kullanın. Delta Sharing kullanarak veri paylaşırken verileri filtrelemek istiyorsanız dinamik görünümleri kullanmanız gerekir. Belirli veriler üzerinde ifadeleri filtrelemek veya hesaplamak, ancak yine de kullanıcılara özgün adlarını kullanarak tablolara erişim sağlamak istiyorsanız satır filtrelerini ve sütun maskelerini kullanın.
Başlamadan önce
Tablolara satır filtreleri ve sütun maskeleri eklemek için aşağıdakilere sahip olmanız gerekir:
- Unity Kataloğu için etkinleştirilmiş bir çalışma alanı.
- Unity Kataloğu'nda kayıtlı bir işlev. Bu işlev, SQL UDF şeklinde olabileceği gibi, Unity Kataloğu'nda kayıtlı ve SQL UDF içinde sarmalanmış bir Python veya Scala UDF de olabilir. Ayrıntılar için bkz. Kullanıcı tanımlı işlevler (UDF) nedir?, Sütun
mask
yan tümcesiveROW FILTER
yan tümcesi.
Aşağıdaki gereksinimleri de karşılamanız gerekir:
- Tabloya satır filtreleri veya sütun maskeleri ekleyen bir işlev atamak için, işlevde
EXECUTE
, şemadaUSE SCHEMA
, ve üst katalogdaUSE CATALOG
ayrıcalığınız olmalıdır. - Yeni bir tablo oluştururken filtre veya maske ekliyorsanız, şema üzerinde ayrıcalığa sahip olmalısınız
CREATE TABLE
. - Mevcut
tabloya filtre veya maske ekliyorsanız, tablo sahibi olmanız gerekir.
Satır filtreleri veya sütun maskeleri olan bir tabloya erişmek için işlem kaynağınızın şu gereksinimlerden birini karşılaması gerekir:
- SQL ambarı.
- Databricks Runtime 12.2 LTS veya üzeri üzerinde standart erişim modu (eski adıyla paylaşılan erişim modu).
- Databricks Runtime 15.4 LTS veya üzeri üzerinde ayrılmış erişim modu (eski adıyla tek kullanıcı erişim modu).
Databricks Runtime 15.3 veya altında ayrılmış işlem kullanarak satır filtrelerini veya sütun maskelerini okuyamazsınız.
Databricks Runtime 15.4 LTS ve üzerinde sağlanan veri filtrelemeden yararlanmak için, satır filtrelerini ve sütun maskelerini destekleyen veri filtreleme işlevi sunucusuz işlem üzerinde çalıştığından, çalışma alanınızın sunucusuz işlem için etkinleştirildiğini de doğrulamanız gerekir. Satır filtreleri veya sütun maskeleri kullanan tabloları okumak için ayrılmış erişim modu olarak yapılandırılmış işlem kullandığınızda sunucusuz işlem kaynakları için ücretlendirilebilirsiniz. Bkz. Özel işlemde ayrıntılı erişim denetimi (eski adıyla tek kullanıcılı işlem).
Satır filtresi uygulama
Satır filtresi oluşturmak için, filtre ilkesini tanımlamak üzere bir işlev (UDF) yazar ve bunu bir tabloya uygularsınız. Her tabloda yalnızca bir satır filtresi olabilir. Satır filtresi, her giriş parametresinin karşılık gelen tablonun bir sütununa bağlandığı sıfır veya daha fazla giriş parametresini kabul eder.
Katalog Gezgini veya SQL komutlarını kullanarak satır filtresi uygulayabilirsiniz. Katalog Gezgini yönergeleri, zaten bir işlev oluşturduğunuzu ve Unity Kataloğu'na kaydettiğinizi varsayar. SQL yönergelerinde satır filtresi işlevi oluşturma ve tabloya uygulama örnekleri yer alır.
Katalog Gezgini
- Azure Databricks çalışma alanınızda Katalog'a tıklayın
.
- Filtrelemek istediğiniz tabloya göz atın veya tabloyu arayın.
- Genel Bakış sekmesinde Satır filtresi: Filtre ekle'ye tıklayın.
- Satır filtresi ekle iletişim kutusunda filtre işlevini içeren kataloğu ve şemayı seçin ve ardından işlevi seçin.
- Genişletilmiş iletişim kutusunda işlev tanımını görüntüleyin ve işlev deyimine dahil edilen sütunlarla eşleşen tablo sütunlarını seçin.
- Ekle'yi tıklatın.
Filtreyi tablodan kaldırmak için fx Satır filtresi'ne ve ardından Kaldır'a tıklayın.
SQL
Satır filtresi oluşturmak ve varolan bir tabloya eklemek için CREATE FUNCTION
kullanın ve işlevini ALTER TABLE
kullanarak uygulayın. kullanarak CREATE TABLE
bir tablo oluşturduğunuzda da işlev uygulayabilirsiniz.
Satır filtresini oluşturun:
CREATE FUNCTION <function_name> (<parameter_name> <parameter_type>, ...) RETURN {filter clause whose output must be a boolean};
Sütun adını kullanarak tabloya satır filtresi uygulayın:
ALTER TABLE <table_name> SET ROW FILTER <function_name> ON (<column_name>, ...);
Ek söz dizimi örnekleri:
Bir işlev parametresiyle eşleşen sabit değişmez değer kullanarak tabloya satır filtresi uygulayın:
ALTER TABLE <table_name> SET ROW FILTER <function_name> ON (<constant_literal>, ...);
Tablodan satır filtresini kaldırma:
ALTER TABLE <table_name> DROP ROW FILTER;
Satır filtresini değiştirme:
Run a DROP FUNCTION statement to drop the existing function, or use CREATE OR REPLACE FUNCTION to replace it.
Satır filtrelerini silme:
ALTER TABLE <table_name> DROP ROW FILTER; DROP FUNCTION <function_name>;
Not
ALTER TABLE ... DROP ROW FILTER
komutunu gerçekleştirmeden önce işlevi kaldırmamanız gerekir. Bunu yapmazsanız tablo erişilemez durumda olur.Tablo bu şekilde erişilemez hale gelirse, tabloyu değiştirin ve
ALTER TABLE <table_name> DROP ROW FILTER;
kullanarak yalnız bırakılmış satır filtresi referansını kaldırın.
Ayrıca bkz.: ROW FILTER
madde.
Satır filtresi örnekleri
Bu örnek, bölgesindeki admin
grubun US
üyeleri için geçerli olan SQL kullanıcı tanımlı bir işlev oluşturur.
Bu örnek işlev tabloya uygulandığında sales
, grubun üyeleri tablodaki admin
tüm kayıtlara erişebilir. İşlev yönetici olmayan bir tarafından çağrılırsa, RETURN_IF
koşul başarısız olur ve region='US'
ifade değerlendirilir ve tablo yalnızca bölgedeki kayıtları US
gösterecek şekilde filtrelenmiş olur.
CREATE FUNCTION us_filter(region STRING)
RETURN IF(IS_ACCOUNT_GROUP_MEMBER('admin'), true, region='US');
İşlevi tabloya satır filtresi olarak uygulayın. Tablodan sales
sonraki sorgular satırların bir alt kümesini döndürür.
CREATE TABLE sales (region STRING, id INT);
ALTER TABLE sales SET ROW FILTER us_filter ON (region);
Satır filtresini devre dışı bırakın. Tablodaki sales
gelecekteki kullanıcı sorguları, tablodaki tüm satırları döndürür.
ALTER TABLE sales DROP ROW FILTER;
CREATE TABLE
ifadesinin bir parçası olarak satır filtresi işlevi uygulanmış bir tablo oluşturun. Tablodaki sales
gelecekteki sorgular, her biri bir satır alt kümesi döndürür.
CREATE TABLE sales (region STRING, id INT)
WITH ROW FILTER us_filter ON (region);
Sütun maskesi uygula
Sütun maskesi uygulamak için bir işlev (UDF) oluşturun ve bunu bir tablo sütununa uygulayın.
Katalog Gezgini'ne veya SQL komutlarını kullanarak sütun maskesi uygulayabilirsiniz. Katalog Gezgini yönergeleri, zaten bir işlev oluşturduğunuzu ve Unity Kataloğu'na kaydettiğinizi varsayar. SQL yönergelerinde sütun maskesi işlevi oluşturma ve bunu tablo sütununa uygulama örnekleri yer alır.
Katalog Tarayıcısı
- Azure Databricks çalışma alanınızda Katalog'a tıklayın
.
- Tabloya göz atın veya tabloyu arayın.
-
Genel Bakış sekmesinde, sütun maskesini uygulamak istediğiniz satırı bulun ve Maske düzenleme simgesine
tıklayın.
- Sütun maskesi ekle iletişim kutusunda, filtreleme işlevini içeren kataloğu ve şemayı seçin, ardından işlevi seçin.
- Genişletilmiş iletişim kutusunda işlev tanımını görüntüleyin. İşlev maskelenen sütuna ek olarak herhangi bir parametre içeriyorsa, bu ek işlev parametrelerini değiştirmek istediğiniz tablo sütunlarını seçin.
- Ekle'yi tıklatın.
Sütun maskesini tablodan kaldırmak için, tablo satırında fx Sütun maskesi'ne ve ardından Kaldır'a tıklayın.
SQL
Bir sütun maskesi oluşturmak ve bunu mevcut bir tablo sütununa eklemek için CREATE FUNCTION
ve maskeleme işlevini uygulamak için ALTER TABLE
kullanın. kullanarak CREATE TABLE
bir tablo oluşturduğunuzda da işlev uygulayabilirsiniz.
Maskeleme işlevini uygulamak için kullanırsınız SET MASK
. yan tümcesinde MASK
, Azure Databricks yerleşik çalışma zamanı işlevlerinden herhangi birini kullanabilir veya kullanıcı tanımlı diğer işlevleri çağırabilirsiniz. Yaygın kullanım örnekleri arasında, current_user( )
kullanarak işlevi çalıştıran kullanıcı kimliğini incelemek ya da is_account_group_member( )
kullanarak üyesi oldukları grupları almak yer alır. Ayrıntılar için bkz. Sütun mask
madde ve Yerleşik işlevler.
Sütun maskesi oluşturma:
CREATE FUNCTION <function_name> (<parameter_name> <parameter_type>, ...) RETURN {expression with the same type as the first parameter};
Sütun maskesini var olan bir tablodaki bir sütuna uygulayın:
ALTER TABLE <table_name> ALTER COLUMN <col_name> SET MASK <mask_func_name> USING COLUMNS <additional_columns>;
Ek söz dizimi örnekleri:
Sütun maskesini, bir işlev parametresiyle eşleşen sabit değişmez değer kullanarak var olan bir tablodaki bir sütuna uygulayın:
ALTER TABLE <table_name> ALTER COLUMN <col_name> SET MASK <mask_func_name> USING COLUMNS (<constant_name>, ...);
Tablodaki bir sütundan sütun maskesi kaldırma:
ALTER TABLE <table_name> ALTER COLUMN <column where mask is applied> DROP MASK;
DROP
mevcut işlevi ya değiştirin ya daCREATE OR REPLACE TABLE
kullanarak sütun maskesini değiştirin.Bir sütun maskesini silme:
ALTER TABLE <table_name> ALTER COLUMN <column where mask is applied> DROP MASK; DROP FUNCTION <function_name>;
Not
İşlevi
ALTER TABLE
bırakmadan önce komutunu gerçekleştirmeniz gerekir, aksi takdirde tablo erişilemez durumda olur.Tabloya bu şekilde erişilemez hale gelirse, tabloyu değiştirin ve
ALTER TABLE <table_name> ALTER COLUMN <column where mask is applied> DROP MASK;
kullanarak yetim maske referansını bırakın.
Sütun maskesi örnekleri
Bu örnekte, yalnızca grubun üyesi ssn
olan kullanıcıların bu sütundaki HumanResourceDept
değerleri görüntüleyebilmesi için sütunu maskeleyen kullanıcı tanımlı bir işlev oluşturursunuz.
CREATE FUNCTION ssn_mask(ssn STRING)
RETURN CASE WHEN is_account_group_member('HumanResourceDept') THEN ssn ELSE '***-**-****' END;
Yeni işlevi tabloya sütun maskesi olarak uygulayın. Tabloyu veya daha sonraki bir sürümü oluştururken sütun maskesini ekleyebilirsiniz.
--Create the `users` table and apply the column mask in a single step:
CREATE TABLE users (
name STRING,
ssn STRING MASK ssn_mask);
--Create the `users` table and apply the column mask after:
CREATE TABLE users
(name STRING, ssn STRING);
ALTER TABLE users ALTER COLUMN ssn SET MASK ssn_mask;
Sorgulayan kullanıcı grubun üyesi ssn
olmadığında bu tablodaki sorgular artık maskelenmiş HumanResourceDept
sütun değerleri döndürmektedir:
SELECT * FROM users;
James ***-**-****
Sorguların sütundaki özgün değerleri döndürmesi için sütun maskesini ssn
devre dışı bırakmak için:
ALTER TABLE users ALTER COLUMN ssn DROP MASK;
Eşleme tablolarını kullanarak erişim denetimi listesi oluşturma
Satır düzeyi güvenlik elde etmek için bir eşleme tablosu (veya erişim denetimi listesi) tanımlamayı göz önünde bulundurun. Kapsamlı bir eşleme tablosu, özgün tablodaki hangi veri satırlarına belirli kullanıcılar veya gruplar tarafından erişilebildiğini kodlar. Eşleştirme tabloları, doğrudan bağlantılar aracılığıyla veri tablolarınızla basit tümleştirme sunduğundan yararlıdır.
Bu metodoloji, özel gereksinimleri içeren birçok kullanım örneğini ele alır. Örnekler şunları içerir:
- Giriş yapmış kullanıcıya dayalı kısıtlamalar getirirken, belirli kullanıcı grupları için farklı kurallar uygulanır.
- Farklı kurallar kümesi gerektiren kuruluş yapıları gibi karmaşık hiyerarşiler oluşturma.
- Dış kaynak sistemlerden karmaşık güvenlik modellerini çoğaltma.
Eşleme tablolarını benimseyerek bu zorlu senaryoları gerçekleştirebilir ve sağlam satır düzeyi ve sütun düzeyinde güvenlik uygulamaları sağlayabilirsiniz.
Eşleme tablosu örnekleri
Geçerli kullanıcının listede olup olmadığını denetlemek için eşleme tablosu kullanın:
USE CATALOG main;
Yeni bir eşleme tablosu oluşturun:
DROP TABLE IF EXISTS valid_users;
CREATE TABLE valid_users(username string);
INSERT INTO valid_users
VALUES
('fred@databricks.com'),
('barney@databricks.com');
Yeni filtre oluşturma:
Not
Çağıran olarak çalışan kullanıcı bağlamını denetleyen işlevler (örneğin, CURRENT_USER
ve IS_ACCOUNT_GROUP_MEMBER
işlevleri) dışında tüm filtreler, tanımlayıcının haklarıyla çalışır.
Bu örnekte işlev, geçerli kullanıcının valid_users
tablosunda olup olmadığını denetler. Kullanıcı bulunursa işlev true döndürür.
DROP FUNCTION IF EXISTS row_filter;
CREATE FUNCTION row_filter()
RETURN EXISTS(
SELECT 1 FROM valid_users v
WHERE v.username = CURRENT_USER()
);
Aşağıdaki örnek, tablo oluşturma sırasında satır filtresini uygular. Filtreyi daha sonra deyimini ALTER TABLE
kullanarak da ekleyebilirsiniz. Tablonun tamamına uygularken ON ()
söz dizimini kullanın. Belirli bir satır için ON (row);
kullanın.
DROP TABLE IF EXISTS data_table;
CREATE TABLE data_table
(x INT, y INT, z INT)
WITH ROW FILTER row_filter ON ();
INSERT INTO data_table VALUES
(1, 2, 3),
(4, 5, 6),
(7, 8, 9);
Tablodan verileri seçin. Kullanıcı valid_users
tablosunda ise bu yalnızca veri döndürmelidir.
SELECT * FROM data_table;
Sütun değerlerinden bağımsız olarak tablodaki tüm satırları görüntülemek için her zaman erişimi olması gereken hesaplardan oluşan bir eşleme tablosu oluşturun:
CREATE TABLE valid_accounts(account string);
INSERT INTO valid_accounts
VALUES
('admin'),
('cstaff');
Şimdi, satırdaki tüm sütunların değerleri beşten küçükse veya çağıran kullanıcı yukarıdaki eşleme tablosunun bir üyesiyse true
döndüren bir SQL UDF oluşturun.
CREATE FUNCTION row_filter_small_values (x INT, y INT, z INT)
RETURN (x < 5 AND y < 5 AND z < 5)
OR EXISTS(
SELECT 1 FROM valid_accounts v
WHERE IS_ACCOUNT_GROUP_MEMBER(v.account));
Son olarak, SQL UDF'yi tabloya satır filtresi olarak uygulayın:
ALTER TABLE data_table SET ROW FILTER row_filter_small_values ON (x, y, z);
Destek ve sınırlamalar
Satır filtreleri ve sütun maskeleri tüm Azure Databricks işlevlerinde veya tüm işlem kaynaklarında desteklenmez. Bu bölümde desteklenen işlevler ve sınırlamalar listelenmektedir.
Desteklenen özellikler ve biçimler
Desteklenen işlevlerin listesi kapsamlı değildir. Bazı öğeler Genel Önizleme sırasında desteklenmediğinden listelenir.
- SQL iş yükleri için Databricks SQL ve Databricks not defterleri desteklenir.
- Ayrıcalıklara sahip
MODIFY
kullanıcıların DML komutları desteklenir. Filtreler ve maskeler,UPDATE
veDELETE
deyimleri tarafından okunan verilere uygulanır ve yazılan verilere uygulanmaz (INSERT
dahil). - Desteklenen veri biçimleri:
- Yönetilen ve dış tablolar için Delta ve Parquet.
- Lakehouse Federation kullanılarak Unity Kataloğu'nda kayıtlı yabancı tablolar için birden çok başka veri biçimi.
- İlke parametreleri sabit ifadeler (dizeler, sayısal, aralıklar, boolean'lar, nulllar) içerebilir.
- SQL, Python ve Scala UDF'leri Unity Kataloğu'nda kayıtlıysa satır filtresi veya sütun maskesi işlevleri olarak desteklenir. Python ve Scala UDF'leri bir SQL UDF'de sarmalanmalıdır.
- Tablolarda sütun maskelerine veya satır filtrelerine başvuran görünümler oluşturabilirsiniz, ancak görünüme sütun maskeleri veya satır filtreleri ekleyemezsiniz.
- Şema, hedef tabloya uygulanan satır filtreleri ve sütun maskeleriyle uyumluysa Delta Lake değişiklik veri akışları desteklenir.
- Yabancı tablolar desteklenir.
- Tablo örnekleme desteklenir.
-
MERGE
deyimleri, kaynak tablolar, hedef tablolar veya her ikisi de satır filtreleri ve sütun maskeleri kullandığında desteklenir. Bu, basit alt sorgular içeren satır filtresi işlevlerine sahip tabloları içerir. Sınırlamalar aşağıdaki bölümde listelenmiştir.
Databricks SQL gerçekleştirilmiş görünümleri ve Databricks SQL akış tabloları satır filtrelerini ve sütun maskelerini destekler (Genel Önizleme):
- Databricks SQL gerçekleştirilmiş görünümüne veya akış tablosuna satır filtreleri ve sütun maskeleri ekleyebilirsiniz. Gerçekleştirilmiş görünüm veya akış tablosu tanımlandığında maske ekleme işlemi bildirim temelli olarak yapılmalıdır. bkz. CREATE MATERIALIZED VIEW veya CREATE STREAMING TABLE.
- Satır filtreleri ve sütun maskeleri içeren tablolarda, Databricks SQL maddeselleştirilmiş görünümleri veya akış tablolarını tanımlayabilirsiniz.
DLT'de bildirilen ve yayımlanan malzemeleştirilmiş görünümler ve akış tabloları, satır filtrelerini veya sütun maskelerini destekler (Herkese Açık Önizleme):
- DLT gerçekleştirilmiş görünümüne veya akış tablosuna satır filtreleri ve sütun maskeleri ekleyebilirsiniz.
- Satır filtreleri ve sütun maskeleri içeren tablolarda DLT malzeme haline getirilmiş görünümleri veya akış tablolarını tanımlayabilirsiniz.
Bkz. Satır filtreleri ve sütun maskeleriyle tabloları yayımlama.
Performans önerileri
Satır filtreleri ve sütun maskeleri, kullanıcıların filtreleme ve maskeleme işlemlerinden önce temel tabloların değerlerinin içeriğini görüntüleyememesini sağlayarak veri görünürlüğünü denetler. Yaygın kullanım örnekleri altındaki sorgulara yanıt olarak iyi performans gösterirler. Sorgu altyapısının sorgu performansını iyileştirme ve filtrelenmiş/maskelenmiş değerlerden bilgi sızdırmaya karşı koruma arasında seçim yapması gereken daha az yaygın uygulamalarda, sorgu performansı üzerinde bir etkisi olması pahasına her zaman güvenli bir karar verir. Bu performans etkisini en aza indirmek için aşağıdaki önerileri uygulayın:
- Basit ilke işlevlerini kullan: daha az ifadeye sahip İlke işlevleri genellikle daha karmaşık ifadelerden daha iyi performans gösterir. Basit CASE işlevleri yerine eşleme tablolarını ve ifade alt sorgularını kullanmaktan kaçının.
- İşlev bağımsız değişkenlerinin sayısını azaltın: Azure Databricks, bu sütunlar sorguda kullanılmasa bile ilke işlevi bağımsız değişkenlerinden kaynaklanan kaynak tabloya yönelik sütun başvurularını iyileştiremez. Bu tablolardaki sorgular daha iyi performans göstereceği için ilke işlevlerini daha az bağımsız değişkenle kullanın.
-
Çok fazla AND konjonktürü olan satır filtreleri eklemekten kaçının: Her tablo yalnızca en fazla bir satır filtresi eklemeyi desteklediğinden, yaygın bir yaklaşım birden çok istenen ilke işlevini ile
AND
birleştirmektir. Ancak, her bir bağlaç için, performansı etkileyebilecek ve bu tablonun başka bir yerinde bahsedilen bileşenleri (örneğin, eşleme tabloları) içeren bağlaçların dahil edilme olasılığı artar. Performansı geliştirmek için daha az konjonkte kullanın. -
Bu tablolardan tablo ilkelerinde ve sorgularında hata oluşturamayan belirleyici ifadeler kullanın: Sağlanan girişler geçerli değilse ,ANSI bölümü gibi bazı ifadeler hata verebilir. Böyle durumlarda SQL derleyicisi, filtreleme ve/veya maskeleme işlemlerinden önce değerler hakkındaki bilgileri ortaya koyan "sıfıra bölme" gibi hataların oluşma olasılığını önlemek için sorgu planında bu ifadelerle (filtreler gibi) işlemleri çok aşağı göndermemelidir. Bu örnekteki
try_divide
gibi hiçbir zaman hata oluşturmamış belirleyici ifadeler kullanın. - Performansı ölçmek için tablonuz üzerinde test sorguları çalıştırın: Satır filtreleri ve/veya sütun maskeleriyle tablonuz için beklediğiniz iş yükünü temsil eden gerçekçi sorgular oluşturma ve performansı ölçme. İlke işlevlerinde küçük değişiklikler yapın ve filtreleme ve maskeleme mantığının performans ve ifade değeri arasında iyi bir dengeye ulaşana kadar bunların etkilerini gözlemleyin.
Sınırlama
- 12.2 LTS'nin altındaki Databricks Runtime sürümleri satır filtrelerini veya sütun maskelerini desteklemez. Bu çalışma zamanları güvenli bir şekilde başarısız olur; başka bir deyişle, bu çalışma zamanlarının desteklenmeyen sürümlerinden tablolara erişmeye çalışırsanız veri döndürülemez.
- Delta Paylaşımı satır düzeyi güvenlik veya sütun maskeleriyle çalışmaz.
- Görünüme satır düzeyi güvenlik veya sütun maskeleri uygulayamazsınız.
- Zaman yolculuğu satır düzeyi güvenlik veya sütun maskeleriyle çalışmaz.
- İlkeleri olan tablolardaki dosyalara yol tabanlı erişim desteklenmez.
- Döngüsel bağımlılıkları özgün ilkelere geri döndüren satır filtresi veya sütun maskesi ilkeleri desteklenmez.
- Derin ve sığ klonlar desteklenmez.
-
MERGE
deyimleri, iç içe yerleştirmeler, toplamalar, pencereler, sınırlar veya belirlenemez işlevler içeren satır filtresi veya sütun maskesi ilkesine sahip tabloları desteklemez. - Delta Lake API'leri desteklenmez.
Ayrılmış erişim modu sınırlaması
Databricks Runtime 15.3 veya altındaki ayrılmış erişim işlem kaynağından satır filtreleri veya sütun maskeleri olan bir tabloya erişemezsiniz. Çalışma alanınız sunucusuz işlem için etkinleştirildiyse, Databricks Runtime 15.4 LTS veya üzerinde ayrılmış erişim modunu kullanabilirsiniz. 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.