Delen via


CREATE STREAMING TABLE (pijplijnen)

Een streaming tabel is een tabel die ondersteuning biedt voor streaming of incrementele gegevensverwerking. Streamingtabellen worden ondersteund door pijplijnen. Elke keer dat een streamingtabel wordt vernieuwd, worden gegevens die aan de brontabellen zijn toegevoegd, toegevoegd aan de streamingtabel. Je kunt streamingtabellen handmatig of volgens een schema verversen.

Zie Een pijplijnupdate uitvoeren voor meer informatie over het uitvoeren of plannen van vernieuwingen.

Syntaxis

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

Parameterwaarden

  • REFRESH

    Indien gespecificeerd, zal de tabel worden aangemaakt of een bestaande tabel en de inhoud ervan worden bijgewerkt.

  • PRIVÉ

    Maakt een privé-streamingtabel aan.

    • Ze worden niet toegevoegd aan de catalogus en zijn alleen toegankelijk binnen de definiërende pijplijn
    • Ze kunnen dezelfde naam hebben als een bestaand object in de catalogus. Binnen de pijplijn zullen, indien een privé streaming tabel en een object in de catalogus dezelfde naam hebben, referenties naar de naam worden opgelost naar de privé streaming tabel.
    • Privé-streamingtabellen worden alleen behouden gedurende de gehele levensduur van de pijplijn, niet alleen tijdens een enkele update.

    Private streaming-tabellen werden eerder aangemaakt met de TEMPORARY parameter.

  • table_name

    De naam van de nieuw aangemaakte tabel. De volledig gekwalificeerde tabelnaam moet uniek zijn.

  • tabelspecificatie

    Deze optionele component definieert de lijst met kolommen, hun typen, eigenschappen, beschrijvingen en kolombeperkingen.

    • column_identifier

      De kolomnamen moeten uniek zijn en corresponderen met de uitvoerkolommen van de query.

    • column_type

      Hiermee geeft u het gegevenstype van de kolom op. Niet alle gegevenstypen die door Azure Databricks worden ondersteund, worden ondersteund door streamingtabellen.

    • column_comment

      Een optionele STRING literal die de kolom beschrijft. Deze optie moet gespecificeerd worden samen met column_type. Als het kolomtype niet is opgegeven, wordt de kolomopmerking overgeslagen.

    • column_constraint

      Hiermee voegt u een beperking toe waarmee gegevens worden gevalideerd terwijl deze in de tabel stromen. Zie Gegevenskwaliteit beheren met de verwachtingen van pijplijnen.

    • MASK-clausule

      Belangrijk

      Deze functie bevindt zich in openbare preview-versie.

      Voegt een kolommaskerfunctie toe om gevoelige gegevens anoniem te maken.

      Zie rijfilters en kolommaskers.

  • tabelbeperking

    Belangrijk

    Deze functie bevindt zich in openbare preview-versie.

    Wanneer u een schema opgeeft, kunt u primaire en vreemde sleutels definiëren. De beperkingen zijn informatief en worden niet afgedwongen. Zie de CONSTRAINT clausule in de SQL-taalreferentie.

    Opmerking

    Als u tabelbeperkingen wilt definiëren, moet uw pijplijn een Unity Catalog-pijplijn zijn.

  • tabel_clausules

    Geef optioneel partitionering, opmerkingen en door de gebruiker gedefinieerde eigenschappen voor de tabel op. Elke subclausule mag slechts eenmaal worden gespecificeerd.

    • DELTA GEBRUIKEN

      Hiermee geeft u de gegevensindeling op. De enige optie is DELTA.

      Deze component is optioneel en standaard ingesteld op DELTA.

    • GEPARTITIONEERD PER

      Een optionele lijst met een of meer kolommen die moeten worden gebruikt voor partitionering in de tabel. Wederzijds uitsluiten met CLUSTER BY.

      Liquid clustering biedt een flexibele, geoptimaliseerde oplossing voor clustering. Overweeg het gebruik CLUSTER BY in plaats van PARTITIONED BY voor pijplijnen.

    • CLUSTER BY

      Schakel vloeistofclustering in de tabel in en definieer de kolommen die moeten worden gebruikt als clustersleutels. Gebruik automatische liquide clustering met CLUSTER BY AUTOen Databricks kiest op intelligente wijze clusteringsleutels om de queryprestaties te optimaliseren. Wederzijds uitsluiten met PARTITIONED BY.

      Zie Liquid Clustering gebruiken voor tabellen.

    • PLAATS

      Een optionele opslaglocatie voor tabelgegevens. Als dit niet is ingesteld, wordt het systeem standaard ingesteld op de opslaglocatie van de pijplijn.

    • COMMENTAAR

      Een optionele STRING literal om de tabel te beschrijven.

    • TBLPROPERTIES

      Een optionele lijst met tabeleigenschappen voor de tabel.

    • MET ROW FILTER

    Belangrijk

    Deze functie bevindt zich in openbare preview-versie.

    Hiermee voegt u een rijfilterfunctie toe aan de tabel. Toekomstige query's voor die tabel ontvangen een subset van de rijen waarvoor de functie de waarde WAAR oplevert. Dit is handig voor gedetailleerd toegangsbeheer, omdat hiermee de functie de identiteit en groepslidmaatschappen van de aanroepende gebruiker kan inspecteren om te bepalen of bepaalde rijen moeten worden gefilterd.

    Zie ROW FILTER clausule.

  • vraag

    Met deze clausule wordt de tabel gevuld met behulp van de gegevens uit query. Deze query moet een streamingquery zijn. Gebruik het trefwoord STREAM om streaming-semantiek te gebruiken om uit de bron te lezen. Als de leesbewerking een wijziging of verwijdering van een bestaande record tegenkomt, wordt er een fout gegenereerd. Het is het veiligst om te lezen uit statische of alleen bij te voegen bronnen. Als u gegevens wilt opnemen die wijzigingen doorvoeren, kunt u Python en de SkipChangeCommits optie gebruiken om fouten te verwerken.

    Wanneer u een query en een table_specification samen opgeeft, moet het tabelschema dat is opgegeven in table_specification alle kolommen bevatten die door de queryworden geretourneerd, anders krijgt u een foutmelding. Kolommen die zijn opgegeven in table_specification maar niet worden geretourneerd door query geven null-waarden terug bij een query.

    Zie Gegevens transformeren met pijplijnenvoor meer informatie over het streamen van gegevens.

