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


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

Feljegyzés

Ha Azure Private Link-kapcsolatot kell használnia a materializált nézettel, forduljon a Databricks képviselőjéhez.

Ez a cikk bemutatja, hogyan hozhat létre és használhat 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 lehetővé teszik a felhasználók számára, hogy a forrástáblákban szereplő adatok legújabb verziója alapján előre lefordítsa az eredményeket. Az Azure Databricks materializált nézetei eltérnek a többi implementációtól, mivel a visszaadott eredmények az adatok állapotát tükrözik a materializált nézet legutóbbi frissítésekor, és nem mindig frissítik az eredményeket a materializált nézet lekérdezésekor. Manuálisan frissítheti a materializált nézeteket, vagy ütemezhet frissítéseket.

A materializált nézetek hatékonyak olyan adatfeldolgozási számítási feladatokhoz, mint a kinyerés, átalakítás és betöltés (ETL). 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 csökkentik a költségeket és javítják a lekérdezések késését a lassú lekérdezések és a gyakran használt számítások előzetes számításával. 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 materializált nézetek csökkenthetik a költségeket, miközben egyszerűsített végfelhasználói élményt nyújtanak, mert bizonyos esetekben növekményesen kiszámíthatják az alaptáblák változásait.

A materializált nézeteket először az Azure Databricksben támogatták a Delta Live Tables elindításával. Amikor materializált nézetet hoz létre egy Databricks SQL Warehouse-ban, a rendszer kiszolgáló nélküli folyamatot hoz létre a materializált nézet frissítéseinek feldolgozásához. A frissítési műveletek állapotát a Delta Live Tables felhasználói felületén vagy a pipelines API-ban figyelheti. Tekintse meg a materializált nézetfrissítések állapotának megtekintése című témakört.

Követelmények

Materializált nézetek létrehozása vagy frissítése:

  • 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 munkaterületnek olyan régióban kell lennie, amely támogatja a kiszolgáló nélküli SQL-raktárakat.

Materializált nézetek lekérdezése:

  • A materializált nézet tulajdonosának kell lennie, vagy rendelkeznie SELECT kell a materializált nézettel, valamint a szüleivel és USE CATALOG a szüleivelUSE SCHEMA.
  • A következő számítási erőforrások egyikét kell használnia:
    • SQL Warehouse
    • Delta Live Tables-felületek
    • Megosztott hozzáférési mód számítása
    • 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: Részletes hozzáférés-vezérlés az egyfelhasználós számításban.
    • Csak akkor, ha Ön a materializált nézet tulajdonosa: egyetlen felhasználói hozzáférési módú számítási erőforrás, amely a Databricks Futtatókörnyezetet 14.3 és 15.3 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 letiltja a materializált nézet létrehozását és a kezdeti adatbetöltés befejezését. A rendszer automatikusan létrehoz egy kiszolgáló nélküli Delta Live Tables-folyamatot minden Databricks SQL materializált nézethez. A materializált nézet frissítésekor a Delta Live Tables 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.

Kiválaszthatja azt a futtatókörnyezeti csatornát, ahol a létrehozási utasítás a záradékkal fut, TBLPROPERTIES és a beállítás "PREVIEW" értéke vagy "CURRENT". Az alapértelmezett érték "CURRENT". A Delta Live Tables-csatornákról további információt a Delta Live Tables futtatókörnyezeti csatornáiban talál. A szintaxissal és paraméterekkel kapcsolatos részletekért lásd: CREATE MATERIALIZED VIEW.

Feljegyzés

A materializált nézetet létrehozó felhasználó a materializált nézet tulajdonosa, és 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ágokat a materializált nézet célkatalógusában és sémáján.
  • CREATE TABLE és CREATE MATERIALIZED VIEW jogosultságokat a materializált nézetet tartalmazó sémán.

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

CREATE MATERIALIZED VIEW mv1
AS SELECT
  date, sum(sales) AS sum_of_sales
FROM
  base_table1
GROUP BY
  date;

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.

Materializált nézet frissítése

A REFRESH művelet frissíti a materializált nézetet, hogy tükrözze az alaptábla legújabb módosításait. A művelet alapértelmezés szerint szinkron, ami azt jelenti, hogy a parancs letiltja a frissítési művelet befejezéséig. A materializált nézet frissítéséhez használja az utasítást REFRESH MATERIALIZED VIEW . A parancs SQL-szintaxisának és paramétereinek részleteiért tekintse meg a FRISSÍTÉS (MATERIALIZED VIEW vagy STREAMING TABLE) című témakört. 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.

Csak a tulajdonos használhatja REFRESH a materializált nézetet.

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

REFRESH MATERIALIZED VIEW mv1;

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

