Udostępnij przez


CREATE STREAMING TABLE (potok danych)

Tabela strumieniowa to tabela z obsługą przesyłania strumieniowego lub przyrostowego przetwarzania danych. Tabele przesyłania strumieniowego są wspierane przez potoki. Za każdym razem, gdy tabela przesyłania strumieniowego jest odświeżona, dane dodawane do tabel źródłowych są dołączane do tabeli przesyłania strumieniowego. Tabele przesyłania strumieniowego można odświeżyć ręcznie lub zgodnie z harmonogramem.

Aby dowiedzieć się więcej o sposobie wykonywania lub planowania odświeżania, zobacz Uruchamianie aktualizacji potoku.

Składnia

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

    Jeśli zostanie określona, utworzy tabelę lub zaktualizuje istniejącą tabelę i jej zawartość.

  • PRYWATNY

    Tworzy prywatną tabelę do streamingu.

    • Nie są one dodawane do katalogu i są dostępne tylko w ramach definiowanego rurociągu.
    • Mogą mieć taką samą nazwę jak istniejący obiekt w wykazie. W obrębie potoku, jeśli prywatna tabela przesyłania strumieniowego i obiekt w katalogu mają taką samą nazwę, odwołania do tej nazwy będą kierowane do prywatnej tabeli przesyłania strumieniowego.
    • Prywatne tabele przesyłania strumieniowego są utrwalane na cały czas działania potoku, a nie tylko pojedynczą aktualizację.

    Prywatne tabele przesyłania strumieniowego zostały wcześniej utworzone za pomocą parametru TEMPORARY .

  • table_name

    Nazwa nowo utworzonej tabeli. W pełni kwalifikowana nazwa tabeli musi być unikatowa.

  • specyfikacja_tabeli

    Ta klauzula opcjonalna definiuje listę kolumn, ich typów, właściwości, opisów i ograniczeń kolumn.

  • ograniczenie tabeli

    Ważne

    Ta funkcja jest dostępna w publicznej wersji testowej.

    Podczas określania schematu można zdefiniować klucze podstawowe i obce. Ograniczenia są informacyjne i nie są wymuszane. Zobacz klauzulę CONSTRAINT w dokumentacji języka SQL.

    Uwaga / Notatka

    Aby zdefiniować ograniczenia tabeli, potok danych musi być potokiem posiadającym włączony Unity Catalog.

  • table_clauses

    Opcjonalnie określ partycjonowanie, komentarze i zdefiniowane przez użytkownika właściwości dla tabeli. Każda klauzula podrzędna może być określona tylko raz.

    • UŻYWANIE FUNKCJI DELTA

      Określa format danych. Jedyną opcją jest DELTA.

      Ta klauzula jest opcjonalna i domyślnie ustawiona na delta.

    • PODZIELONE PRZEZ

      Opcjonalna lista co najmniej jednej kolumny używanej do partycjonowania w tabeli. Wzajemnie wykluczające się z CLUSTER BY.

      Płynne klastrowanie zapewnia elastyczne, zoptymalizowane rozwiązanie do klastrowania. Rozważ użycie CLUSTER BY zamiast PARTITIONED BY potoków.

    • CLUSTER BY

      Włącz płynne klastrowanie w tabeli i zdefiniuj kolumny do użycia jako klucze klastrowania. Użyj automatycznego klastrowania Liquid z CLUSTER BY AUTO, a Databricks inteligentnie wybierze klucze klastrowania, aby zoptymalizować wydajność zapytań. Wzajemnie wykluczające się z PARTITIONED BY.

      Zobacz Używaj płynnego grupowania dla tabel.

    • LOKALIZACJA

      Opcjonalna lokalizacja przechowywania danych tabeli. Jeśli nie zostanie ustawiona, system domyślnie ustawi się na lokalizację przechowywania rurociągu.

    • KOMENTARZ

      Opcjonalny STRING literał opisujący tabelę.

    • TBLPROPERTIES

      Opcjonalna lista właściwości tabeli.

    • Z ROW FILTER

    Ważne

    Ta funkcja jest dostępna w publicznej wersji testowej.

    Dodaje do tabeli funkcję filtru wierszy. Przyszłe zapytania dotyczące tej tabeli otrzymują podzbiór wierszy, dla których funkcja daje wartość TRUE. Jest to przydatne w przypadku szczegółowej kontroli dostępu, ponieważ umożliwia funkcji inspekcję tożsamości i członkostwa w grupach użytkownika wywołującego, aby zdecydować, czy filtrować niektóre wiersze.

    Zobacz ROW FILTER klauzulę.

  • zapytanie

    Ta klauzula wypełnia tabelę przy użyciu danych z query. To zapytanie musi być zapytaniem przesyłanym strumieniowo. Użyj słowa kluczowego STREAM, aby stosować semantykę przesyłania strumieniowego do odczytu ze źródła. Jeśli odczyt napotka zmianę lub usunięcie istniejącego rekordu, zostanie zgłoszony błąd. Odczyt ze źródeł statycznych lub dołączanych jest najbezpieczniejszy. Aby pozyskiwać dane, które mają zatwierdzenia zmian, możesz użyć Pythona i opcji SkipChangeCommits do obsługi błędów.

    Po określeniu query i table_specification razem schemat tabeli określony w table_specification musi zawierać wszystkie kolumny zwrócone przez query, w przeciwnym razie zostanie wyświetlony błąd. Wszystkie kolumny określone w table_specification, ale nie zwracane przez query zwracają wartości null podczas wykonywania zapytania.

    Aby uzyskać więcej informacji na temat danych przesyłanych strumieniowo, zobacz Przekształcanie danych za pomocą potoków.

