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


MATERIALIZÁLT NÉZET LÉTREHOZÁSA

A következőkre vonatkozik: jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL

Fontos

Ez a funkció a nyilvános előzetes verzióban érhető el.

A materializált nézet olyan nézet , ahol előre lefordított eredmények érhetők el a lekérdezéshez, és frissíthetők a bemenet változásainak megfelelően. Minden alkalommal, amikor egy materializált nézet frissül, a rendszer újraszámítja a lekérdezési eredményeket, hogy tükrözze a felsőbb rétegbeli adathalmazok változásait. Minden materializált nézetet egy DLT-folyamat készít. A materializált nézeteket manuálisan, ütemezés szerint, vagy annak a DLT-folyamatnak az ütemezésével frissítheti, amelyben azok találhatók.

Syntax

CREATE MATERIALIZED VIEW [IF NOT EXISTS]
  view_name
  [ column_list ]
  [ view_clauses ]
  AS query

column_list
   ( { column_name [ MASK clause ] [...] } [, ...] )

view_clauses
  { PARTITIONED BY (col [, ...]) |
    COMMENT view_comment |
    TBLPROPERTIES clause |
    SCHEDULE [ REFRESH ] CRON cron_string [ AT TIME ZONE timezone_id ] |
    WITH { ROW FILTER clause } } [...]

Paraméterek

  • HA NEM LÉTEZIK

    Létrehozza a nézetet, ha nem létezik. Ha már létezik ilyen nevű nézet, a rendszer figyelmen kívül hagyja az CREATE VIEW utasítást.

    Legfeljebb egyet IF NOT EXISTS OR REFRESHvagy egyet adhat meg.

  • view_name

    Az újonnan létrehozott nézet neve. A teljes nézetnévnek egyedinek kell lennie.

  • column_list

    Igény szerint címkézheti a nézet lekérdezési eredményében szereplő oszlopokat. Ha oszloplistát ad meg, az oszlop aliasainak számának meg kell egyeznie a lekérdezésben szereplő kifejezések számával. Ha nincs megadva oszloplista, az aliasok a nézet törzséből származnak.

    • column_name

      Az oszlopneveknek egyedinek kell lenniük, és le kell képezniük a lekérdezés kimeneti oszlopait.

    • MASZK záradék

      Fontos

      Ez a funkció a nyilvános előzetes verzióban érhető el.

      Oszlopmaszk-függvényt ad hozzá a bizalmas adatok anonimizálásához. Az oszlop minden jövőbeli lekérdezése megkapja a függvény kiértékelésének eredményét az oszlopon az oszlop eredeti értéke helyett. Ez hasznos lehet részletes hozzáférés-vezérlési célokra, amelyek során a függvény megvizsgálhatja az invokáló felhasználó identitását és/vagy csoporttagságát annak eldöntéséhez, hogy újra ki kívánja-e használni az értéket.

  • view_clauses

    Opcionálisan megadhatja a particionálást, a megjegyzéseket, a felhasználó által definiált tulajdonságokat és az új materializált nézet frissítési ütemezését. Minden al záradék csak egyszer adható meg.

    • PARTICIONÁLT

      A tábla oszlopainak választható listája a tábla particionálásához.

    • COMMENT view_comment

      A STRING táblázatot leíró literál.

    • TBLPROPERTIES

      Igény szerint beállíthat egy vagy több felhasználó által definiált tulajdonságot.

    • SCHEDULE [ REFRESH ] CRON cron_string [ AT TIME ZONE timezone_id ]

      Ha meg van adva, ütemezi a streamelési táblát vagy a materializált nézetet, hogy az adatokat a megadott kvarc cron ütemezéssel frissítse. Csak time_zone_values fogadunk el. AT TIME ZONE LOCAL nem támogatott. Ha AT TIME ZONE hiányzik, a munkamenet időzónája lesz használatban. Ha AT TIME ZONE hiányzik, és a munkamenet időzónája nincs beállítva, hibaüzenet jelenik meg. SCHEDULE szemantikailag egyenértékű a SCHEDULE REFRESH.

      A szintaxis nem használható a SCHEDULE Delta Live Tables folyamatdefiníciójában.

    • WITH ROW FILTER záradék

      Fontos

      Ez a funkció a nyilvános előzetes verzióban érhető el.

      Sorszűrő függvényt ad hozzá a táblához. A tábla minden jövőbeli lekérdezése megkapja annak a sornak a részhalmazát, amelynek a függvénye igaz logikai értéket ad ki. Ez hasznos lehet részletes hozzáférés-vezérlési célokra, amelyek során a függvény megvizsgálhatja a meghívó felhasználó identitását és/vagy csoporttagságát, hogy eldöntse, szűr-e bizonyos sorokat.

  • AS-lekérdezés

    Olyan lekérdezés, amely alaptáblákból vagy más nézetekből hozza létre a nézetet.

Szükséges engedélyek

A materializált nézetet (MV) létrehozó felhasználó az MV tulajdonosa, és a következő engedélyekkel kell rendelkeznie:

  • SELECT jogosultság az MV által hivatkozott alaptáblák felett.
  • USE CATALOG jogosultságot a szülőkatalógusban és a USE SCHEMA szülőséma jogosultságát.
  • CREATE jogosultság az MV sémáján.

Ahhoz, hogy a felhasználó frissíthesse az MV-t, a következőre van szüksége:

  • USE CATALOG jogosultságot a szülőkatalógusban és a USE SCHEMA szülőséma jogosultságát.
  • Az MV tulajdonjoga vagy REFRESH jogosultsága az MV-n.
  • Az MV tulajdonosának jogosultsággal kell rendelkeznie az SELECT MV által hivatkozott alaptáblák felett.

