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 ]
  [ table_constraints ]
  [ view_clauses ]
  AS query

column_list
   ( { column_alias [ COMMENT column_comment | column_constraint ] [...] } [, ...] [ , table_constraint ] [...])

table_constraints
   ( table_constraint [, ...] )

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

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 EXISTSOR 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_alias

      Az oszlop aliasainak egyedinek kell lenniük.

    • column_comment

      Az oszlop aliasát leíró nem kötelező STRING literál.

    • column_constraint

      Fontos

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

      Információs elsődleges kulcsot vagy információs idegenkulcs-korlátozást ad hozzá az oszlophoz egy materializált nézetben. A katalógus materializált nézetei nem támogatják a hive_metastore korlátozásokat.

  • table_constraint

    Fontos

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

    Információs elsődleges kulcsot vagy információs idegenkulcs-korlátozásokat ad hozzá egy materializált nézethez. A katalógus materializált nézetei nem támogatják a hive-metastore korlátozásokat.

  • 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.

  • 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.

Csak a tulajdonos használhatja az MV-t REFRESH .

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.

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ó:
    • Engedélyezett: SELECT col1, SUM(col2) AS sum_col2 FROM t GROUP BY col1
    • Nem engedélyezett: 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.

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 column constraint
> CREATE MATERIALIZED VIEW IF NOT EXISTS subscribed_movies(
    member_id NOT NULL PRIMARY KEY,
    full_name,
    movie_title
  )
  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 a materialized view with a table constraint
> CREATE MATERIALIZED VIEW IF NOT EXISTS subscribed_movies(
    member_id NOT NULL,
    full_name,
    movie_title,
    CONSTRAINT movie_pk PRIMARY KEY(member_id)
  )
  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 a materialized view without column list
> CREATE MATERIALIZED VIEW IF NOT EXISTS subscribed_movies(
    CONSTRAINT movie_pk PRIMARY KEY(member_id)
  )
  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;