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 nedir?
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 veya SQL UDF'lerinde sarmalanan Python veya Scala UDF'leri olarak yazılan 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şmeden 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 bir SQL UDF ya da Unity Kataloğu'nda kayıtlı ve SQL UDF'ye sarmalanmış bir Python veya Scala UDF olabilir. Ayrıntılar için bkz . Kullanıcı tanımlı işlevler (UDF)nelerdir?, Sütun maskesi yan tümcesi ve SATIR FİlTRE 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,
USE SCHEMA
şemada veUSE CATALOG
üst katalogda ayrıcalığınız olmalıdırEXECUTE
. - Yeni bir tablo oluştururken filtre veya maske ekliyorsanız şemada ayrıcalığınız olmalıdır
CREATE TABLE
. - Varolan bir tabloya filtre veya maske ekliyorsanız, tablo sahibi olmanız veya tabloda hem hem de
MODIFY
SELECT
ayrıcalıklarına sahip 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 üzerinde paylaşılan erişim modu.
Databricks Runtime 15.4 LTS veya üzeri üzerinde tek kullanıcı erişim modu.
Databricks Runtime 15.3 veya altında tek kullanıcı işlemi 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. Bu nedenle, satır filtreleri veya sütun maskeleri kullanan tabloları okumak için tek kullanıcı işlemi kullandığınızda sunucusuz işlem kaynakları için ücretlendirilebilirsiniz. Bkz . Tek kullanıcı işlemlerinde ayrıntılı erişim denetimi.
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 kaydedildiğini 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 işlevini kullanarak ALTER TABLE
kullanın CREATE FUNCTION
ve 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
İşlevi
ALTER TABLE ... DROP ROW FILTER
bırakmadan önce komutunu gerçekleştirmeniz gerekir. Bunu yapmazsanız tablo erişilemez durumda olur.Tabloya bu şekilde erişilemez hale gelirse, tabloyu değiştirin ve kullanarak
ALTER TABLE <table_name> DROP ROW FILTER;
yalnız bırakılmış satır filtresi başvuruyu bırakın.
Ayrıca bkz. ROW FILTER yan tümcesi.
Satır filtresi örnekleri
Bu örnek, bölgesindeki US
grubun admin
ü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 bir satır alt kümesi 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;
deyiminin bir parçası CREATE TABLE
olarak satır filtresi olarak 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 uygulama
Sütun maskesi uygulamak için bir işlev (UDF) oluşturun ve bunu 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 kaydedildiğini varsayar. SQL yönergelerinde sütun maskesi işlevi oluşturma ve bunu tablo sütununa uygulama örnekleri yer alır.
Katalog Gezgini
- 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 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. İşlev maskelenen sütuna ek olarak herhangi bir parametre içeriyorsa, bu ek işlev parametrelerinin atamasını 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 varolan bir tablo sütununa eklemek için kullanarak maskeleme işlevini ALTER TABLE
kullanın CREATE FUNCTION
ve uygulayı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, işlevini çalıştıran çağıran kullanıcının kimliğini kullanarak veya kullanarak current_user( )
is_account_group_member( )
üyesi olduğu grupları alarak incelemektir. Ayrıntılar için bkz . Sütun maskesi yan tümcesi 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;
Sütun maskesini değiştirme:
DROP
Mevcut işlevi veya kullanınCREATE OR REPLACE TABLE
.Sütun maskelerini 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 kullanarak
ALTER TABLE <table_name> ALTER COLUMN <column where mask is applied> DROP MASK;
yalnız bırakılmış maske başvuruyu bırakın.
Sütun maskesi örnekleri
Bu örnekte, yalnızca grubun üyesi HumanResourceDept
olan kullanıcıların bu sütundaki ssn
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_member('HumanResourceDept') THEN ssn ELSE '***-**-****' END;
Yeni işlevi tabloya sütun maskesi olarak uygulayın. Tabloyu oluştururken veya sonrasında 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 HumanResourceDept
olmadığında bu tablodaki sorgular artık maskelenmiş ssn
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. Her eşleme tablosu, özgün tablodaki hangi veri satırlarının belirli kullanıcılar veya gruplar tarafından erişilebilir olduğunu kodlayan kapsamlı bir eşleme tablosudur. Eşleme tabloları, doğrudan birleşimler aracılığıyla olgu tablolarınızla basit tümleştirme sunduğundan yararlıdır.
Bu metodoloji, özel gereksinimleri olan birçok kullanım örneğinin ele alınmasında yararlı olduğunu kanıtlar. Örnekler şunları içerir:
- Belirli kullanıcı grupları için farklı kurallar kullanılırken oturum açmış kullanıcıya göre kısıtlamalar getirme.
- Farklı kural kümeleri 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ı bu şekilde benimseyerek, bu zorlu senaryoları etkili bir şekilde ele alabilir 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_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
tabloda 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 uygulanırken söz dizimini ON ()
kullanın. Belirli bir satır için kullanın ON (row);
.
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. Bu yalnızca kullanıcı tablodaysa valid_users
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 döndüren true
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 veDELETE
deyimleri tarafındanUPDATE
okunan verilere uygulanır ve yazılan verilere (dahil)INSERT
uygulanmaz.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ı oldukları sürece 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.
Delta Lake değişiklik veri akışları, şema hedef tabloya uygulanan satır filtreleri ve sütun maskeleriyle uyumlu olduğu sürece 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, ancak aşağıdaki bölümde listelenen sınırlamalar vardır.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 bu bildirim temelli olarak yapılmalıdır. Bkz . GERÇEKLEŞTIRILMIŞ GÖRÜNÜM OLUŞTURMA veya AKıŞ TABLOSU OLUŞTURMA.
- Satır filtreleri ve sütun maskeleri içeren tablolarda Databricks SQL Gerçekleştirilmiş görünümlerini veya akış tablolarını tanımlayabilirsiniz.
Delta Live Tablolarında bildirilen ve yayımlanan gerçekleştirilmiş görünümler ve akış tabloları satır filtrelerini veya sütun maskelerini destekler (Genel Önizleme):
- Delta Live Tables gerçekleştirilmiş görünümüne veya akış tablosuna satır filtreleri ve sütun maskeleri ekleyebilirsiniz.
- Delta Live Tables'ı satır filtreleri ve sütun maskeleri içeren tablolarda gerçekleştirilmiş görünümler veya akış tabloları tanımlayabilirsiniz.
Bkz. Satır filtreleri ve sütun maskeleriyle tabloları yayımlama.
PerformansLa İlgili Dikkat Edilmesi Gerekenler
Satır filtreleri ve sütun maskeleri, filtreleme ve maskeleme işlemlerinden önce hiçbir kullanıcının temel tabloların değerlerinin içeriğini görüntüleyememesini sağlayarak verilerinizin görünürlüğünü garanti eder. Bunlar, en yaygın kullanım örnekleri altındaki sorgulara yanıt olarak iyi performans göstermeleri için tasarlanmıştır. 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 sıklıktaki 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 ilkeleri uygulayın:
- Basit ilke işlevlerini kullanın: Daha az ifadeye sahip ilke 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 başka bir şekilde 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 genellikle 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 konjunct için, bu tablonun başka bir yerinde bahsedilen ve performansı etkileyebilecek bileşenleri (eşleme tablolarının kullanımı gibi) içeren eşlemlerin artış 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: AnSI bölme gibi sağlanan girişler geçersizse bazı ifadeler hata verebilir. Bu gibi durumlarda SQL derleyicisi, filtreleme ve/veya maskeleme işlemlerinden önceki değerler hakkında bilgi veren "sıfıra bölme" gibi hataların oluşma olasılığından kaçınmak için sorgu planında bu ifadelerle (filtreler gibi) işlemleri çok aşağı göndermemelidir. Bu örnekte olduğu gibi
try_divide
, belirleyici olan ve hiçbir zaman hata oluşturmamış ifadeleri 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ştirme, toplamalar, pencereler, sınırlar veya belirleyici olmayan işlevler içeren satır filtresi ilkelerine sahip tabloları desteklemez.- Delta Lake API'leri desteklenmez.
Tek kullanıcı işlem sınırlaması
Databricks Runtime 15.3 veya altındaki tek bir kullanıcı 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 tek kullanıcı erişim modunu kullanabilirsiniz. Daha fazla bilgi için bkz . Tek kullanıcı işlemlerinde ayrıntılı erişim denetimi.