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


Materializált nézetek használata a Databricks SQL-ben

Ez a cikk bemutatja, hogyan hozhat létre és frissíthet materializált nézeteket a Databricks SQL-ben a teljesítmény javítása és az adatfeldolgozási és elemzési számítási feladatok költségeinek csökkentése érdekében.

Mik azok a materializált nézetek?

A Databricks SQL-ben a materializált nézetek a Unity Catalog által felügyelt táblák, amelyek fizikailag tárolják a lekérdezések eredményeit. A standard nézetekkel ellentétben, amelyek igény szerint számítják ki az eredményeket, a materializált nézetek gyorsítótárazják az eredményeket, és frissítik őket az alapul szolgáló forrástáblák változásával – akár ütemezés szerint, akár automatikusan.

A materializált nézetek jól használhatók olyan adatfeldolgozási számítási feladatokhoz, mint a kinyerés, az átalakítás és a terhelés (ETL) feldolgozása. A materializált nézetek egyszerű, deklaratív módon dolgozzák fel az adatokat a megfelelőség, a javítások, az összesítések vagy az általános változásadat-rögzítés (CDC) érdekében. A materializált nézetek az alaptáblák tisztításával, bővítésével és denormalizálásával könnyen használható átalakításokat is lehetővé tesznek. A költséges vagy gyakran használt lekérdezések előzetes számításával a Materialized-nézetek csökkentik a lekérdezések késését és az erőforrás-felhasználást. Sok esetben növekményesen kiszámíthatják a forrástáblák változásait, így tovább javíthatják a hatékonyságot és a végfelhasználói élményt.

A materializált nézetek gyakori használati esetei a következők:

  • A BI irányítópult naprakészen tartása minimális végfelhasználói lekérdezési késedelemmel.
  • Az összetett ETL-vezénylés csökkentése egyszerű SQL-logikával.
  • Összetett, rétegzett átalakítások létrehozása.
  • Minden olyan használati eset, amely konzisztens teljesítményt igényel up-to-date megállapításokkal.

Amikor materializált nézetet hoz létre egy Databricks SQL Warehouse-ban, egy kiszolgáló nélküli folyamat jön létre a létrehozás feldolgozásához és a materializált nézetre való frissítéshez. A katalóguskezelőben figyelheti a frissítési műveletek állapotát. Lásd: Részletek megtekintése a következővel DESCRIBE EXTENDED: .

Követelmények

A Databricks SQL-ben létrehozott materializált nézetek kiszolgáló nélküli folyamattal vannak alátámasztva. A munkaterületnek támogatnia kell a kiszolgáló nélküli folyamatokat a funkció használatához.

A materializált nézetek létrehozásához vagy frissítéséhez szükséges követelmények:

  • Unity Catalog-kompatibilis pro- vagy kiszolgáló nélküli SQL-raktárt kell használnia.

  • A materializált nézet frissítéséhez az azt létrehozó munkaterületen kell lennie.

  • A Delta-táblákból származó materializált nézet növekményes frissítéséhez a forrástábláknak engedélyezve kell lenniük a sorkövetésnek.

  • A tulajdonosnak (a materializált nézetet létrehozó felhasználónak) a következő engedélyekkel kell rendelkeznie:

    • SELECT jogosultság a materializált nézet által hivatkozott alaptáblákon.
    • USE CATALOG és USE SCHEMA a katalógus és a séma jogosultságai, amelyek tartalmazzák a materializált nézet forrástábláit.
    • USE CATALOG és USE SCHEMA jogosultságok a célkatalógusra és a sémára a materializált nézethez.
    • CREATE TABLE és CREATE MATERIALIZED VIEW jogosultságok a materializált nézetet tartalmazó sémán.
  • A materializált nézet frissítéséhez rendelkeznie kell a REFRESH materializált nézet jogosultságával.

