Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Databricks doporučuje používat streamované tabulky k příjmu dat pomocí Databricks SQL. streamovací tabulka je tabulka zaregistrovaná v Unity Catalog s dodatečnou podporou pro streamování nebo přírůstkové zpracování dat. Potrubí se automaticky vytvoří pro každou streamovací tabulku. Streamované tabulky můžete použít k přírůstkové načítání dat ze systému Kafka a cloudového úložiště objektů.
Poznámka:
Informace o tom, jak používat tabulky Delta Lake jako zdroj a cíl streamování, najdete v sekci Streamované čtení a zápisy tabulek Delta.
Požadavky
Pokud chcete používat streamované tabulky, musíte splňovat následující požadavky.
Požadavky na pracovní prostor:
Streamované tabulky vytvořené v Databricks SQL jsou podporovány bezserverovými kanály. Aby se tato funkce používala, musí váš pracovní prostor podporovat bezserverové kanály.
- Účet Azure Databricks s povolenou bezserverovou funkcí. Další informace naleznete v tématu Povolení bezserverových SQL skladů.
- Pracovní prostor s aktivovaným katalogem Unity. Další informace najdete v tématu Začínáme s katalogem Unity.
Požadavky na výpočetní prostředky:
Musíte použít jednu z následujících možností:
- Databázový sklad SQL, který používá kanál
Current. - Výpočty se standardním režimem přístupu (dříve sdíleným režimem přístupu) ve službě Databricks Runtime 13.3 LTS nebo vyšší.
Výpočty s vyhrazeným režimem přístupu (dříve režim přístupu jednoho uživatele) v Databricks Runtime 15.4 LTS nebo novějším.
V Databricks Runtime 15.3 a níže nemůžete použít vyhrazené výpočetní prostředky k dotazování streamovaných tabulek, které vlastní jiných uživatelů. Vyhrazený výpočetní výkon můžete použít na Databricks Runtime verze 15.3 a starší pouze tehdy, pokud vlastníte streamingovou tabulku. Tvůrce tabulky je vlastníkem.
Databricks Runtime 15.4 LTS a vyšší podporují dotazování tabulek generovaných pipelinou na vyhrazených výpočetních uzlech, i když nejste vlastníkem tabulky. Za bezserverové výpočetní prostředky se můžou účtovat poplatky, když k provádění operací filtrování dat použijete vyhrazené výpočetní prostředky. Podívejte se na jemně odstupňované řízení přístupu u vyhrazených výpočetních prostředků.
Požadavky na oprávnění:
-
USE CATALOGaUSE SCHEMAoprávnění k katalogu a schématu, ve kterém vytvoříte streamovací tabulku. - Oprávnění
CREATE TABLEpro schéma, ve kterém vytvoříte streamovací tabulku. - Oprávnění k přístupu k tabulkám nebo umístěním, které poskytují zdrojová data pro vaši streamovací tabulku.
Vytvořte streamované tabulky
Streamovací tabulka je definována dotazem SQL v Databricks SQL. Při vytváření streamované tabulky se data ve zdrojových tabulkách aktuálně používají k sestavení streamované tabulky. Potom aktualizujete tabulku, obvykle podle plánu, aby se všechna přidaná data ve zdrojových tabulkách připojila k streamované tabulce.
Když vytvoříte streamovací tabulku, považujete se za vlastníka tabulky.
Pokud chcete vytvořit streamovací tabulku z existující tabulky, použijte příkazCREATE STREAMING TABLE, jak je znázorněno v následujícím příkladu:
CREATE OR REFRESH STREAMING TABLE sales
SCHEDULE EVERY 1 hour
AS SELECT product, price FROM STREAM raw_data;
V tomto případě se streamovací tabulka sales vytvoří z konkrétních sloupců raw_data tabulky s plánem, který se má aktualizovat každou hodinu. Použitý dotaz musí být streamovací dotaz. Pomocí klíčového STREAM slova můžete ke čtení ze zdroje použít sémantiku streamování.
Když pomocí příkazu CREATE OR REFRESH STREAMING TABLE vytvoříte streamovací tabulku, počáteční aktualizace dat a populace začnou okamžitě. Tyto operace nespotřebovávají výpočetní prostředky skladu DBSQL. Místo toho streamovaná tabulka spoléhá na bezserverové kanály pro vytvoření i aktualizaci. Pro každou streamovací tabulku se automaticky vytvoří a spravuje vyhrazené bezserverové potrubí systémem.
Načtení souborů pomocí Auto Loaderu
Pokud chcete vytvořit streamovací tabulku ze souborů v objemu, použijte Auto Loader. Pro většinu úloh na příjem dat z cloudového objektového úložiště použijte Auto Loader. Automatické nástroje pro nahrávání a datové kanály jsou navrženy tak, aby postupně a idempotentně načítaly stále rostoucí množství dat, jakmile dorazí do cloudového úložiště.
Pokud chcete v Databricks SQL použít automatický zavaděč, použijte funkci read_files. Následující příklady ukazují použití Auto Loaderu ke čtení množiny souborů JSON do streamovací tabulky:
CREATE OR REFRESH STREAMING TABLE sales
SCHEDULE EVERY 1 hour
AS SELECT * FROM STREAM read_files(
"/Volumes/my_catalog/my_schema/my_volume/path/to/data",
format => "json"
);
Ke čtení dat z cloudového úložiště můžete použít, také Auto Loader:
CREATE OR REFRESH STREAMING TABLE sales
SCHEDULE EVERY 1 hour
AS SELECT *
FROM STREAM read_files(
'abfss://myContainer@myStorageAccount.dfs.core.windows.net/analysis/*/*/*.json',
format => "json"
);
Další informace o automatickém zavaděči najdete v tématu Co je automatický zavaděč?. Další informace o používání Auto Loaderu v SQL najdete včetně příkladů v kapitole Načtení dat z úložiště objektů.
Streamovaný příjem z jiných zdrojů
Příklad příjmu dat z jiných zdrojů, včetně Kafka, najdete v tématu Načtení dat v kanálech.
Přijímat pouze nová data
Ve výchozím nastavení funkce read_files čte všechna existující data ve zdrojovém adresáři během vytváření tabulky a pak zpracovává nově přicházející záznamy s každou aktualizací.
Chcete-li zabránit ingestování dat, která již existují ve zdrojovém adresáři při vytváření tabulky, nastavte includeExistingFiles možnost false. To znamená, že se zpracovávají pouze data, která dorazí do adresáře po vytvoření tabulky. Například:
CREATE OR REFRESH STREAMING TABLE sales
SCHEDULE EVERY 1 hour
AS SELECT *
FROM STREAM read_files(
'/path/to/files',
includeExistingFiles => false
);
Nastavení běhového kanálu
Streamované tabulky vytvořené pomocí SQL warehouses se automaticky aktualizují pomocí pipeline. Pipeliny používají modul runtime v kanálu current ve výchozím nastavení. Informace o procesu vydání verze najdete v poznámkách k deklarativním kanálům Sparku a procesu upgradu verze .
Databricks doporučuje používat current kanál pro produkční úlohy. Nové funkce jsou nejprve vydány na preview kanálu. Můžete nastavit pipeline na preview kanál a otestovat nové funkce zadáním preview jako vlastnosti tabulky. Tuto vlastnost můžete zadat při vytváření tabulky nebo po vytvoření tabulky pomocí příkazu ALTER.
Následující příklad kódu ukazuje, jak nastavit kanál na náhled v příkazu CREATE:
CREATE OR REFRESH STREAMING TABLE sales
TBLPROPERTIES ('pipelines.channel' = 'preview')
SCHEDULE EVERY 1 hour
AS SELECT *
FROM STREAM raw_data;
Naplánování aktualizací tabulky streamování
Tabulku streamování SQL Databricks můžete nakonfigurovat tak, aby se automaticky aktualizovala na základě definovaného plánu nebo aby se aktivovala při změně nadřazených dat.
Důležité
Funkce TRIGGER ON UPDATE je v beta verzi.
Pokud chcete nastavit plán nebo trigger, udělejte jednu z těchto věcí:
- Při
SCHEDULEnakonfigurujte plán s klauzulí. - Při vytváření tabulky nakonfigurujte trigger s
TRIGGER ON UPDATEklauzulí. - Přidejte nebo upravte plány nebo triggery pomocí ALTER STREAMING TABLE příkazu.
Poznámka:
Případně vytvořte v úloze úkol, který obsahuje příkaz CREATE OR REFRESH STREAMING TABLE nebo REFRESH příkaz, a orchestrujte ho stejně jako jakoukoli jinou úlohu. Podívejte se na Úlohy Lakeflow.
Když vytvoříte plán, Azure Databricks automaticky vytvoří novou úlohu pro zpracování aktualizace.
Pokud chcete zobrazit plán, udělejte jednu z těchto věcí:
-
DESCRIBE EXTENDEDSpusťte příkaz z editoru SQL v uživatelském rozhraní Azure Databricks. Viz DESCRIBE TABLE. - K zobrazení tabulky streamování použijte Průzkumníka katalogu. Plán je uvedený na kartě Přehled v části Stav aktualizace. Podívejte se na Co je to Průzkumník katalogu?.
I s plánem aktualizace můžete kdykoli spustit ruční aktualizaci, pokud potřebujete aktualizovaná data.
Skrytí citlivých dat
Streamované tabulky můžete použít ke skrytí citlivých dat od uživatelů, kteří k tabulce přistupují. Jedním z přístupů je definovat dotaz tak, aby zcela vyloučil citlivé sloupce nebo řádky. Alternativně můžete použít masky sloupců nebo filtry řádků na základě oprávnění uživatele, který se dotazuje. Můžete například skrýt tax_id sloupec pro uživatele, kteří nejsou ve skupině HumanResourcesDept. Provedete to tak, že během vytváření tabulky streamování použijete syntaxi ROW FILTER a MASK. Další informace najdete v tématu Filtry řádků a masky sloupců.
Aktualizace streamované tabulky
Aktualizace se dají naplánovat automaticky při vytváření tabulky streamování. Můžete také ručně aktualizovat streamované tabulky. I když máte naplánovanou aktualizaci, můžete kdykoli zavolat ruční aktualizaci. Aktualizace se zpracovávají stejným procesem, který byl automaticky vytvořen společně se streamovací tabulkou.
Aktualizace streamované tabulky:
REFRESH STREAMING TABLE sales;
Stav nejnovější aktualizace můžete zkontrolovat pomocí DESCRIBE TABLE funkce EXTENDED.
Poznámka:
Možná budete muset aktualizovat svou streamovací tabulku před použitím dotazů na cestování časem .
Jak funguje aktualizace
Aktualizace tabulky streamování vyhodnocuje pouze nové řádky, které přišly od poslední aktualizace, a připojí pouze nová data.
Každá aktualizace používá k zpracování těchto nových dat aktuální definici tabulky streamování. Úprava definice streamované tabulky automaticky nepřepočítává existující data. Pokud je úprava nekompatibilní s existujícími daty (například změnou datového typu), další aktualizace selže s chybou.
Následující příklady vysvětlují, jak změny definice streamované tabulky ovlivňují chování aktualizace:
- Odebrání filtru nebude znovu zpracovávat dříve filtrované řádky.
- Změna projekcí sloupců neovlivní způsob zpracování existujících dat.
- Spojení se statickými snímky používají stav snímku v době počátečního zpracování. Zpožděná příchozí data, která by odpovídala aktualizovanému snímku, budou ignorována. To může vést k opomenutí faktů, pokud jsou dimenze zpožděné.
- Změna typu existujícího sloupce vyvolá chybu.
Pokud se vaše data změní způsobem, který nelze v existující streamovací tabulce podporovat, můžete provést úplnou aktualizaci.
Úplné obnovení streamovací tabulky
Úplné aktualizace znovu zpracovávají všechna data dostupná ve zdroji s nejnovější definicí. Nedoporučuje se volat úplné aktualizace zdrojů, které neuchovávají celou historii dat nebo mají krátkou dobu uchovávání, například Kafka, protože úplná aktualizace zkracuje stávající data. Pokud už data nejsou ve zdroji dostupná, možná nebudete moct obnovit stará data.
Například:
REFRESH STREAMING TABLE sales FULL;
Změna plánu streamované tabulky
Můžete upravit (nebo nastavit) plán automatické aktualizace pro tabulku streamování. Následující příklady ukazují, jak nastavit plán pomocí ALTER STREAMING TABLE:
ALTER STREAMING TABLE sales
ADD SCHEDULE EVERY 1 HOUR;
-- Alters the schedule to refresh the streaming table when its upstream data
-- gets updated.
ALTER STREAMING TABLE sales
ALTER TRIGGER ON UPDATE;
Například dotazy k aktualizaci rozvrhu najdete v tématu ALTER STREAMING TABLE.
Sledování stavu aktualizace
Stav aktualizace streamované tabulky můžete zobrazit zobrazením kanálu, který spravuje tabulku streamování v uživatelském rozhraní Pipelines, nebo zobrazením informací o aktualizaci vrácených příkazem DESCRIBE EXTENDED pro tabulku streamování.
DESCRIBE TABLE EXTENDED <table-name>;
Případně můžete zobrazit streamovací tabulku v Průzkumníku katalogu a zobrazit stav aktualizace tam:
- Klikněte na
Katalog na bočním panelu
- Ve stromu Průzkumníka katalogu vlevo otevřete katalog a vyberte schéma, ve kterém se nachází tabulka streamování.
- Otevřete položku Tabulky ve vybraném schématu a klikněte na tabulku streamování.
Odtud můžete pomocí karet pod názvem streamovací tabulky zobrazit a upravit informace o streamované tabulce, včetně:
- Obnovit stav a historii
- Schéma tabulky
- Ukázková data (vyžaduje aktivní výpočetní prostředky)
- Povolení
- Rodokmen, včetně tabulek a pipelinek, na které závisí tato streamovací tabulka
- Vhledy do využití
- Monitory, které jste vytvořili pro tuto streamovací tabulku
Časové limity pro aktualizace
Dlouhotrvající aktualizace mohou vypršet časový limit. Streamované tabulky vytvořené nebo aktualizované po 14. srpnu 2025 použijí časový limit přidružený k SQL Warehouse použitému ke spuštění aktualizace. Pokud sklad nemá nastavený časový limit, použije se výchozí hodnota 2 dny.
Poznámka:
Tabulka streamování synchronizuje časový limit pouze při ručním CREATE OR REFRESH spuštění příkazu. Naplánované aktualizace zachovávají časový limit od nejnovějšího CREATE OR REFRESH.
Časový limit můžete explicitně nastavit pomocí STATEMENT_TIMEOUT konfigurace v SQL pro aktualizaci. Viz STATEMENT_TIMEOUT.
Řízení přístupu k streamovaným tabulkám
Streamované tabulky podporují bohaté řízení přístupu, které podporují sdílení dat, a zároveň se vyhýbají potenciálně privátním datům. Vlastník tabulky streamování nebo uživatel s MANAGE oprávněním může udělit SELECT oprávnění jiným uživatelům. Uživatelé s SELECT přístupem k tabulce streamování nepotřebují SELECT přístup k tabulkám, na které odkazuje tabulka streamování. Toto řízení přístupu umožňuje sdílení dat při řízení přístupu k podkladovým datům.
Udělte oprávnění streamovací tabulce
Pokud chcete udělit přístup ke streamované tabulce, použijte tentoGRANT příkaz:
GRANT <privilege_type> ON <st_name> TO <principal>;
Může být privilege_type.
-
SELECT– uživatel můžeSELECTstreamovací tabulku. -
REFRESH– uživatel můžeREFRESHstreamovací tabulku. Aktualizace se spouští pomocí oprávnění vlastníka.
Následující příklad vytvoří streamovací tabulku a udělí uživatelům oprávnění k výběru a aktualizaci:
CREATE MATERIALIZED VIEW st_name AS SELECT * FROM source_table;
-- Grant read-only access:
GRANT SELECT ON st_name TO read_only_user;
-- Grand read and refresh access:
GRANT SELECT ON st_name TO refresh_user;
GRANT REFRESH ON st_name TO refresh_user;
Další informace o udělení oprávnění k zabezpečitelným objektům v katalogu Unity naleznete v tématu Oprávnění katalogu Unity a zabezpečitelné objekty.
Odebrat oprávnění ze streamovací tabulky
Pokud chcete odvolat přístup z tabulky streamování, použijte tentoREVOKE příkaz:
REVOKE privilege_type ON <st_name> FROM principal;
Když SELECT dojde k odvolání oprávnění ke zdrojové tabulce od vlastníka streamované tabulky nebo jakéhokoliv jiného uživatele, kterému byla udělena MANAGE nebo SELECT oprávnění na streamovanou tabulku, nebo dojde k vyřazení zdrojové tabulky, vlastník streamované tabulky nebo uživatel s uděleným přístupem může stále dotazovat streamovanou tabulku. Dochází však k následujícímu chování:
- Vlastník streamovací tabulky a další, kteří ztratili přístup ke streamovací tabulce, ji už nemohou používat a streamovací tabulka se stane zastaralou.
- Pokud je plán automatizovaný, další naplánovaný plán
REFRESHselže nebo se nespustí.
Následující příklad odvolá SELECT oprávnění z read_only_user:
REVOKE SELECT ON st_name FROM read_only_user;
trvalé odstranění záznamů z tabulky streamování
Důležité
Podpora příkazu REORG s tabulkami streamování je ve verzi Public Preview.
Poznámka:
- Použití příkazu
REORGse streamovací tabulkou vyžaduje Databricks Runtime 15.4 a vyšší. - Ačkoli můžete použít
REORGs libovolnou streamovací tabulkou, je ho potřeba jen při odstraňování záznamů ze streamovací tabulky s povolenými vektory odstranění. Příkaz nemá žádný vliv při použití se streamovanou tabulkou bez povolených vektorů odstranění.
Pokud chcete fyzicky odstranit záznamy z podkladového úložiště pro streamovanou tabulku s povolenými vektory odstranění, jako je například dodržování gdpr, je potřeba provést další kroky, které zajistí, aby VACUUM operace běžela na datech streamované tabulky.
Fyzické odstranění záznamů z podkladového úložiště:
- Aktualizujte záznamy nebo odstraňte záznamy z tabulky streamování.
- Spusťte příkaz
REORGpro tabulku streamování a zadejte parametrAPPLY (PURGE). Příklad:REORG TABLE <streaming-table-name> APPLY (PURGE);. - Počkejte, až uplyne doba uchovávání dat streamované tabulky. Výchozí doba uchovávání dat je sedm dní, ale je možné ji nakonfigurovat pomocí vlastnosti
delta.deletedFileRetentionDurationtabulky. Viz Konfigurace uchovávání dat pro časové dotazy. -
REFRESHstreamovací tabulka. Viz Aktualizace streamované tabulky. Během 24 hodin poREFRESHoperaci se úkoly údržby potrubí, včetněVACUUMoperace potřebné k trvalému odstranění záznamů, automaticky spustí.
Monitorování běhů pomocí historie dotazů
Na stránce historie dotazů můžete získat přístup k podrobnostem dotazu a profilům dotazů, které vám pomůžou identifikovat špatně výkonné dotazy a kritické body v kanálu používaném ke spouštění aktualizací streamovaných tabulek. Přehled o druhu informací dostupných v historii dotazů a profilech dotazů najdete v tématu Historie dotazů a profil dotazu.
Důležité
Tato funkce je ve verzi Public Preview. Správci pracovního prostoru můžou řídit přístup k této funkci ze stránky Previews . Podívejte se na Správa náhledů Azure Databricks.
Všechny příkazy související se streamovanými tabulkami se zobrazí v historii dotazů. Pomocí rozevíracího filtru Příkaz můžete vybrat libovolný příkaz a zkontrolovat související dotazy. Za všemi CREATE příkazy následuje REFRESH příkaz, který se v rámci pipeline spouští asynchronně. Příkazy REFRESH obvykle zahrnují podrobné plány dotazů, které poskytují přehled o optimalizaci výkonu.
Pokud chcete získat přístup k REFRESH příkazům v uživatelském rozhraní historie dotazů, postupujte následovně:
- Klikněte na
Na levém bočním panelu otevřete uživatelské rozhraní Historie dotazů .
- Z rozbalovacího filtru REFRESH zaškrtněte políčko .
- Kliknutím na název příkazu dotazu zobrazíte souhrnné podrobnosti, jako je doba trvání dotazu a agregované metriky.
- Kliknutím na Zobrazit profil dotazu otevřete profil dotazu. Podrobnosti o navigaci v profilu dotazu najdete v části Profil dotazu.
- Volitelně můžete pomocí odkazů v části Zdroj dotazů otevřít související dotaz nebo kanál.
K podrobnostem dotazu můžete přistupovat také pomocí odkazů v editoru SQL nebo z poznámkového bloku připojeného k SQL Warehouse.
Přístup ke streamovaným tabulkám z externích klientů
Pro přístup ke streamovaným tabulkám z externích klientů Delta Lake nebo Iceberg, kteří nepodporují otevřená rozhraní API, můžete použít režim kompatibility. Režim kompatibility vytvoří verzi streamovací tabulky jen pro čtení, ke které má přístup jakýkoli klient Delta Lake nebo Iceberg.
Dodatečné zdroje
- Deklarativní kanály Lakeflow Spark
-
read_filestabulkově hodnotová funkce -
read_kafkatabulkově hodnotová funkce - CREATE STREAMING TABLE
- ALTER STREAMING TABLE
- Použití materializovaných zobrazení v Databricks SQL