CREATE STREAMING TABLE (rörledningar)

En strömningstabell är en tabell med stöd för direktuppspelning eller inkrementell databearbetning. Strömmande tabeller stöds av pipelines. Varje gång en strömmande tabell uppdateras läggs data som läggs till i källtabellerna till i strömningstabellen. Du kan uppdatera strömmande tabeller manuellt eller enligt ett schema.

Mer information om hur du utför eller schemalägger uppdateringar finns i Köra en pipelineuppdatering.

Syntax

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 } } [ ... ]

Parameterar

  • REFRESH

    Om du anger det skapar du tabellen eller uppdaterar en befintlig tabell och dess innehåll.

  • PRIVAT

    Skapar en privat strömningstabell.

    • De läggs inte till i katalogen och är endast tillgängliga i den definierande pipelinen
    • De kan ha samma namn som ett befintligt objekt i katalogen. Om en privat direktuppspelningstabell och ett objekt i katalogen har samma namn i pipelinen matchas referenser till namnet till den privata direktuppspelningstabellen.
    • Privata direktuppspelningstabeller sparas bara under pipelinens livslängd, inte bara en enda uppdatering.

    Privata direktuppspelningstabeller skapades tidigare med parametern TEMPORARY .

  • table_name

    Namnet på den nyligen skapade tabellen. Det fullständigt kvalificerade tabellnamnet måste vara unikt.

  • tabellspecifikation

    Den här valfria satsen definierar listan över kolumner, deras typer, egenskaper, beskrivningar och kolumnbegränsningar.

  • tabellbegränsning

    Viktigt!

    Den här funktionen finns som allmänt tillgänglig förhandsversion.

    När du anger ett schema kan du definiera primära och externa nycklar. Begränsningarna är informationsmässiga och tillämpas inte. CONSTRAINT Se satsen i SQL-språkreferensen.

    Anmärkning

    För att definiera tabellbegränsningar måste pipelinen vara en Unity Catalog-aktiverad pipeline.

  • tabellklausuler

    Du kan också ange partitionering, kommentarer och användardefinierade egenskaper för tabellen. Varje undersats kan endast anges en gång.

    • ANVÄNDA DELTA

      Anger dataformatet. Det enda alternativet är DELTA.

      Den här satsen är valfri och är standard för DELTA.

    • Partitionerad efter

      En valfri lista över en eller flera kolumner som ska användas för partitionering i tabellen. Ömsesidigt uteslutande med CLUSTER BY.

      Flytande klustring ger en flexibel, optimerad lösning för klustring. Överväg att använda CLUSTER BY i stället för PARTITIONED BY för pipelines.

    • CLUSTER BY

      Aktivera flytande klustring i tabellen och definiera de kolumner som ska användas som klustringsnycklar. Använd automatisk flytande klustring med CLUSTER BY AUTO, och Databricks väljer intelligent klustringsnycklar för att optimera frågeprestanda. Ömsesidigt uteslutande med PARTITIONED BY.

      Se Använda flytande klustring för tabeller.

    • PLATS

      En valfri lagringsplats för tabelldata. Om det inte anges kommer systemet att välja pipelinelagringsplatsen som standardinställning.

    • KOMMENTAR

      En valfri STRING literal för att beskriva tabellen.

    • TBLPROPERTIES

      En valfri lista över tabellegenskaper för tabellen.

    • MED ROW FILTER

    Viktigt!

    Den här funktionen finns som allmänt tillgänglig förhandsversion.

    Lägger till en radfilterfunktion i tabellen. Framtida frågor för tabellen tar emot en delmängd av de rader som funktionen utvärderas till TRUE för. Detta är användbart för detaljerad åtkomstkontroll eftersom den gör att funktionen kan kontrollera identitets- och gruppmedlemskapen för den anropande användaren för att avgöra om vissa rader ska filtreras.

    Se ROW FILTER-satsen.

  • fråga

    Den här satsen fyller i tabellen med hjälp av data från query. Den här frågan måste vara en direktuppspelningsfråga . Använd stream-nyckelordet för att använda strömmande semantik för att läsa från källan. Om läsningen påträffar en ändring eller borttagning av en befintlig post utlöses ett fel. Det är säkrast att läsa från statiska eller endast tilläggskällor. Om du vill mata in data som har ändringsincheckningar kan du använda Python och SkipChangeCommits alternativet för att hantera fel.

    När du anger en query och en table_specification tillsammans måste tabellschemat som anges i table_specification innehålla alla kolumner som returneras av query, annars får du ett fel. Alla kolumner som anges i table_specification men som inte returneras av query returnerar null värden när du frågar.

    Mer information om strömmande data finns i Transformera data med pipelines.

Behörigheter som krävs

Kör som-användaren för en pipeline måste ha följande behörigheter:

  • SELECT över bastabellerna som refereras av strömningstabellen.
  • USE CATALOG behörighet i den överordnade katalogen och USE SCHEMA behörighet i det överordnade schemat.
  • CREATE MATERIALIZED VIEW behörighet i schemat för strömningstabellen.

För att en användare ska kunna uppdatera pipelinen definieras strömningstabellen inom:

  • USE CATALOG behörighet i den överordnade katalogen och USE SCHEMA behörighet i det överordnade schemat.
  • Ägarskap för strömningstabellen eller REFRESH behörigheten i strömningstabellen.
  • Ägaren av strömningstabellen måste ha behörighet SELECT för bastabellerna som strömningstabellen hänvisar till.

För att en användare ska kunna köra frågor mot den resulterande direktuppspelningstabellen behöver de:

  • USE CATALOG behörighet i den överordnade katalogen och USE SCHEMA behörighet i det överordnade schemat.
  • SELECT privilegium över strömningstabellen.

Begränsningar

  • Endast tabellägare kan uppdatera strömmande tabeller för att hämta de senaste data.
  • ALTER TABLE kommandon tillåts inte för strömmande tabeller. Tabellens definition och egenskaper bör ändras via instruktionen CREATE OR REFRESH eller ALTER STREAMING TABLE.
  • Det går inte att utveckla tabellschemat via DML-kommandon som INSERT INTOoch MERGE.
  • Följande kommandon stöds inte i strömmande tabeller:
    • CREATE TABLE ... CLONE <streaming_table>
    • COPY INTO
    • ANALYZE TABLE
    • RESTORE
    • TRUNCATE
    • GENERATE MANIFEST
    • [CREATE OR] REPLACE TABLE
  • Det går inte att byta namn på tabellen eller ändra ägaren.
  • Genererade kolumner, identitetskolumner och standardkolumner stöds inte.

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;