A materializált nézetek lekérdezésére vonatkozó követelmények:

  • A materializált nézet tulajdonosának kell lennie, vagy rendelkeznie kell SELECT-val a materializált nézeten, valamint USE SCHEMA-val és USE CATALOG-val a szülőkön.

  • A következő számítási erőforrások egyikét kell használnia:

    • SQL Warehouse

    • Lakeflow Spark Deklaratív adatcsatorna interfészei

    • Standard hozzáférési mód számítása (korábban megosztott hozzáférési mód)

    • Dedikált hozzáférési mód (korábbi nevén egyfelhasználós hozzáférési mód) a Databricks Runtime 15.4-ben és újabb verziókban, amennyiben a munkaterület engedélyezve van a kiszolgáló nélküli számításhoz. Lásd a részletes hozzáférés-vezérlést dedikált számítások esetén.

      Ha Ön a materializált nézet tulajdonosa, használhat dedikált hozzáférési módú számítási erőforrást, amely a Databricks Futtatókörnyezetet 14,3 és újabb verzió között futtatja.

A materializált nézetek használatára vonatkozó egyéb korlátozásokról a Korlátozások című témakörben olvashat.

Materializált nézet létrehozása

A Databricks SQL materializált nézetműveletei CREATE databricks SQL-raktárral hoznak létre és töltenek be adatokat a materializált nézetben. A materializált nézet létrehozása szinkron művelet, ami azt jelenti, hogy a CREATE MATERIALIZED VIEW parancs blokkolódik, amíg a materializált nézet létre nem jön, és a kezdeti adatbetöltés be nem fejeződik. A rendszer automatikusan létrehoz egy kiszolgáló nélküli folyamatot minden Databricks SQL materializált nézethez. A materializált nézet frissítésekor a folyamat feldolgozza a frissítést.

Materializált nézet létrehozásához használja az utasítást CREATE MATERIALIZED VIEW . Létrehozási utasítás elküldéséhez használja az SQL-szerkesztőt az Azure Databricks felhasználói felületén, a Databricks SQL CLI-ben vagy a Databricks SQL API-ban.

A materializált nézetet létrehozó felhasználó a materializált nézet tulajdonosa.

Az alábbi példa létrehozza a materializált nézetet mv1 az alaptáblából base_table1:

-- This query defines the materialized view:
CREATE OR REPLACE MATERIALIZED VIEW mv1
AS SELECT
  date,
  sum(sales) AS sum_of_sales
FROM
  base_table1
GROUP BY
  date;

Amikor az CREATE OR REPLACE MATERIALIZED VIEW utasítással materializált nézetet hoz létre, a kezdeti adatfrissítés és betöltés azonnal megkezdődik. Ez nem használja fel az SQL Warehouse számítását. Ehelyett egy kiszolgáló nélküli folyamatot használnak a létrehozáshoz és az azt követő frissítésekhez.

Az alaptáblán lévő oszlopbejegyzések automatikusan propagálásra kerülnek az új materializált nézetbe csak a létrehozás során. Ütemezés, táblakorlátozások vagy egyéb tulajdonságok hozzáadásához módosítsa a materializált nézetdefiníciót (az SQL-lekérdezést).

Ugyanez az SQL-utasítás frissíti a materializált nézetet, ha későbbi időpontot vagy ütemezést hív meg. Az ily módon végrehajtott frissítés bármely más frissítésként működik. További részletekért lásd : Materializált nézet frissítése.

A materializált nézetek konfigurálásával kapcsolatos további információkért lásd: Materializált nézetek konfigurálása a Databricks SQL-ben. A materializált nézet létrehozásának teljes szintaxisát lásd: CREATE MATERIALIZED VIEW. Az adatok különböző formátumokban és különböző helyekről való betöltéséről további információt az adatok betöltése folyamatokban című témakörben talál.

Adatok betöltése külső rendszerekből

A Databricks azt javasolja, hogy a Támogatott adatforrások esetében a Lakehouse Federation használatával töltsön be külső adatokat. A Lakehouse Federation által nem támogatott forrásokból származó adatok betöltéséről további információt az Adatformátum beállításai című témakörben talál. Az adatok betöltésével kapcsolatos általános információk, például példák: Adatok betöltése folyamatokban.

