Bizalmas táblaadatok szűrése sorszűrők és oszlopmaszkok használatával
Ez a cikk útmutatást és példákat tartalmaz a sorok szűrőinek, oszlopmaszkoknak és leképezési tábláknak a táblákban lévő bizalmas adatok szűréséhez való használatára. Ezekhez a funkciókhoz Unity Catalog szükséges.
Mik azok a sorszűrők?
A sorszűrők lehetővé teszik, hogy szűrőt alkalmazzanak egy táblára, hogy a lekérdezések csak a szűrési feltételeknek megfelelő sorokat adjanak vissza. A sorszűrőt sql-felhasználó által definiált függvényként (UDF) implementálhatja. A Python és a Scala UDF-ek is támogatottak, de csak akkor, ha SQL UDF-ekbe vannak csomagolva.
Mik azok az oszlopmaszkok?
Az oszlopmaszkokkal maszkoló függvényt alkalmazhat egy táblaoszlopra. A maszkolási függvény a lekérdezési futásidőben kiértékeli a céloszlop hivatkozásait a maszkolási függvény eredményeivel. A legtöbb használati esetben az oszlopmaszkok határozzák meg, hogy az eredeti oszlopértéket adja vissza, vagy a megoldó felhasználó identitása alapján adja vissza. Az oszlopmaszkok SQL UDF-ként vagy Python- vagy Scala UDF-ként írt kifejezések, amelyek SQL UDF-ekbe vannak csomagolva.
Minden táblázatoszlopra csak egy maszkoló függvény alkalmazható. A maszkoló függvény bemenetként az oszlop maszkolatlan értékét veszi figyelembe, és ennek eredményeként visszaadja a maszkolt értéket. A maszkoló függvény visszatérési értékének meg kell egyeznie a maszkolt oszlop típusával. A maszkoló függvény további oszlopokat is felvehet bemeneti paraméterekként, és használhatja azokat a maszkolás logikájában.
Mi a különbség a szűrők és a dinamikus nézetek között?
A dinamikus nézetek, a sorszűrők és az oszlopmaszkok segítségével összetett logikát alkalmazhat táblákra, és a lekérdezési futtatókörnyezetben feldolgozhatja a szűrési döntéseket.
A dinamikus nézet egy vagy több forrástábla absztrakt, írásvédett nézete. A felhasználó anélkül férhet hozzá a dinamikus nézethez, hogy közvetlen hozzáféréssel rendelkezik a forrástáblákhoz. A dinamikus nézet létrehozása olyan új táblanevet határoz meg, amely nem egyezhet meg az ugyanazon sémában található forrástáblák vagy más táblák és nézetek nevével.
Másrészt, ha egy sorszűrőt vagy oszlopmaszkot egy céltáblához társít, a megfelelő logikát közvetlenül a táblára alkalmazza új táblanevek bevezetése nélkül. A későbbi lekérdezések továbbra is hivatkozhatnak közvetlenül a céltáblára az eredeti nevével.
Használjon dinamikus nézeteket, ha szűrők és maszkok formájában átalakítási logikát kell alkalmaznia írásvédett táblákon, és ha elfogadható, hogy a felhasználók különböző nevekkel hivatkozzanak a dinamikus nézetekre. Ha adatokat szeretne szűrni, amikor a Delta Sharing használatával osztja meg azokat, dinamikus nézeteket kell használnia. Használjon sorszűrőket és oszlopmaszkokat, ha adott adatokra szeretné szűrni vagy kiszámítani a kifejezéseket, de továbbra is hozzáférést biztosít a felhasználóknak a táblákhoz az eredeti nevükkel.
Mielőtt elkezdené
Ha sorszűrőket és oszlopmaszkokat szeretne hozzáadni a táblákhoz, a következőkkel kell rendelkeznie:
- A Unity Cataloghoz engedélyezett munkaterület.
- A Unity Catalogban regisztrált függvény. Ez a függvény lehet egy SQL UDF, egy Python vagy Scala UDF, amely a Unity Katalógusban van regisztrálva, és egy SQL UDF-be van csomagolva. További információ: Mik azok a felhasználó által definiált függvények (UDF-ek)?, Oszlopmaszk záradékés ROW FILTER záradék.
A következő követelményeknek is meg kell felelnie:
- Ha olyan függvényt szeretne hozzárendelni egy táblához, amely sorszűrőket vagy oszlopmaszkokat ad hozzá, rendelkeznie kell a
EXECUTE
jogosultsággal a függvényen,USE SCHEMA
a sémán ésUSE CATALOG
a szülőkatalóguson. - Ha új tábla létrehozásakor szűrőket vagy maszkokat ad hozzá, rendelkeznie kell a
CREATE TABLE
séma jogosultságával. - Ha szűrőket vagy maszkokat ad hozzá egy meglévő táblához, akkor a tábla tulajdonosának kell lennie.
A sorszűrőkkel vagy oszlopmaszkokkal rendelkező táblák eléréséhez a számítási erőforrásnak meg kell felelnie az alábbi követelmények egyikének:
- EGY SQL-raktár.
- Megosztott hozzáférési mód a Databricks Runtime 12.2 LTS vagy újabb verzióján.
- Egyfelhasználós hozzáférési mód a Databricks Runtime 15.4 LTS vagy újabb verzióján.
A Databricks Runtime 15.3-on vagy alatta nem olvashat sorszűrőket vagy oszlopmaszkokat egyfelhasználós számítással.
A Databricks Runtime 15.4 LTS és újabb verzióiban biztosított adatszűrés előnyeinek kihasználásához azt is ellenőriznie kell, hogy a munkaterület engedélyezve van-e a kiszolgáló nélküli számításhoz, mert a sorszűrőket és oszlopmaszkokat támogató adatszűrési funkciók kiszolgáló nélküli számításon futnak. Előfordulhat, hogy a kiszolgáló nélküli számítási erőforrásokért fizetnie kell, ha az egyfelhasználós hozzáférési módként konfigurált számítással olvas sorszűrőket vagy oszlopmaszkokat használó táblákat. Lásd: Részletes hozzáférés-vezérlés az egyfelhasználós számításban.
Sorszűrő alkalmazása
Sorszűrő létrehozásához írjon egy függvényt (UDF) a szűrőszabályzat meghatározásához, majd alkalmazza azt egy táblára. Minden tábla csak egy sorszűrővel rendelkezhet. A sorszűrők nulla vagy több bemeneti paramétert fogadnak el, ahol minden bemeneti paraméter a megfelelő tábla egy oszlopához kapcsolódik.
Sorszűrőt a Catalog Explorer vagy az SQL parancsokkal alkalmazhat. A Katalóguskezelő utasításai feltételezik, hogy már létrehozott egy függvényt, és regisztrálta azt a Unity Catalogban. Az SQL-utasítások példákat tartalmaznak egy sorszűrő függvény létrehozására és táblára való alkalmazására.
Katalóguskezelő
- Az Azure Databricks-munkaterületen kattintson a Katalógus elemre
.
- Tallózással vagy kereséssel keresse meg a szűrni kívánt táblát.
- Az Áttekintés lapon kattintson a Sorszűrő: Szűrő hozzáadása elemre.
- A Sorszűrő hozzáadása párbeszédpanelen válassza ki a szűrőfüggvényt tartalmazó katalógust és sémát, majd válassza ki a függvényt.
- A kibontott párbeszédpanelen tekintse meg a függvénydefiníciót, és válassza ki a függvényutasítás oszlopainak megfelelő táblázatoszlopokat.
- Kattintson a Hozzáadás gombra.
Ha el szeretné távolítani a szűrőt a táblából, kattintson az fx Sor szűrőre, majd az Eltávolítás gombra.
SQL
Sorszűrő létrehozásához, majd meglévő táblához való hozzáadásához használja CREATE FUNCTION
, és alkalmazza a függvényt ALTER TABLE
használatával. A függvényeket akkor is alkalmazhatja, ha táblázatot hoz létre a használatával CREATE TABLE
.
A sorszűrő létrehozása:
CREATE FUNCTION <function_name> (<parameter_name> <parameter_type>, ...) RETURN {filter clause whose output must be a boolean};
Alkalmazza a sorszűrőt egy táblára egy oszlopnévvel:
ALTER TABLE <table_name> SET ROW FILTER <function_name> ON (<column_name>, ...);
További szintaxisbeli példák:
Alkalmazza a sorszűrőt egy táblára egy függvényparaméternek megfelelő állandó literál használatával:
ALTER TABLE <table_name> SET ROW FILTER <function_name> ON (<constant_literal>, ...);
Sorszűrő eltávolítása egy táblából:
ALTER TABLE <table_name> DROP ROW FILTER;
Sorszűrő módosítása:
Run a DROP FUNCTION statement to drop the existing function, or use CREATE OR REPLACE FUNCTION to replace it.
Sorszűrő törlése:
ALTER TABLE <table_name> DROP ROW FILTER; DROP FUNCTION <function_name>;
Feljegyzés
A függvény elvetése előtt el kell végeznie
ALTER TABLE ... DROP ROW FILTER
a parancsot. Ha nem, a tábla elérhetetlen állapotban lesz.Ha a táblázat ily módon elérhetetlenné válik, módosítsa a táblát, és az árva sorszűrő hivatkozását a következővel
ALTER TABLE <table_name> DROP ROW FILTER;
ejtse el:
Lásd még ROW FILTER záradék.
Példák sorszűrőre
Ez a példa létrehoz egy felhasználó által definiált SQL-függvényt, amely a csoport admin
tagjaira vonatkozik a régióban US
.
Amikor ezt a mintafüggvényt alkalmazza a sales
táblára, a admin
csoport tagjai hozzáférhetnek a tábla összes rekordjaihoz. Ha a függvényt nem rendszergazda hívja meg, a RETURN_IF
feltétel meghiúsul, és a region='US'
kifejezés kiértékelésre kerül, a tábla szűrésével csak a US
régió rekordjait jeleníti meg.
CREATE FUNCTION us_filter(region STRING)
RETURN IF(IS_ACCOUNT_GROUP_MEMBER('admin'), true, region='US');
Alkalmazza a függvényt egy táblára sorszűrőként. A tábla későbbi lekérdezései ezután visszaadják a sales
sorok egy részhalmazát.
CREATE TABLE sales (region STRING, id INT);
ALTER TABLE sales SET ROW FILTER us_filter ON (region);
Tiltsa le a sorszűrőt. A jövőbeli felhasználói lekérdezések a sales
táblából, majd a tábla összes sorát visszaadják.
ALTER TABLE sales DROP ROW FILTER;
Hozzon létre egy táblázatot, amelyben a függvény sorszűrőként van alkalmazva az CREATE TABLE
utasítás részeként. A jövőbeli lekérdezések a sales
táblából, majd mindegyik a sorok egy részhalmazát adja vissza.
CREATE TABLE sales (region STRING, id INT)
WITH ROW FILTER us_filter ON (region);
Oszlopmaszk alkalmazása
Oszlopmaszk alkalmazásához hozzon létre egy függvényt (UDF), és alkalmazza azt egy táblaoszlopra.
Oszlopmaszkot a Catalog Explorer vagy az SQL parancsokkal alkalmazhat. A Katalóguskezelő utasításai feltételezik, hogy már létrehozott egy függvényt, és regisztrálta azt a Unity Catalogban. Az SQL-utasítások példákat tartalmaznak egy oszlopmaszk-függvény létrehozására és táblázatoszlopra való alkalmazására.
Katalóguskezelő
- Az Azure Databricks-munkaterületen kattintson a Katalógus elemre
.
- Tallózással vagy kereséssel keresse meg a táblát.
-
Az Áttekintés lapon keresse meg az oszlopmaszkot alkalmazni kívánt sort, és kattintson a
Maszk szerkesztése ikonra.
- Az Oszlopmaszk hozzáadása párbeszédpanelen válassza ki a szűrőfüggvényt tartalmazó katalógust és sémát, majd válassza ki a függvényt.
- A kibontott párbeszédpanelen tekintse meg a függvénydefiníciót. Ha a függvény a maszkolt oszlopon kívül más paramétereket is tartalmaz, jelölje ki azokat a táblaoszlopokat, amelyekbe a további függvényparamétereket el szeretné helyezni.
- Kattintson a Hozzáadás gombra.
Ha el szeretné távolítani az oszlopmaszkot a táblázatból, kattintson az fx oszlopmaszkra a táblázat sorában, és kattintson az Eltávolítás gombra.
SQL
Oszlopmaszk létrehozásához és meglévő táblaoszlophoz való hozzáadásához használja CREATE FUNCTION
és alkalmazza a maszkoló függvényt a használatával ALTER TABLE
. A függvényeket akkor is alkalmazhatja, ha táblázatot hoz létre a használatával CREATE TABLE
.
A maszkoló függvényt használhatja SET MASK
. A záradékon MASK
belül használhatja az Azure Databricks beépített futtatókörnyezeti függvényeit, vagy meghívhat más, felhasználó által definiált függvényeket. A gyakori használati esetek közé tartozik a függvényt futtató invokáló felhasználó identitásának vizsgálata az általuk használt current_user( )
csoportok használatával is_account_group_member( )
vagy lekérésével. További részletekért lásd az Oszlopmaszk záradékot és a beépített függvényeket.
Oszlopmaszk létrehozása:
CREATE FUNCTION <function_name> (<parameter_name> <parameter_type>, ...) RETURN {expression with the same type as the first parameter};
Az oszlopmaszk alkalmazása egy meglévő tábla egyik oszlopára:
ALTER TABLE <table_name> ALTER COLUMN <col_name> SET MASK <mask_func_name> USING COLUMNS <additional_columns>;
További szintaxisbeli példák:
Alkalmazza az oszlopmaszkot egy meglévő tábla egyik oszlopára egy függvényparaméternek megfelelő állandó literál használatával:
ALTER TABLE <table_name> ALTER COLUMN <col_name> SET MASK <mask_func_name> USING COLUMNS (<constant_name>, ...);
Oszlopmaszk eltávolítása egy tábla egyik oszlopából:
ALTER TABLE <table_name> ALTER COLUMN <column where mask is applied> DROP MASK;
Módosítsa az oszlopmaszkot,
DROP
a meglévő függvényt, vagy használja aCREATE OR REPLACE TABLE
.Oszlopmaszk törlése:
ALTER TABLE <table_name> ALTER COLUMN <column where mask is applied> DROP MASK; DROP FUNCTION <function_name>;
Feljegyzés
A függvény elvetése előtt el kell végeznie a
ALTER TABLE
parancsot, vagy a tábla elérhetetlen állapotban lesz.Ha a táblázat ily módon elérhetetlenné válik, módosítsa a táblát, és dobja el az árva maszkra mutató hivatkozást
ALTER TABLE <table_name> ALTER COLUMN <column where mask is applied> DROP MASK;
.
Példák oszlopmaszkra
Ebben a példában egy felhasználó által definiált függvényt hoz létre, amely maszkolja az ssn
oszlopot, így csak a csoporttag felhasználók tekinthetik meg az HumanResourceDept
oszlop értékeit.
CREATE FUNCTION ssn_mask(ssn STRING)
RETURN CASE WHEN is_member('HumanResourceDept') THEN ssn ELSE '***-**-****' END;
Az új függvény alkalmazása oszlopmaszkként egy táblára. Az oszlopmaszkot a táblázat létrehozásakor vagy később is hozzáadhatja.
--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;
A táblában lévő lekérdezések maszkolt oszlopértékeket ad ssn
vissza, ha a lekérdezést végző felhasználó nem tagja a HumanResourceDept
csoportnak:
SELECT * FROM users;
James ***-**-****
Ha le szeretné tiltani az oszlopmaszkot, hogy a lekérdezések az oszlop eredeti értékeit ssn
adja vissza:
ALTER TABLE users ALTER COLUMN ssn DROP MASK;
Hozzáférés-vezérlési lista létrehozása leképezési táblák használatával
A sorszintű biztonság érdekében fontolja meg egy leképezési tábla (vagy hozzáférés-vezérlési lista) meghatározását. Egy átfogó leképezési tábla kódolja, hogy az eredeti tábla mely adatsorai érhetők el bizonyos felhasználók vagy csoportok számára. A leképezési táblák azért hasznosak, mert egyszerű integrációt biztosítanak a ténytáblákkal közvetlen illesztéseken keresztül.
Ez a módszertan számos olyan használati esetet kezel, amely egyéni követelményeket is tartalmaz. Ide sorolhatóak például a kövekezők:
- Korlátozásokat vezet be a bejelentkezett felhasználó alapján, miközben különböző szabályokat alkalmaz adott felhasználói csoportokra.
- Bonyolult hierarchiák, például szervezeti struktúrák létrehozása, amelyek különböző szabálykészleteket igényelnek.
- Összetett biztonsági modellek replikálása külső forrásrendszerekből.
A leképezési táblák alkalmazásával végrehajthatja ezeket a kihívást jelentő forgatókönyveket, és robusztus sorszintű és oszlopszintű biztonsági implementációkat biztosíthat.
Példák leképezési táblázatra
Térképtáblázat használatával ellenőrizze, hogy az aktuális felhasználó szerepel-e a listában:
USE CATALOG main;
Új leképezési tábla létrehozása:
DROP TABLE IF EXISTS valid_users;
CREATE TABLE valid_users(username string);
INSERT INTO valid_users
VALUES
('fred@databricks.com'),
('barney@databricks.com');
Új szűrő létrehozása:
Feljegyzés
Minden szűrő a definiáló jogosultságaival fut, kivéve a felhasználói környezetet ellenőrző függvényeket (például azokat CURRENT_USER
és IS_MEMBER
függvényeket), amelyek meghívóként futnak.
Ebben a példában a függvény ellenőrzi, hogy az aktuális felhasználó szerepel-e a valid_users
táblában. Ha a felhasználó megtalálható, a függvény igaz értéket ad vissza.
DROP FUNCTION IF EXISTS row_filter;
CREATE FUNCTION row_filter()
RETURN EXISTS(
SELECT 1 FROM valid_users v
WHERE v.username = CURRENT_USER()
);
Az alábbi példa a tábla létrehozása során alkalmazza a sorszűrőt. A szűrőt később egy utasítással ALTER TABLE
is hozzáadhatja. Ha egy egész táblára alkalmazza, használja a ON ()
szintaxist. Egy adott sorhoz használja a 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);
Válasszon ki adatokat a táblából. Ez csak akkor adja vissza az adatokat, ha a felhasználó szerepel a valid_users
táblában.
SELECT * FROM data_table;
Hozzon létre egy olyan leképezési táblát, amely olyan fiókokat tartalmaz, amelyeknek mindig hozzáféréssel kell rendelkezniük a tábla összes sorának megtekintéséhez, függetlenül az oszlopértéktől:
CREATE TABLE valid_accounts(account string);
INSERT INTO valid_accounts
VALUES
('admin'),
('cstaff');
Most hozzon létre egy SQL UDF-t, amely true
ad vissza, ha a sor összes oszlopának értéke ötnél kisebb, vagy ha a beolvasási felhasználó tagja a fenti leképezési táblázatnak.
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));
Végül alkalmazza az SQL UDF-et a táblára sorszűrőként:
ALTER TABLE data_table SET ROW FILTER row_filter_small_values ON (x, y, z);
Támogatás és korlátozások
A sorszűrők és az oszlopmaszkok nem támogatottak az Azure Databricks összes funkciójával vagy az összes számítási erőforrással. Ez a szakasz a támogatott funkciókat és korlátozásokat sorolja fel.
Támogatott funkciók és formátumok
A támogatott funkciók listája nem teljes. Egyes elemek azért vannak felsorolva, mert nem támogatottak a nyilvános előzetes verzióban.
Az SQL-számítási feladatokhoz készült Databricks SQL- és Databricks-jegyzetfüzetek támogatottak.
A jogosultságokkal rendelkező
MODIFY
felhasználók DML-parancsai támogatottak. A szűrők és maszkokUPDATE
ésDELETE
utasítások által beolvasott adatokra vannak alkalmazva, és nem vonatkoznak az írott adatokra (beleértve aINSERT
).Támogatott adatformátumok:
- Delta és Parquet felügyelt és külső táblákhoz.
- Több más adatformátum a Unity Katalógusban a Lakehouse Federation használatával regisztrált külföldi táblákhoz.
A szabályzatparaméterek tartalmazhatnak állandó kifejezéseket (sztringek, numerikus, intervallumok, logikai értékek, nullok).
Az SQL, Python és Scala UDF-ek sorszűrő- vagy oszlopmaszkfüggvényekként támogatottak, ha regisztrálva vannak a Unity Katalógusban. A Python és a Scala UDF-eket SQL UDF-be kell csomagolni.
Oszlopmaszkokra vagy sorszűrőkre hivatkozó táblákon létrehozhat nézeteket, de oszlopmaszkokat vagy sorszűrőket nem adhat hozzá a nézetekhez.
A Delta Lake változásadatcsatornái akkor támogatottak, ha a séma kompatibilis a céltáblára vonatkozó sorszűrőkkel és oszlopmaszkokkal.
A külföldi táblák támogatottak.
A táblák mintavételezése támogatott.
MERGE
az utasítások akkor támogatottak, ha a forrástáblák, a céltáblák vagy mindkettő sorszűrőket és oszlopmaszkokat használ. Ide tartoznak az egyszerű allekérdezéseket tartalmazó, sorrend szűrő függvényeket tartalmazó táblák. A korlátozások a következő szakaszban találhatók.A Databricks SQL materializált nézetei és a Databricks SQL streamelési táblázatai támogatják a sorszűrőket és az oszlopmaszkokat (nyilvános előzetes verzió):
- Sorszűrőket és oszlopmaszkokat is hozzáadhat a Databricks SQL materializált nézetéhez vagy streamelőtábláihoz. A maszkok hozzáadását deklaratív módon kell elvégezni a materializált nézet vagy a streamelő tábla definiálásakor. Lásd: CREATE MATERIALIZED VIEW vagy CREATE STREAMING TABLE.
- A Databricks SQL materializált nézeteit vagy streamelő táblázatait sorszűrőket és oszlopmaszkokat tartalmazó táblákon definiálhatja.
A Delta Live Tablesben deklarált és közzétett materializált nézetek és streamtáblák támogatják a sorszűrőket és az oszlopmaszkokat (nyilvános előzetes verzió):
- Sorszűrőket és oszlopmaszkokat adhat hozzá a Delta Live Tables materializált nézetéhez vagy streamelő tábláihoz.
- A Delta Live Tables materializált nézeteit vagy streamelő táblázatait sorszűrőket és oszlopmaszkokat tartalmazó táblákon definiálhatja.
Lásd: Táblázatok közzététele sorszűrőkkel és oszlopmaszkokkal.
teljesítményjavaslatok
A sorszűrők és az oszlopmaszkok úgy szabályozzák az adatok láthatóságát, hogy a felhasználók a szűrési és maszkolási műveletek előtt nem tudják megtekinteni az alaptáblák értékeinek tartalmát. A gyakori használati esetekben a lekérdezésekre adott válaszként jól teljesítenek. A kevésbé gyakori alkalmazásokban, ahol a lekérdezési motornak választania kell a lekérdezési teljesítmény optimalizálása és a szűrt/maszkolt értékekből származó információk kiszivárgása elleni védelem között, mindig a biztonságos döntést fogja hozni a lekérdezési teljesítményre gyakorolt hatás rovására. A teljesítményre gyakorolt hatás minimalizálása érdekében alkalmazza az alábbi javaslatokat:
- Egyszerű szabályzatfüggvények használata: kevesebb kifejezéssel rendelkező szabályzatfüggvények gyakran jobban teljesítenek, mint az összetettebb kifejezések. Ne használjon leképezési táblákat és kifejezés-allekérdezéseket az egyszerű CASE függvények érdekében.
- Csökkentse a függvényargumentumok számát: Az Azure Databricks nem tudja optimalizálni a szabályzatfüggvény argumentumaiból eredő forrástáblára mutató oszlophivatkozásokat, még akkor sem, ha ezeket az oszlopokat nem használják a lekérdezésben. Kevesebb argumentummal használjuk a szabályzatfüggvényeket, mert így a lekérdezések ezekből a táblákból jobban teljesítenek majd.
-
Kerülje a túl sok ÉS kötőjellel rendelkező sorszűrők hozzáadását: Mivel minden tábla legfeljebb egy sorszűrő hozzáadását támogatja, gyakori módszer több kívánt házirendfüggvény
AND
kombinálása. Az egyes konjunktúrák esetében azonban megnő az esélye annak, hogy a konjunktúrák olyan összetevőket tartalmaznak, amelyek a táblázat más részeiben szerepelnek, és amelyek hatással lehetnek a teljesítményt (mint amilyenek például a leképezési táblák). A teljesítmény javítása érdekében használjon kevesebb kötőszót. -
Olyan determinisztikus kifejezéseket használjon, amelyek nem képesek hibákat okozni a táblaszabályzatokban és a táblákból származó lekérdezésekben: Egyes kifejezések hibát okozhatnak, ha a megadott bemenetek érvénytelenek, például az ANSI-osztás. Ilyen esetekben az SQL-fordító nem küldhet le olyan műveleteket a lekérdezési tervben túl messze lévő kifejezésekkel (például szűrőkkel), hogy elkerülje az olyan hibák lehetőségét, mint a "nullával való osztás", amelyek a szűrés és/vagy maszkolási műveletek előtt információkat fednek fel az értékekről. Olyan determinisztikus kifejezéseket használjon, amelyek soha nem okoznak hibákat, például
try_divide
ebben a példában. - Teszt lekérdezések futtatása a táblán a teljesítmény méréséhez: Olyan reális lekérdezéseket hozhat létre, amelyek a táblához várt számítási feladatot képviselik sorszűrőkkel és/vagy oszlopmaszkokkal, és mérik a teljesítményt. Apró módosításokat végezhet a szabályzatfüggvényeken, és megfigyelheti azok hatásait, amíg el nem éri a megfelelő egyensúlyt a szűrési és maszkoló logika teljesítménye és kifejezőképessége között.
Korlátozások
- A Databricks Runtime 12.2 LTS alatti verziói nem támogatják a sorszűrőket és az oszlopmaszkokat. Ezek a futtatókörnyezetek biztonságosan meghiúsulnak, ami azt jelenti, hogy ha a táblákat a futtatókörnyezetek nem támogatott verzióiból próbálja elérni, a rendszer nem ad vissza adatokat.
- A deltamegosztás nem működik sorszintű biztonsági vagy oszlopmaszkokkal.
- A nézetre nem alkalmazhat sorszintű biztonsági vagy oszlopmaszkokat.
- Az időutazás nem működik sorszintű biztonsági vagy oszlopmaszkokkal.
- A házirendeket tartalmazó táblák fájljaihoz való elérési útalapú hozzáférés nem támogatott.
- A körkörös függőségekkel rendelkező sorszűrő- vagy oszlopmaszk-szabályzatok nem támogatottak.
- A mély és a sekély klónok nem támogatottak.
-
MERGE
utasítások nem támogatják a sorszűrővel vagy oszlopmaszkokkal rendelkező táblákat, amelyek beágyazásokat, aggregációkat, ablakokat, korlátokat vagy nem determinisztikus függvényeket tartalmaznak. - A Delta Lake API-k nem támogatottak.
Egyfelhasználós számítási korlátozások
A Databricks Runtime 15.3-on vagy az alatta lévő egyetlen felhasználói számítási erőforrásból nem férhet hozzá sorszűrőkkel vagy oszlopmaszkokkal rendelkező táblákhoz. A Databricks Runtime 15.4 LTS vagy újabb verziójában használhatja az egyfelhasználós hozzáférési módot, ha a munkaterülete engedélyezve van a kiszolgáló nélküli számításhoz. További információ: Részletes hozzáférés-vezérlés az egyfelhasználós számításban.