Läsa in data med hjälp av strömmande tabeller i Databricks SQL

Viktigt!

Den här funktionen finns som allmänt tillgänglig förhandsversion. Om du vill registrera dig för åtkomst fyller du i det här formuläret.

Databricks rekommenderar att du använder strömmande tabeller för att mata in data med Databricks SQL. En strömmande tabell är en hanterad Unity Catalog-tabell med extra stöd för direktuppspelning eller inkrementell databearbetning. En DLT-pipeline skapas automatiskt för varje strömmande tabell. Du kan använda strömmande tabeller för inkrementell datainläsning från Kafka och molnobjektlagring.

Den här artikeln visar hur du använder strömmande tabeller för att läsa in data från molnobjektlagring som konfigurerats som en Unity Catalog-volym (rekommenderas) eller extern plats.

Kommentar

Information om hur du använder Delta Lake-tabeller som strömmande källor och mottagare finns i Delta table streaming reads and writes (Delta table streaming reads and writes).

Innan du börjar

Kontrollera att du har följande innan du börjar:

  • Ett Azure Databricks-konto med serverlöst aktiverat. Mer information finns i Aktivera serverlösa SQL-lager.

  • En arbetsyta med Unity Catalog aktiverat. Mer information finns i Konfigurera och hantera Unity Catalog.

  • Ett SQL-lager som använder Current kanalen.

  • Om du vill köra frågor mot strömmande tabeller som skapats av en Delta Live Tables-pipeline måste du använda en delad beräkning med Databricks Runtime 13.3 LTS och senare eller ett SQL-lager. Direktuppspelningstabeller som skapats i en Pipeline som är aktiverad i Unity Catalog kan inte frågas från tilldelade eller inga isoleringskluster.

  • Behörigheten READ FILES på en extern plats i Unity Catalog. Mer information finns i Skapa en extern plats för att ansluta molnlagring till Azure Databricks.

  • Behörigheten USE CATALOG för katalogen där du skapar strömningstabellen.

  • Behörigheten USE SCHEMA för schemat där du skapar strömningstabellen.

  • Behörigheten CREATE TABLE för schemat där du skapar strömningstabellen.

  • Sökvägen till dina källdata.

    Exempel på volymsökväg: /Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

    Exempel på extern platssökväg: abfss://myContainer@myStorageAccount.dfs.core.windows.net/analysis

    Kommentar

    Den här artikeln förutsätter att de data som du vill läsa in finns på en molnlagringsplats som motsvarar en Unity Catalog-volym eller en extern plats som du har åtkomst till.

Identifiera och förhandsgranska källdata

  1. I sidofältet på arbetsytan klickar du på Frågor och sedan på Skapa fråga.

  2. I frågeredigeraren väljer du ett SQL-lager som använder Current kanalen i listrutan.

  3. Klistra in följande i redigeraren, ersätt värden i vinkelparenteser (<>) för informationen som identifierar dina källdata och klicka sedan på Kör.

    Kommentar

    Du kan stöta på schemainferensfel när du kör read_files funktionen tabellvärde om standardvärdena för funktionen inte kan parsa dina data. Du kan till exempel behöva konfigurera flerradsläge för CSV- eller JSON-filer med flera rader. En lista över parsningsalternativ finns i read_files tabellvärdesfunktion.

    /* Discover your data in a volume */
    LIST "/Volumes/<catalog>/<schema>/<volume>/<path>/<folder>"
    
    /* Preview your data in a volume */
    SELECT * FROM read_files("/Volumes/<catalog>/<schema>/<volume>/<path>/<folder>") LIMIT 10
    
    /* Discover your data in an external location */
    LIST "abfss://<container>@<storage-account>.dfs.core.windows.net/<path>/<folder>"
    
    /* Preview your data */
    SELECT * FROM read_files("abfss://<container>@<storage-account>.dfs.core.windows.net/<path>/<folder>") LIMIT 10
    

Läsa in data i en strömmande tabell

Om du vill skapa en strömmande tabell från data i molnobjektlagring klistrar du in följande i frågeredigeraren och klickar sedan på Kör:

/* Load data from a volume */
CREATE OR REFRESH STREAMING TABLE <table-name> AS
SELECT * FROM STREAM read_files('/Volumes/<catalog>/<schema>/<volume>/<path>/<folder>')