Bizalmas adatok elrejtése

A materializált nézetek használatával elrejtheti a bizalmas adatokat a táblához hozzáférő felhasználók elől. Ennek egyik módja a lekérdezés létrehozása anélkül, hogy az első körben ezeket az adatokat tartalmazná. A lekérdezési felhasználó engedélyei alapján azonban maszkolhatja az oszlopokat vagy szűrheti a sorokat. Elrejtheti például a tax_id csoportban HumanResourcesDeptnem szereplő felhasználók oszlopát. Ehhez használja a ROW FILTER és MASK szintaxist a materializált nézet létrehozása során. További információ: Sorszűrők és oszlopmaszkok.

Materializált nézet frissítése

A materializált nézet frissítése frissíti a nézetet, hogy az tükrözze az alaptábla frissítéskor történt legutóbbi módosításait.

A materializált nézet definiálásakor az CREATE OR REPLACE MATERIALIZED VIEW utasítás a nézet létrehozásához és az ütemezett frissítésekhez is használható. Az utasítással REFRESH MATERIALIZED VIEW frissítheti a materializált nézetet anélkül, hogy újra meg kellene adnia a lekérdezést. A parancs SQL-szintaxisáról és paramétereiről részletesen a REFRESH (MATERIALIZED VIEW vagy STREAMING TABLE) olvashat. A növekményesen frissíthető materializált nézetek típusairól további információt a materializált nézetek növekményes frissítése című témakörben talál.

Frissítési utasítás elküldéséhez használja az SQL-szerkesztőt az Azure Databricks felhasználói felületén, egy SQL-raktárhoz csatolt jegyzetfüzetet, a Databricks SQL CLI-t vagy a Databricks SQL API-t.

A tulajdonos és bármely felhasználó, aki megkapta a REFRESH jogosultságot a táblában, frissítheti a materializált nézetet.

Az alábbi példa frissíti a mv1 materializált nézetet:

REFRESH MATERIALIZED VIEW mv1;

A művelet alapértelmezés szerint szinkron, ami azt jelenti, hogy a parancs megáll, amíg a frissítési művelet be nem fejeződik. Aszinkron módon történő frissítéshez adja hozzá a kulcsszót.

REFRESH MATERIALIZED VIEW mv1 ASYNC;

Hogyan frissülnek a Databricks SQL materializált nézetei?

A materializált nézetek automatikusan kiszolgáló nélküli folyamatokat hoznak létre és használnak a frissítési műveletek feldolgozásához. A frissítést a folyamat felügyeli, a frissítést pedig a materializált nézet létrehozásához használt Databricks SQL Warehouse figyeli. A materializált nézetek ütemezés szerint futó folyamattal frissíthetők. A Databricks SQL által létrehozott materializált nézetek mindig aktivált módban futnak. Lásd: Indított és folyamatos folyamatmód.

A materializált nézetek két módszer egyikével frissülnek.

  • Növekményes frissítés – A rendszer kiértékeli a nézet lekérdezését, hogy azonosítsa az utolsó frissítés után történt változásokat, és csak az új vagy módosított adatokat egyesítse.
  • Teljes frissítés – Ha növekményes frissítés nem hajtható végre, a rendszer a teljes lekérdezést futtatja, és lecseréli a materializált nézetben lévő meglévő adatokat az új eredményekre.

A lekérdezés szerkezete és a forrásadatok típusa határozza meg, hogy támogatott-e a növekményes frissítés. A növekményes frissítés támogatásához a forrásadatokat Delta-táblákban kell tárolni, és engedélyezve van a sorkövetés és a változásadatcsatorna. A materializált nézet létrehozása után figyelheti annak frissítési viselkedését annak ellenőrzéséhez, hogy a nézet növekményesen vagy teljes frissítéssel frissül-e.

A frissítéstípusokról és a növekményes frissítésekre való optimalizálásról további információt a materializált nézetek növekményes frissítése című témakörben talál.