Ahhoz, hogy a felhasználó le tudja kérdezni az MV-t, a következőt kell megkövetelnie:

  • USE CATALOG jogosultságot a szülőkatalógusban és a USE SCHEMA szülőséma jogosultságát.
  • SELECT jogosultságot a materializált nézethez.

Sorszűrők és oszlopmaszkok

Fontos

Ez a funkció a nyilvános előzetes verzióban érhető el.

A sorszűrők lehetővé teszik egy olyan függvény megadását, amely szűrőként van alkalmazva, amikor egy táblavizsgálat sorokat olvas be. Ezek a szűrők biztosítják, hogy a későbbi lekérdezések csak olyan sorokat adjanak vissza, amelyek esetében a szűrő predikátum értéke igaz.

Az oszlopmaszkok lehetővé teszik az oszlopok értékeinek maszkolását, amikor egy táblázat beolvassa a sorokat. Az oszlopot érintő minden jövőbeli lekérdezés megkapja a függvény kiértékelésének eredményét az oszlopon, lecserélve az oszlop eredeti értékét.

A sorszűrők és oszlopmaszkok használatáról további információt a bizalmas táblázatadatok szűrése sorszűrők és oszlopmaszkok használatával című témakörben talál.

Sorszűrők és oszlopmaszkok kezelése

A materializált nézetek sorszűrőit és oszlopmaszkjait az CREATE utasítással kell hozzáadni.

Működés

  • Frissítés definiálóként: Amikor az REFRESH MATERIALIZED VIEW utasítás materializált nézetet frissít, a sorszűrő függvények a definiáló jogosultságaival (táblatulajdonosként) futnak. Ez azt jelenti, hogy a táblafrissítés a materializált nézetet létrehozó felhasználó biztonsági környezetét használja.
  • Lekérdezés: Bár a legtöbb szűrő a definiáló jogosultságaival fut, a felhasználói környezetet ellenőrző függvények (például CURRENT_USER és IS_MEMBER) kivételek. Ezek a függvények meghívóként futnak. Ez a megközelítés a felhasználóspecifikus adatbiztonságot és hozzáférés-vezérlést kényszeríti ki az aktuális felhasználó kontextusa alapján.
  • Amikor sorszűrőket és oszlopmaszkokat tartalmazó forrástáblákon hoz létre materializált nézeteket, a materializált nézet frissítése mindig teljes frissítés. A teljes frissítés a forrásban elérhető összes adatot a legújabb definíciókkal dolgozza fel újra. Ez biztosítja, hogy a forrástáblák biztonsági szabályzatai a legfrissebb adatokkal és definíciókkal legyenek kiértékelve és alkalmazva.

Megfigyelhetőség

INFORMATION_SCHEMAA Katalóguskezelővel DESCRIBE EXTENDEDvagy a Katalóguskezelővel megvizsgálhatja azokat a meglévő sorszűrőket és oszlopmaszkokat, amelyek egy adott materializált nézetre vonatkoznak. Ez a funkció lehetővé teszi a felhasználók számára az adathozzáférési és védelmi intézkedések naplózását és felülvizsgálatát a materializált nézeteken.

Korlátozások

  • Ha egy null értékű oszlopon aggregátummal rendelkező sum materializált nézet az utolsó nem NULL értéket távolítja el az oszlopból – és így csak NULL az értékek maradnak az oszlopban –, akkor a materializált nézet eredményül kapott összesített értéke nem a nullát, hanem NULLa nullát adja vissza.
  • Az oszlophivatkozás nem igényel aliast. A nem oszlopos hivatkozási kifejezésekhez alias szükséges, ahogyan az alábbi példában is látható:
    • Megengedett: SELECT col1, SUM(col2) AS sum_col2 FROM t GROUP BY col1
    • Tilos: SELECT col1, SUM(col2) FROM t GROUP BY col1
  • A materializált nézetek nem támogatják az identitásoszlopokat és a helyettesítő kulcsokat.
  • A materializált nézetek nem támogatják az alkalmi OPTIMIZE és VACUUM a parancsokat. A karbantartás automatikusan történik.
  • A materializált nézetek nem támogatják az olyan táblakorlátozásokat, mint az PRIMARY KEY és FOREIGN KEYa .
  • A materializált nézetek nem támogatják az adatminőségi korlátozások meghatározására vonatkozó elvárásokat.

Példák

-- Create a materialized view if it doesn't exist
> CREATE MATERIALIZED VIEW IF NOT EXISTS subscribed_movies
  AS SELECT mo.member_id, mb.full_name, mo.movie_title
       FROM movies AS mo INNER JOIN members AS mb ON mo.member_id = mb.id;

-- Create and schedule a materialized view to be refreshed daily at midnight.
-- Note: All columns in a GROUP BY need to be explicitly aliased
> CREATE MATERIALIZED VIEW daily_sales
  COMMENT 'Daily sales numbers'
  SCHEDULE CRON '0 0 0 * * ? *'
  AS SELECT date AS date, sum(sales) AS sumOfSales
       FROM table1
       GROUP BY date;

-- Create a materialized view with a row filter and a column mask
> CREATE MATERIALIZED VIEW masked_view (
    id,
    name,
    region,
    ssn MASK catalog.schema.ssn_mask_fn
  )
  WITH ROW FILTER catalog.schema.us_filter_fn ON (region)
  AS SELECT id, name, region, ssn
       FROM employees;