/* Load data from an external location */
CREATE OR REFRESH STREAMING TABLE <table-name> AS
SELECT * FROM STREAM read_files('abfss://<container>@<storage-account>.dfs.core.windows.net/<path>/<folder>')

Uppdatera en strömmande tabell med hjälp av en DLT-pipeline

I det här avsnittet beskrivs mönster för att uppdatera en strömmande tabell med de senaste tillgängliga data från källorna som definierats i frågan.

CREATE åtgärder för strömmande tabeller använder ett Databricks SQL-lager för att skapa och läsa in data i strömningstabellen. REFRESH åtgärder för strömmande tabeller använder Delta Live Tables (DLT). En DLT-pipeline skapas automatiskt för varje strömmande tabell. När en strömmande tabell uppdateras initieras en uppdatering av DLT-pipelinen för att bearbeta uppdateringen.

När du har kört REFRESH kommandot returneras DLT-pipelinelänken. Du kan använda DLT-pipelinelänken för att kontrollera status för uppdateringen.

Kommentar

Endast tabellägaren kan uppdatera en strömmande tabell för att hämta de senaste data. Användaren som skapar tabellen är ägare och ägaren kan inte ändras.

Se Vad är Delta Live Tables?.

Mata endast in nya data

Som standard read_files läser funktionen alla befintliga data i källkatalogen när tabellen skapas och bearbetar sedan nyligen ankommande poster med varje uppdatering.

Om du vill undvika att mata in data som redan finns i källkatalogen när tabellen skapas anger du includeExistingFiles alternativet till false. Det innebär att endast data som tas emot i katalogen när tabellen har skapats har bearbetats. Till exempel:

CREATE OR REFRESH STREAMING TABLE my_bronze_table
AS SELECT *
FROM STREAM read_files(
  'abfss://myContainer@myStorageAccount.dfs.core.windows.net/analysis/*/*/*.json',
  includeExistingFiles => false)

Uppdatera en direktuppspelningstabell helt

Fullständiga uppdateringar bearbetar om alla data som är tillgängliga i källan med den senaste definitionen. Vi rekommenderar inte att du anropar fullständiga uppdateringar på källor som inte behåller hela datahistoriken eller har korta kvarhållningsperioder, till exempel Kafka, eftersom den fullständiga uppdateringen trunkerar befintliga data. Du kanske inte kan återställa gamla data om data inte längre är tillgängliga i källan.

Till exempel:

REFRESH STREAMING TABLE my_bronze_table FULL

Schemalägga en strömningstabell för automatisk uppdatering

Om du vill konfigurera en strömmande tabell så att den uppdateras automatiskt baserat på ett definierat schema klistrar du in följande i frågeredigeraren och klickar sedan på Kör:

ALTER STREAMING TABLE
[[<catalog>.]<database>.]<name>
ADD [SCHEDULE [REFRESH]
        CRON '<cron-string>'
                [ AT TIME ZONE '<timezone-id>' ]];

Exempel på uppdateringsschemafrågor finns i ALTER STREAMING TABLE (ÄNDRA STRÖMNINGSTABELL).

Spåra status för en uppdatering

Du kan visa status för en uppdatering av en strömmande tabell genom att visa pipelinen som hanterar strömningstabellen i Delta Live Tables-användargränssnittet eller genom att visa uppdateringsinformationen DESCRIBE EXTENDED som returneras av kommandot för den strömmande tabellen.

DESCRIBE EXTENDED <table-name>

Strömmande inmatning från Kafka

Ett exempel på strömmande inmatning från Kafka finns i read_kafka.

Ge användare åtkomst till en strömningstabell

Om du vill ge användarna behörighet i SELECT strömningstabellen så att de kan köra frågor mot den klistrar du in följande i frågeredigeraren och klickar sedan på Kör:

GRANT SELECT ON TABLE <catalog>.<schema>.<table> TO <user-or-group>

Mer information om hur du beviljar behörigheter för skyddsbara objekt i Unity Catalog finns i Unity Catalog-privilegier och skyddsbara objekt.

Begränsningar

  • Databricks SQL-strömningstabeller stöds inte i regionerna USA, södra centrala och USA, västra 2.

Ytterligare resurser