Megosztás a következőn keresztül:


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 oszlopmaszkok lehetővé teszik, hogy egy maszkoló függvényt alkalmazzon egy tábla oszlopán. A maszkolási függvény a lekérdezés futásidejében működik, helyettesítve a céloszlop minden egyes hivatkozását 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 adják vissza, vagy elrejtsék a felhasználó, aki elindítja, identitása alapján. 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 elvont, csak olvasható 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 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 és USE 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-adattár.
  • Standard hozzáférési mód (korábban megosztott hozzáférési mód) a Databricks Runtime 12.2 LTS vagy újabb verzióján.
  • Dedikált hozzáférési mód (korábban 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 az alatta lévő dedikált számítással nem olvashat sorszűrőket vagy oszlopmaszkokat.

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 dedikált hozzáférési módként konfigurált számítást használ a sorszűrőket vagy oszlopmaszkokat használó táblák olvasásához. Lásd: finomhangolt hozzáférés-vezérlés dedikált számítási környezetben (korábban egyfelhasználós számítás).

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ő

  1. Az Azure Databricks-munkaterületen kattintson a Katalógus elemre Katalógus ikon.
  2. Tallózással vagy kereséssel keresse meg a szűrni kívánt táblát.
  3. Az Áttekintés lapon kattintson a Sorszűrő: Szűrő hozzáadása elemre.
  4. 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.
  5. 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.
  6. 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 TABLEhasználatával. A függvényeket akkor is alkalmazhatja, ha táblázatot hoz létre a használatával CREATE TABLE.

  1. A sorszűrő létrehozása:

    CREATE FUNCTION <function_name> (<parameter_name> <parameter_type>, ...)
    RETURN {filter clause whose output must be a boolean};
    
  2. 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ő

  1. Az Azure Databricks-munkaterületen kattintson a Katalógus elemre Katalógus ikon.
  2. Tallózással vagy kereséssel keresse meg a táblát.
  3. Az Áttekintés lapon keresse meg az oszlopmaszkot alkalmazni kívánt sort, és kattintson a Szerkesztés ikon Maszk szerkesztése ikonra.
  4. Az Oszlopmaszk hozzáadása párbeszédpanelen válassza ki azt a katalógust és sémát, amely a szűrőfüggvényt tartalmazza, majd válassza ki a függvényt.
  5. 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.
  6. 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ény alkalmazásához használja a SET MASK-t. 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 current_user( ) használatával, vagy azoknak a csoportoknak a lekérése, amelyeknek tagjai is_account_group_member( ) használatával. További információ: Oszlop mask szakasz és Beépített függvények.

  1. Oszlopmaszk létrehozása:

    CREATE FUNCTION <function_name> (<parameter_name> <parameter_type>, ...)
    RETURN {expression with the same type as the first parameter};
    
  2. 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, vagy DROP a meglévő függvényt, vagy használja a CREATE OR REPLACE TABLE-t.

  • Oszlopmaszk törlése:

    ALTER TABLE <table_name> ALTER COLUMN <column where mask is applied> DROP MASK;
    DROP FUNCTION <function_name>;
    

    Megjegyzé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 távolítsa el a hátrahagyott maszk hivatkozását ALTER TABLE <table_name> ALTER COLUMN <column where mask is applied> DROP MASK;.

Az oszlopmaszkok példái

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_account_group_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án történő lekérdezés most maszkolt ssn oszlopértékeket ad vissza, ha a lekérdezést végző felhasználó nem tagja a HumanResourceDept csoportnak.

SELECT * FROM users;
  James  ***-**-****

Ha ki szeretné kapcsolni az oszlopmaszkot, hogy a lekérdezések az oszlop eredeti értékeit ssn adják 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övetkező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.

Leképezési táblázat példák

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_ACCOUNT_GROUP_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 maszkok UPDATE és DELETE utasítások által beolvasott adatokra vannak alkalmazva, és nem vonatkoznak az írott adatokra (beleértve a INSERT).
  • Támogatott adatformátumok:
    • Delta és Parquet a 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ályzat paraméterei tartalmazhatnak állandó kifejezéseket (karakterláncok, számértékek, intervallumok, logikai értékek, null értékek).
  • 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.
  • Külföldi táblák támogatottak.
  • A táblamintavételezés 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 DLT támogatási sorszűrőiben vagy oszlopmaszkjaiban (nyilvános előzetes verzió) deklarált és közzétett materializált nézetek és streamtáblák:

    • Sorszűrőket és oszlopmaszkokat is hozzáadhat egy DLT materializált nézethez vagy streamelő táblához.
    • A DLT 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. Kerülje a leképezési táblák és kifejezés-allekérdezések használatát, és inkább használjon egyszerű CASE függvényeket.
  • 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 feltétellel 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ázirendi függvény AND kombinálása. Azonban minden egyes konjunktív esetében nő az esélye annak, hogy olyan összetevőket tartalmazzon, amelyek a táblázat más részeiben is szerepelnek, és hatással lehetnek a teljesítményre (mint 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 sikertelenek lesznek, ami azt jelenti, hogy ha a táblákat ezeknek a futtatókörnyezeteknek egy nem támogatott verziójából próbálja elérni, akkor nem fog adatot kapni.
  • 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.
  • Az eredeti szabályzatokra visszavezető körkörös függőségekkel rendelkező sorszűrő- vagy oszlopmaszk-szabályok 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.

dedikált hozzáférési mód korlátozása

A Databricks Runtime 15.3-on vagy az alatta lévő dedikált hozzáférésű számítási erőforrásból nem férhet hozzá sorszűrőkkel vagy oszlopmaszkokkal rendelkező táblákhoz. Dedikált hozzáférési módot használhat a Databricks Runtime 15.4 LTS vagy újabb verziójában, ha a munkaterület engedélyezve van a kiszolgáló nélküli számítási. További információ: Részletes hozzáférés-vezérlés dedikált számítási erőforrásokon (korábbi nevén egyfelhasználós számítás).