A materializált nézetek automatikusan létrehoznak és használnak kiszolgáló nélküli Delta Live Tables-folyamatokat a frissítési műveletek feldolgozásához. A frissítést a Delta Live Tables 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ó Delta Live Tables-folyamattal frissíthetők. Lásd: Aktivált és folyamatos folyamat mód.

Feljegyzés

A Delta Live Tables futtatókörnyezete nem észleli a nem Delta-adatforrások változásait. A táblázat továbbra is rendszeresen frissül, de magasabb alapértelmezett triggerintervallummal, hogy megakadályozza, hogy a túlzott újraszámítás lelassítsa a számítás növekményes feldolgozását.

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. Ez a frissítési paranccsal állítható be. Lásd: FRISSÍTÉS (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 Databricks 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: Munkafolyamatok ütemezése és vezénylálása.
  • Aszinkron: Az aszinkron frissítés elindít egy háttérfeladatot a Delta Live Tables számításán, 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.

Egyes lekérdezések növekményesen frissíthetők. A materializált nézetek növekményes frissítését lásd. Ha növekményes frissítés nem hajtható végre, a rendszer ehelyett teljes frissítést hajt végre.

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. Ütemezés 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
  • Adjon hozzá egy ütemezést az ALTER MATERIALIZED VIEW utasítással.

Ü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.
  • 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ő?.

Materializált nézetfrissítés állapotának megtekintése

Feljegyzés

Mivel a Delta Live Tables-folyamat kezeli a materializált nézetfrissítéseket, a folyamat indítási ideje késéssel jár. Ez az idő a frissítés végrehajtásához szükséges idő mellett másodpercek és percek között is lehet.

A materializált nézet frissítésének állapotát a Materialized nézetet kezelő folyamat megtekintésével tekintheti meg a Delta Live Tables felhasználói felületén, vagy megtekintheti a DESCRIBE EXTENDED materializált nézet parancsa által visszaadott frissítési információkat.

A materializált nézet frissítési előzményeit a Delta Live Tables eseménynaplójának lekérdezésével is megtekintheti. Tekintse meg a materializált nézet frissítési előzményeinek megtekintése című témakört.

A frissítési állapot megtekintése a Delta Live Tables felhasználói felületén

Alapértelmezés szerint a materializált nézetet kezelő Delta Live Tables-folyamat nem látható a Delta Live Tables felhasználói felületén. Ha meg szeretné tekinteni a folyamatot a Delta Live Tables felhasználói felületén, közvetlenül hozzá kell férnie a folyamat Folyamat részletei lapjára mutató hivatkozáshoz. A hivatkozás eléréséhez:

  • Másolja és illessze be az utasítás által DESCRIBE EXTENDED visszaadott táblázat Legújabb frissítés sorában megjelenő hivatkozást.
  • A materializált nézet leállás lapján kattintson a Folyamatok elemre, majd a folyamat hivatkozására.

Az Azure Databricks felhasználói felületén az SQL-szerkesztővel küldött aszinkron REFRESH parancsok esetében a frissítési állapotot az Eredmények panelen látható hivatkozásra kattintva tekintheti meg.

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

Ha le szeretne állítani egy aktív frissítést a Delta Live Tables 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.

Materializált nézet definíciójának frissítése

A materializált nézet definíciójának frissítéséhez először le kell dobnia, majd újra létre kell hoznia a materializált nézetet.

Materializált nézet elvetése

Feljegyzés

A materializált nézet elvetésére vonatkozó parancs elküldéséhez a materializált nézet tulajdonosának kell lennie.

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;

Materializált nézet leírása

A materializált nézet oszlopainak és adattípusainak lekéréséhez használja az utasítást DESCRIBE . A materializált nézet oszlopainak, adattípusainak és metaadatainak(például tulajdonosának, helyének, létrehozási idejének és frissítési állapotának) lekéréséhez használja a következőt DESCRIBE EXTENDED: Utasítás elküldéséhez DESCRIBE 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.

Materializált nézet tulajdonosának módosítása

Ha metaadattár-rendszergazda és munkaterület-rendszergazda is, módosíthatja a materializált nézet tulajdonosát. A materializált nézetek automatikusan létrehoznak és használnak Delta Live Tables-folyamatokat a módosítások feldolgozásához. A materializált nézetek tulajdonosának módosításához kövesse az alábbi lépéseket:

  • A materializált nézet leállás lapján kattintson a Folyamatok elemre, majd a folyamat hivatkozására.
  • Kattintson a Kebab menüfolyamatnév jobb oldalán található kebab menüre, majd az Engedélyek parancsra. Ekkor megnyílik az engedélyek párbeszédpanelje.
  • Kattintson az aktuális tulajdonos nevének jobb oldalán található x gombra az aktuális tulajdonos eltávolításához.
  • Kezdjen el gépelni az elérhető felhasználók listájának szűréséhez. Kattintson arra a felhasználóra, akinek az új folyamattulajdonosnak kell lennie.
  • A módosítások mentéséhez és a párbeszédpanel bezárásához kattintson a Mentés gombra.

A folyamat összes objektuma, beleértve a folyamatban definiált materializált nézeteket is, az új folyamattulajdonos tulajdonában van. Minden jövőbeli frissítés az új tulajdonos identitásával fut.

A materializált nézetekhez való hozzáférés szabályozása

A materializált nézetek a gazdag hozzáférés-vezérlést támogatják az adatmegosztás támogatásához, miközben elkerülik a potenciálisan privát adatok felfedését. A materializált nézet tulajdonosa jogosultságokat adhat SELECT más felhasználóknak. A materializált nézethez hozzáféréssel rendelkező SELECT felhasználóknak nem kell SELECT hozzáférni a materializált nézet által hivatkozott táblákhoz. Ez a hozzáférés-vezérlés lehetővé teszi az adatmegosztást a mögöttes adatokhoz való hozzáférés szabályozása közben.

Jogosultságok megadása materializált nézethez

A materializált nézethez való hozzáférés biztosításához használja a következő utasítást GRANT :

GRANT
  privilege_type [, privilege_type ] ...
  ON <mv_name> TO principal;

A privilege_type a következő lehet:

  • SELECT - a felhasználó képes SELECT a materializált nézetre.
  • REFRESH - a felhasználó képes REFRESH a materializált nézetre. A frissítések a tulajdonos engedélyeinek használatával futnak.

Az alábbi példa egy materializált nézetet hoz létre, és kijelölési és frissítési jogosultságokat ad egy felhasználónak:

CREATE MATERIALIZED VIEW <mv_name> AS SELECT * FROM <base_table>;
GRANT SELECT ON <mv_name> TO user;
GRANT REFRESH ON <mv_name> TO user;

Jogosultságok visszavonása materializált nézetből

A materializált nézethez való hozzáférés visszavonásához használja a következő utasítást REVOKE :

REVOKE
  privilege_type [, privilege_type ]
  ON <name> FROM principal;

Ha SELECT az alaptáblán lévő jogosultságokat visszavonják a materializált nézet tulajdonosától vagy bármely más felhasználótól, aki jogosultságokat kapott SELECT a materializált nézethez, vagy az alaptáblát elveti, a materializált nézet tulajdonosa vagy a hozzáféréssel rendelkező felhasználó továbbra is le tudja kérdezni a materializált nézetet. A következő viselkedés azonban előfordul:

  • A materializált nézet tulajdonosa vagy azok, akik elveszítették a hozzáférést egy materializált nézethez, már REFRESH nem használhatják a materializált nézetet, és a materializált nézet elavulttá válik.
  • Ha ütemezéssel automatizálja, a következő ütemezett feladat REFRESH meghiúsul vagy nem fut.

Az alábbi példa visszavonja a jogosultságot:SELECT mv1

REVOKE SELECT ON mv1 FROM user1;

Változásadatcsatorna engedélyezése

Az adatcsatorna módosítása szükséges a materializált nézetek alaptábláiban, kivéve bizonyos speciális használati eseteket. Az adatcsatorna alaptáblán való módosításának engedélyezéséhez állítsa be a delta.enableChangeDataFeed táblatulajdonságot a következő szintaxissal:

ALTER TABLE table1 SET TBLPROPERTIES (delta.enableChangeDataFeed = true);

A materializált nézet frissítési előzményeinek megtekintése

Ha materializált nézetben szeretné megtekinteni a műveletek állapotát REFRESH , beleértve az aktuális és a korábbi frissítéseket, kérdezze le a Delta Live Tables eseménynaplóját:

SELECT
  *
FROM
  event_log(TABLE(<fully-qualified-table-name>))
WHERE
  event_type = "update_progress"
ORDER BY
  timestamp desc;

Cserélje le <fully-qualified-table-name> a materializált nézet teljes nevét, beleértve a katalógust és a sémát is.

Lásd: Mi a Delta Live Tables eseménynaplója?

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 materializált nézetek nem támogatják az identitásoszlopokat és a helyettesítő kulcsokat.
  • Ha egy materializált nézet összegösszesítést használ egy NULL-able oszlopon keresztül, és csak NULL az értékek maradnak az oszlopban, akkor a materializált nézetek eredményül kapott összesített értéke nulla helyett NULL.
  • A változásadatcsatorna nem olvasható materializált nézetben.
  • 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ítő záradékot COUNT DISTINCT tartalmazza, a mögöttes fájlok tartalmazzák a tényleges értékek field_alistáját.