Vereiste toestemmingen

De run-as-gebruiker voor een pijplijn moet de volgende machtigingen hebben:

  • SELECT privilege over de basistabellen die door de streaming tabel worden gerefereerd.
  • USE CATALOG bevoegdheid voor de bovenliggende catalogus en USE SCHEMA bevoegdheid voor het bovenliggende schema.
  • CREATE MATERIALIZED VIEW privilege op het schema voor de streamingtabel.

Om ervoor te zorgen dat een gebruiker de pijplijn kan updaten waarin de streamingtabel is gedefinieerd, is het volgende vereist:

  • USE CATALOG bevoegdheid voor de bovenliggende catalogus en USE SCHEMA bevoegdheid voor het bovenliggende schema.
  • Eigendom van de streamingtabel of REFRESH bevoegdheid voor de streamingtabel.
  • De eigenaar van de streamingtabel moet de SELECT-machtiging hebben over de basistabellen waarnaar de streamingtabel verwijst.

Om een gebruiker in staat te stellen de resulterende streamingtabel te raadplegen, hebben ze het volgende nodig:

  • USE CATALOG bevoegdheid voor de bovenliggende catalogus en USE SCHEMA bevoegdheid voor het bovenliggende schema.
  • SELECT privilege over de streamingtabel.

Beperkingen

  • Alleen eigenaren van tabellen kunnen streamingtabellen vernieuwen om de meest recente gegevens op te halen.
  • ALTER TABLE opdrachten zijn niet toegestaan voor streamingtabellen. De definitie en eigenschappen van de tabel moeten worden gewijzigd via de instructie CREATE OR REFRESH of ALTER STREAMING TABLE.
  • Het tabelschema ontwikkelen via DML-opdrachten zoals INSERT INTOen MERGE wordt niet ondersteund.
  • De volgende opdrachten worden niet ondersteund voor streamingtabellen:
    • CREATE TABLE ... CLONE <streaming_table>
    • COPY INTO
    • ANALYZE TABLE
    • RESTORE
    • TRUNCATE
    • GENERATE MANIFEST
    • [CREATE OR] REPLACE TABLE
  • Het wijzigen van de naam van de tabel of het wijzigen van de eigenaar wordt niet ondersteund.
  • Gegenereerde kolommen, identiteitskolommen en standaardkolommen worden niet ondersteund.

Voorbeelden

-- 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;