Aszinkron frissítések

Alapértelmezés szerint a frissítési műveletek szinkron módon lesznek végrehajtva. A frissítési műveletet aszinkron módon is beállíthatja. Ezt a frissítési paranccsal állíthatja be a ASYNC kulcsszóval. Lásd: REFRESH (MATERIALIZED VIEW vagy STREAMING TABLE) Az egyes megközelítésekhez társított viselkedés a következő:

  • Szinkron: A szinkron frissítés megakadályozza, hogy más műveletek folytassanak a frissítés befejezéséig. Ha az eredményre a következő lépéshez van szükség, például a frissítési műveletek vezénylési eszközökben, például a Lakeflow Jobsban történő szekvenálásakor, használjon szinkron frissítést. A materializált nézetek feladattal való vezényléséhez használja az SQL-feladat típusát. Lásd Lakeflow Jobs.
  • Aszinkron: Az aszinkron frissítés egy háttérfeladatot indít el a kiszolgáló nélküli számításban, amikor egy materializált nézet frissítése megkezdődik, így a parancs az adatbetöltés befejeződése előtt visszatérhet. Ez a frissítési típus költségmegtakarítást okozhat, mert a művelet nem feltétlenül rendelkezik számítási kapacitással abban a raktárban, ahol a parancsot kezdeményezik. Ha a frissítés tétlenné válik, és más feladatok nem futnak, a raktár leállhat, miközben a frissítés más rendelkezésre álló számítást használ. Az aszinkron frissítések emellett több művelet párhuzamos indítását is támogatják.

Materializált nézetfrissítések ütemezése

A Databricks SQL materializált nézetét konfigurálhatja úgy, hogy egy meghatározott ütemezés alapján automatikusan frissüljön, vagy aktiválja a felsőbb rétegbeli adatok módosításakor.

Fontos

A TRIGGER ON UPDATE funkció bétaverzióban érhető el.

Ütemezés vagy eseményindító beállításához tegye az alábbiak egyikét:

  • Az ütemezés konfigurálása a SCHEDULE záradékkal a materializált nézet létrehozásakor
  • A materializált nézet létrehozásakor konfiguráljon egy eseményindítót a TRIGGER ON UPDATE záradékkal.
  • Ütemezések vagy eseményindítók hozzáadása vagy módosítása az ALTER MATERIALIZED VIEW utasítással.

Megjegyzés:

Másik lehetőségként létrehozhat egy feladatot egy olyan munkában, amely vagy az CREATE OR REPLACE MATERIALIZED VIEW vagy a REFRESH utasítást tartalmazza, és a többi munkához hasonlóan vezényeli azt. Lásd Lakeflow Jobs.

Az alábbi példa létrehozza a materializált nézetet mv1 az alaptáblából base_table1, és ütemezi a materializált nézet óránkénti frissítését:

CREATE OR REPLACE MATERIALIZED VIEW mv1
  SCHEDULE EVERY 1 hour
  AS SELECT
    date,
    sum(sales) AS sum_of_sales
  FROM
    base_table1
  GROUP BY
    date;

Az ütemezés létrehozás utáni beállításához vagy módosításához használja a következő utasítást ALTER MATERIALIZED VIEW :

-- Alters the schedule to refresh the materialized view when its upstream data
-- gets updated.
ALTER MATERIALIZED VIEW sales ALTER TRIGGER ON UPDATE;

Ütemezés létrehozásakor a rendszer automatikusan konfigurál egy új Databricks-feladatot a frissítés feldolgozására.

Az ütemezés megtekintéséhez tegye az alábbiak egyikét:

  • Futtassa az utasítást DESCRIBE EXTENDED az SQL-szerkesztőből az Azure Databricks felhasználói felületén. Lásd a(z) DESCRIBE TABLE.
  • A Katalóguskezelővel megtekintheti a materializált nézetet. Az ütemezés az Áttekintés lapon, a Frissítés állapot alatt található. Lásd: Mi az a Katalóguskezelő?.