Wymagane uprawnienia

Użytkownik, pod którego uprawnieniami uruchamiany jest potok, musi mieć następujące uprawnienia:

  • SELECT uprawnienia dotyczące tabel bazowych, do których odnosi się tabela przesyłania strumieniowego.
  • uprawnienie USE CATALOG w katalogu nadrzędnym oraz uprawnienie USE SCHEMA w schemacie nadrzędnym.
  • CREATE MATERIALIZED VIEW uprawnienia do schematu dla tabeli przesyłania strumieniowego.

Aby użytkownik mógł zaktualizować potok, w ramach którego zdefiniowano tabelę przesyłania strumieniowego, wymagane są następujące elementy:

  • uprawnienie USE CATALOG w katalogu nadrzędnym oraz uprawnienie USE SCHEMA w schemacie nadrzędnym.
  • Własność tabeli przesyłania strumieniowego lub REFRESH uprawnienia do tabeli przesyłania strumieniowego.
  • Właściciel tabeli streamingowej musi mieć SELECT uprawnienia do tabel podstawowych, do których odnosi się tabela streamingowa.

Aby użytkownik mógł wykonywać zapytania względem wynikowej tabeli przesyłania strumieniowego, potrzebują:

  • uprawnienie USE CATALOG w katalogu nadrzędnym oraz uprawnienie USE SCHEMA w schemacie nadrzędnym.
  • SELECT uprawnienia do tabeli streamingowej.

Ograniczenia

  • Tylko właściciele tabel mogą odświeżać tabele przesyłania strumieniowego, aby uzyskać najnowsze dane.
  • Polecenia ALTER TABLE są niedozwolone w tabelach strumieniowych. Definicja i właściwości tabeli powinny zostać zmienione za pomocą instrukcji CREATE OR REFRESH lub ALTER STREAMING TABLE.
  • Ewolucja schematu tabeli za pomocą poleceń DML, takich jak INSERT INTO, i MERGE nie jest obsługiwana.
  • Następujące komendy nie są obsługiwane w tabelach przesyłania strumieniowego:
    • CREATE TABLE ... CLONE <streaming_table>
    • COPY INTO
    • ANALYZE TABLE
    • RESTORE
    • TRUNCATE
    • GENERATE MANIFEST
    • [CREATE OR] REPLACE TABLE
  • Zmiana nazwy tabeli lub zmiana właściciela nie jest obsługiwana.
  • Wygenerowane kolumny, kolumny tożsamości i kolumny domyślne nie są obsługiwane.

Przykłady

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