Sdílet prostřednictvím


CREATE STREAMING TABLE (potrubí)

Streamovací tabulka je tabulka s podporou streamování nebo přírůstkového zpracování dat. Streamované tabulky jsou podporovány zpracovávacími linkami. Při každé aktualizaci streamované tabulky se data přidaná do zdrojových tabulek připojí ke streamované tabulce. Streamované tabulky můžete aktualizovat ručně nebo podle plánu.

Další informace o provádění nebo plánování aktualizací najdete v tématu Spuštění aktualizace pipeline.

Syntaxe

CREATE [OR REFRESH] [PRIVATE] STREAMING TABLE
  table_name
  [ table_specification ]
  [ table_clauses ]
  [ AS query ]

table_specification
  ( { column_identifier column_type [column_properties] } [, ...]
    [ column_constraint ] [, ...]
    [ , table_constraint ] [...] )

   column_properties
      { NOT NULL | COMMENT column_comment | column_constraint | MASK clause } [ ... ]

table_clauses
  { USING DELTA
    PARTITIONED BY (col [, ...]) |
    CLUSTER BY clause |
    LOCATION path |
    COMMENT view_comment |
    TBLPROPERTIES clause |
    WITH { ROW FILTER clause } } [ ... ]

Parametry

  • REFRESH

    Pokud je tato hodnota zadaná, vytvoří tabulku nebo aktualizuje existující tabulku a její obsah.

  • SOUKROMÝ

    Vytvoří soukromou tabulku pro streamování.

    • Nejsou přidány do katalogu a jsou přístupné pouze v rámci určeného potrubí.
    • Můžou mít stejný název jako existující objekt v katalogu. V rámci potrubí, pokud má privátní streamovací tabulka a objekt v katalogu stejný název, odkazy na tento název budou směřovat na privátní streamovací tabulku.
    • Tabulky pro privátní streamování jsou uchovávány po celou dobu životnosti pipeline, nejen při jedné aktualizaci.

    Tabulky privátního streamování byly dříve vytvořeny pomocí parametru TEMPORARY .

  • table_name

    Název nově vytvořené tabulky. Plně kvalifikovaný název tabulky musí být jedinečný.

  • specifikace_tabulek

    Tato volitelná klauzule definuje seznam sloupců, jejich typů, vlastností, popisů a omezení sloupců.

  • omezení tabulky

    Důležité

    Tato funkce je ve verzi Public Preview.

    Při zadávání schématu můžete definovat primární a cizí klíče. Omezení jsou informativní a nevynucují se. Viz klauzuli CONSTRAINT v referenční dokumentaci jazyka SQL.

    Poznámka:

    Pokud chcete definovat omezení tabulek, vaše potrubí musí být aktivováno prostřednictvím katalogu Unity.

  • tabulka_podmínky

    Volitelně můžete zadat vlastnosti dělení, komentářů a uživatelem definovaných vlastností tabulky. Každou dílčí klauzuli lze zadat pouze jednou.

    • POUŽITÍ FUNKCE DELTA

      Určuje formát dat. Jedinou možností je DELTA.

      Tato klauzule je volitelná a výchozí hodnota je DELTA.

    • PARTICIONOVÁNO PODLE

      Volitelný seznam jednoho nebo více sloupců, které se mají použít k dělení v tabulce. Vzájemně se vylučuje s CLUSTER BY.

      Liquid clustering poskytuje flexibilní a optimalizované řešení pro shlukování. Zvažte použití CLUSTER BY místo PARTITIONED BY pro kanály.

    • CLUSTER BY

      Povolte tekuté shlukování v tabulce a definujte sloupce, které se mají použít jako klíče shlukování. Pomocí automatického liquid clusteringu s CLUSTER BY AUTO a Databricks inteligentně vybírá klíče seskupování pro optimalizaci výkonu dotazů. Vzájemně se vylučuje s PARTITIONED BY.

      Viz Použití metody 'liquid clustering' pro tabulky.

    • UMÍSTĚNÍ

      Volitelné umístění úložiště pro data tabulky. Pokud není nastaven, systém ve výchozím nastavení použije umístění úložiště potrubí.

    • KOMENTÁŘ

      Volitelný STRING literál, který popisuje tabulku.

    • TBLPROPERTIES

      Volitelný seznam vlastností tabulky pro tabulku.

    • S ROW FILTER

    Důležité

    Tato funkce je ve verzi Public Preview.

    Přidá do tabulky funkci filtru řádků. Budoucí dotazy na danou tabulku obdrží podmnožinu řádků, pro které se funkce vyhodnotí jako PRAVDA. To je užitečné pro důkladné řízení přístupu, protože umožňuje funkci zkoumat identitu a členství ve skupinách uživatele, který ji vyvolává, aby se rozhodlo, zda mají být určité řádky filtrovány.

    Vizklauzule .

  • dotaz

    Tato klauzule naplní tabulku pomocí dat z query. Tento dotaz musí být streamovací. Pomocí klíčového slova STREAM můžete ke čtení ze zdroje použít sémantiku streamování. Pokud čtení narazí na změnu nebo odstranění existujícího záznamu, vyvolá se chyba. Je nejbezpečnější číst ze statických nebo doplňovacích zdrojů. K ingestci dat, která mají commity změn, můžete použít Python a možnost SkipChangeCommits pro zpracování chyb.

    Když zadáte query a table_specification dohromady, schéma tabulky zadané v table_specification musí obsahovat všechny sloupce vrácené query, jinak se zobrazí chyba. Všechny sloupce uvedené v table_specification, které nejsou vráceny query, vracejí null hodnoty při dotazu.

    Další informace o streamovaných datech najdete v tématu Transformace dat pomocí kanálů.