Ha a frissítések ütemezése van, akkor is bármikor futtathat manuális frissítést, ha frissített adatokra van szüksége.

Aktív frissítés leállítása

Ha le szeretne állítani egy aktív frissítést az Azure Databricks felhasználói felületén, a Folyamat részletei lapon kattintson a Leállítás gombra a folyamatfrissítés leállításához. A frissítést a Databricks parancssori felületével vagy a POST /api/2.0/pipelines/{pipeline_id}/stop művelettel is leállíthatja a Pipelines API-ban.

Időtúllépések a frissítéseknél

A hosszú ideig futó frissítések időtúllépést szenvedhetnek el. A 2025. augusztus 14. után létrehozott vagy frissített materializált nézetek a frissítés futtatásához használt SQL Warehouse-hoz társított időtúllépést használják. Ha a raktár nem rendelkezik időtúllépési beállítással, a rendszer a 2 napos alapértelmezett értéket használja.

Megjegyzés:

A materializált nézet csak akkor szinkronizálja az időtúllépést, amikor manuálisan futtat egy CREATE OR REFRESH utasítást. Az ütemezett frissítések megtartják az időkorlátot a legutóbbi érték szerint CREATE OR REFRESH.

Az időtúllépést explicit módon beállíthatja egy STATEMENT_TIMEOUT konfigurációval az SQL-ben a frissítéshez. Lásd a(z) STATEMENT_TIMEOUT.

Rekordok végleges törlése materializált nézetből, engedélyezett törlési vektorokkal

Fontos

A REORG utasítás támogatása materializált nézetekkel a nyilvános előzetes verzió.

Megjegyzés:

  • A materializált nézettel rendelkező REORG utasítás használatához a Databricks Runtime 15.4-et vagy újabb verzióját kell használni.
  • Bár az REORG utasítást bármilyen materializált nézetben használhatja, csak akkor szükséges, ha rekordokat töröl egy materializált nézetből, és engedélyezve vannak a törlési vektorok . A parancsnak nincs hatása, ha materializált nézettel használja a törlési vektorok engedélyezése nélkül.

Ha a materializált nézet alapjául szolgáló tárolóból fizikailag törölni szeretné a rekordokat, és engedélyezve van a törlési vektorok(például a GDPR-megfelelőség), további lépéseket kell tenni annak biztosítása érdekében, hogy a VACUUM művelet a materializált nézet adatain fusson.

Rekordok fizikai törlése:

  1. Futtasson egy REORG utasítást a materializált nézet ellen, megadva a APPLY (PURGE) paramétert. Például: REORG TABLE <materialized-view-name> APPLY (PURGE);. Lásd a(z) REORG TABLE.
  2. Várja meg, amíg a materializált nézet adatmegőrzési ideje eltelik. Az alapértelmezett adatmegőrzési időszak hét nap, de konfigurálható a delta.deletedFileRetentionDuration táblatulajdonság használatával. Lásd: Adatmegőrzés konfigurálása időutazásos lekérdezésekhez.
  3. REFRESH a materializált nézet. Lásd Materializált nézet frissítése. A művelet után 24 órán belül a rendszer automatikusan futtatja a REFRESH folyamatkarbantartási feladatokat, beleértve a VACUUM rekordok végleges törléséhez szükséges műveletet is.

Materializált nézet törlése

Megjegyzés:

A materializált nézet elvetésére vonatkozó parancs elküldéséhez a materializált nézet tulajdonosának kell lennie, vagy MANAGE jogosultsággal kell rendelkeznie a materializált nézetben.

Materializált nézet elvetéséhez használja a DROP VIEW utasítást. Az utasítás elküldéséhez DROP használhatja az SQL-szerkesztőt az Azure Databricks felhasználói felületén, a Databricks SQL CLI-ben vagy a Databricks SQL API-ban. Az alábbi példa elveti a mv1 materializált nézetet:

DROP MATERIALIZED VIEW mv1;

