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 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 őket 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ül hozzáfér 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.

Dinamikus nézeteket akkor használjon, ha átalakítási logikát, például szűrőket és maszkokat kell alkalmaznia az írásvédett táblákhoz, és ha a felhasználók számára elfogadható, hogy különböző neveket használva 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, vagy rendelkeznie kell a MODIFY táblában lévő jogosultságokkal és SELECT jogosultságokkal.

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. Ezért előfordulhat, hogy a kiszolgáló nélküli számítási erőforrásokért díjat kell fizetnie, ha egyfelhasználós számítással sorszűrőket vagy oszlopmaszkokat használó táblákat olvas. 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álva van 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

Ha egy sorszűrőt szeretne létrehozni, majd hozzáadni egy meglévő táblához, használja CREATE FUNCTION és alkalmazza a függvényt a következővel ALTER TABLE: . 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 a ROW FILTER záradékot.

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), majd alkalmazza 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álva van 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 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. Ha a függvény a maszkolt oszlopon kívül más paramétereket is tartalmaz, jelölje ki azokat a táblázatoszlopokat, amelyekre 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é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 is_account_group_member( )csoportok használatával current_user( ) 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.

  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;
    
  • Oszlopmaszk módosítása: A DROP meglévő függvényt vagy használja CREATE 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. A táblázat létrehozásakor vagy utána hozzáadhatja az oszlopmaszkot.

--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. Minden leképezési tábla egy átfogó leképezési táblázat, amely 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 hasznosnak bizonyul számos, egyéni követelményekkel rendelkező használati eset kezelésében. 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 ily módon történő alkalmazásával hatékonyan kezelheti 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 alkalmaz, használja a szintaxist ON () . Adott sor használata ON (row);eseté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);

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 akkor ad vissza true , ha a sor összes oszlopának értéke kisebb, mint öt, 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 a beolvasott UPDATE adatokra és DELETE utasításokra lesznek alkalmazva, és nem vonatkoznak az írott adatokra (beleértve azokat is INSERT).

  • 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, feltéve, hogy regisztrálva vannak a Unity Catalogban. 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 mindaddig támogatottak, amíg a séma kompatibilis a céltáblára alkalmazott 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 azok a sorok szűrőfüggvényei, amelyek egyszerű al lekérdezéseket tartalmaznak, de vannak korlátozások, amelyek 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. Ezt 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 or 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énnyel kapcsolatos szempontok

A sorszűrők és az oszlopmaszkok garantálják az adatok láthatóságát azáltal, hogy a szűrési és maszkolási műveletek előtt egyetlen felhasználó sem tekintheti meg az alaptáblák értékeinek tartalmát. A rendszer úgy van kialakítva, hogy a leggyakoribb használati esetekben a lekérdezésekre válaszul jól teljesítsen. A ritkábban használt 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 ellen, mindig a lekérdezési teljesítményre gyakorolt hatás rovására hoz biztonságos döntést. A teljesítményre gyakorolt hatás minimalizálása érdekében alkalmazza az alábbi alapelveket:

  • Egyszerű szabályzatfüggvények használata: A kevesebb kifejezéssel rendelkező szabályzatfüggvények általában 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 egyébként nem használják a lekérdezésben. A szabályzatfüggvények használata kevesebb argumentummal, mivel az ezekből a táblákból származó lekérdezések általában jobban fognak teljesíteni.
  • 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 ANDkombinálása. Az egyes kötőelemek esetében azonban annak az esélye, hogy a kötőhártya(ok) olyan összetevőket tartalmaznak, amelyek a tábla más részeiben szerepelnek, amelyek hatással lehetnek a teljesítményre (például a leképezési táblák használatára). 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 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ési és/vagy maszkolási műveletek előtt információkat fednek fel az értékekről. Olyan kifejezéseket használjon, amelyek determinisztikusak, és 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 az utasítások nem támogatják a beágyazott, aggregációkat, ablakokat, korlátokat vagy nem determinisztikus függvényeket tartalmazó sorszűrő szabályzatokkal rendelkező táblákat.
  • A Delta Lake API-k nem támogatottak.

Egyfelhasználós számítási korlátozások

A Databricks Runtime 15.3-ás vagy újabb verziójában egyetlen felhasználói számítási erőforrás sorszűrőivel vagy oszlopmaszkjaival rendelkező táblázat nem érhető el. 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.