Požadovaná oprávnění

Uživatel spuštěn jako pro potrubí musí mít následující oprávnění:

  • SELECT oprávnění k základním tabulkám, na které odkazuje streamující tabulka.
  • USE CATALOG privilegium v nadřazeném katalogu a USE SCHEMA privilegium v nadřazeném schématu.
  • CREATE MATERIALIZED VIEW oprávnění ke schématu pro streamovací tabulku.

Aby uživatel mohl aktualizovat pipeline, ve které je definována tabulka streamování, potřebují:

  • USE CATALOG privilegium v nadřazeném katalogu a USE SCHEMA privilegium v nadřazeném schématu.
  • Vlastnictví streamované tabulky nebo REFRESH oprávnění na streamované tabulce.
  • Vlastník tabulky streamování musí mít SELECT oprávnění k základním tabulkám, na které odkazuje tabulka streamování.

Aby uživatel mohl dotazovat výslednou streamovací tabulku, vyžaduje:

  • USE CATALOG privilegium v nadřazeném katalogu a USE SCHEMA privilegium v nadřazeném schématu.
  • SELECT oprávnění pro streamovací tabulku.

Omezení

  • Nejnovější data můžou získat jenom vlastníci tabulek, kteří můžou aktualizovat streamované tabulky.
  • ALTER TABLE příkazy jsou u streamovaných tabulek zakázány. Definice a vlastnosti tabulky by se měly změnit prostřednictvím příkazu CREATE OR REFRESH nebo ALTER STREAMING TABLE.
  • Vývoj schématu tabulky pomocí příkazů DML, jako je INSERT INTO, a MERGE se nepodporuje.
  • U streamovaných tabulek se nepodporují následující příkazy:
    • CREATE TABLE ... CLONE <streaming_table>
    • COPY INTO
    • ANALYZE TABLE
    • RESTORE
    • TRUNCATE
    • GENERATE MANIFEST
    • [CREATE OR] REPLACE TABLE
  • Přejmenování tabulky nebo změna vlastníka se nepodporuje.
  • Vygenerované sloupce, sloupce identit a výchozí sloupce se nepodporují.

Examples

-- Define a streaming table from a volume of files:
CREATE OR REFRESH STREAMING TABLE customers_bronze
AS SELECT * FROM STREAM read_files("/databricks-datasets/retail-org/customers/*", format => "csv")

-- Define a streaming table from a streaming source table:
CREATE OR REFRESH STREAMING TABLE customers_silver
AS SELECT * FROM STREAM(customers_bronze)

-- Define a table with a row filter and column mask:
CREATE OR REFRESH STREAMING TABLE customers_silver (
  id int COMMENT 'This is the customer ID',
  name string,
  region string,
  ssn string MASK catalog.schema.ssn_mask_fn COMMENT 'SSN masked for privacy'
)
WITH ROW FILTER catalog.schema.us_filter_fn ON (region)
AS SELECT * FROM STREAM(customers_bronze)

-- Define a streaming table that you can add flows into:
CREATE OR REFRESH STREAMING TABLE orders;