A Katalógus Explorerrel is törölhet egy materializált nézetet.

  1. Kattintson az Adatok ikonra.Katalógus az oldalsávon.
  2. A katalógusböngésző bal oldali katalógusfában nyissa meg a katalógust, és válassza ki azt a sémát, amelyben a materializált nézet található.
  3. Nyissa meg a Táblák elemet a kiválasztott séma alatt, és kattintson a materializált nézetre.
  4. A kebab menü Kebab menü ikonján válassza a Törlés lehetőséget.

A materializált nézet költségeinek megismerése

Mivel egy materializált nézet kiszolgáló nélküli számításban fut, a jegyzetfüzethez vagy feladathoz beállított számításon kívül, felmerülhet a kérdés, hogyan értelmezheti a kapcsolódó költségeket. A materializált nézethasználatot a DBU-használat követi nyomon. További információkért lásd: Mi a materializált nézet vagy streaming tábla DBU-felhasználása?

Sorkövetés engedélyezése

A Delta-táblák növekményes frissítéseinek támogatásához engedélyezni kell a sorkövetést ezekhez a forrástáblákhoz. Ha újra létrehoz egy forrástáblát, újra engedélyeznie kell a sorkövetést.

Az alábbi példa bemutatja, hogyan engedélyezheti a sorkövetést egy táblán:

ALTER TABLE source_table SET TBLPROPERTIES (delta.enableRowTracking = true);

További részletekért lásd: Sorkövetés használata Delta-táblákhoz

korlátozások

  • A számítási és munkaterületi követelményekről a Követelmények című témakörben olvashat.
  • A növekményes frissítési követelményekkel kapcsolatban lásd a materializált nézetek növekményes frissítését.
  • A materializált nézetek nem támogatják az identitásoszlopokat és a helyettesítő kulcsokat.
  • Ha egy materializált nézet egy olyan oszlopon használ összegösszesítést, amely NULL-able, és az oszlopban csak NULL értékek maradnak, akkor a materializált nézet eredményül kapott összesített értéke nulla lesz NULL helyett.
  • A változásadatcsatorna nem olvasható materializált nézetben.
  • Az időutazási lekérdezések nem támogatottak materializált nézetekben.
  • A materializált nézeteket támogató mögöttes fájlok tartalmazhatnak olyan felsőbb rétegbeli táblákból származó adatokat (beleértve a személyazonosításra alkalmas adatokat is), amelyek nem jelennek meg a materializált nézetdefinícióban. Ezeket az adatokat a rendszer automatikusan hozzáadja a mögöttes tárolóhoz, hogy támogassa a materializált nézetek növekményes frissítését. Mivel a materializált nézet alapjául szolgáló fájlok a materializált nézet sémájának nem részét képező felsőbb rétegbeli táblákból származó adatok feltárását kockáztathatják, a Databricks azt javasolja, hogy ne ossza meg az alapul szolgáló tárolót a nem megbízható alsóbb rétegbeli felhasználókkal. Tegyük fel például, hogy egy materializált nézet definíciója tartalmaz egy záradékot COUNT(DISTINCT field_a) . Annak ellenére, hogy a materializált nézetdefiníció csak az összesített COUNT DISTINCT záradékot tartalmazza, a mögöttes fájlok tartalmazzák a field_atényleges értékeinek listáját.
  • Előfordulhat, hogy kiszolgáló nélküli számítási költségek merülnek fel, még akkor is, ha ezeket a funkciókat dedikált számításon használja.
  • Ha Azure Private Link-kapcsolatot kell használnia a materializált nézettel, forduljon a Databricks képviselőjéhez.

Külső ügyfelek materializált nézeteinek elérése

Ha olyan külső Delta Lake- vagy Iceberg-ügyfelekről szeretne materializált nézeteket elérni, amelyek nem támogatják a nyitott API-kat, használhat kompatibilitási módot. A kompatibilitási mód létrehozza a materializált nézet írásvédett verzióját, amely bármely Delta Lake- vagy Iceberg-ügyfél számára elérhető.