Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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:
-
SELECTjogosultság a materializált nézet által hivatkozott alaptáblákon. -
USE CATALOGésUSE SCHEMAa katalógus és a séma jogosultságai, amelyek tartalmazzák a materializált nézet forrástábláit. -
USE CATALOGésUSE SCHEMAjogosultságok a célkatalógusra és a sémára a materializált nézethez. -
CREATE TABLEésCREATE MATERIALIZED VIEWjogosultságok a materializált nézetet tartalmazó sémán.
-
A materializált nézet frissítéséhez rendelkeznie kell a
REFRESHmaterializált nézet jogosultságával.
- A munkaterületnek olyan régióban kell lennie, amely támogatja a kiszolgáló nélküli SQL-raktárakat.
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, valamintUSE SCHEMA-val ésUSE 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
SCHEDULEzá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 UPDATEzá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 EXTENDEDaz 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ő
REORGutasítás használatához a Databricks Runtime 15.4-et vagy újabb verzióját kell használni. - Bár az
REORGutasí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:
- Futtasson egy
REORGutasítást a materializált nézet ellen, megadva aAPPLY (PURGE)paramétert. Például:REORG TABLE <materialized-view-name> APPLY (PURGE);. Lásd a(z) REORG TABLE. - 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.deletedFileRetentionDurationtáblatulajdonság használatával. Lásd: Adatmegőrzés konfigurálása időutazásos lekérdezésekhez. -
REFRESHa 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 aREFRESHfolyamatkarbantartási feladatokat, beleértve aVACUUMrekordok 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.
- Kattintson
Katalógus az oldalsávon.
- 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ó.
- Nyissa meg a Táblák elemet a kiválasztott séma alatt, és kattintson a materializált nézetre.
- A kebab menü
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 csakNULLértékek maradnak, akkor a materializált nézet eredményül kapott összesített értéke nulla leszNULLhelyett. - 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ítettCOUNT DISTINCTzáradékot tartalmazza, a mögöttes fájlok tartalmazzák afield_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ő.