Sdílet prostřednictvím


Monitorování materializovaných zobrazení v Databricks SQL

Tento článek popisuje, jak monitorovat a dotazovat se na aktualizační data o materializovaném zobrazení v Databricks SQL.

Zobrazit podrobnosti o jednom materializovaném zobrazení

Podrobnosti o jednom materializovaném zobrazení můžete zobrazit pomocí Průzkumníka katalogu nebo programově s DESCRIBE EXTENDED operací. Protokol událostí můžete také dotazovat na podrobnosti historie aktualizace materializovaného zobrazení.

Zobrazení podrobností v Průzkumníku katalogu

Informace o materializovaném zobrazení získáte při zobrazení v Průzkumníku katalogu. V Průzkumníku katalogu uvidíte stav poslední aktualizace a všechny plány aktualizací vytvořené v SQL. Podrobnosti o plánech vytvořených v SQL najdete v tématu CREATE MATERIALIZED VIEW.

Průzkumník katalogu zobrazuje podrobnosti o jednotlivých materializovaných zobrazeních na pravém panelu, včetně:

  1. Aktuální stav aktualizace a čas posledního spuštění Pokud chcete zobrazit další podrobnosti o aktualizaci, včetně doby trvání spuštění, všech podrobných chyb a typu aktualizace (včetně toho, jestli bylo materializované zobrazení plně nebo přírůstkově aktualizováno a proč), klikněte na Zobrazit podrobnosti o aktualizaci.
  2. Plán aktualizace Pokud materializované zobrazení obsahuje plán nastavený prostřednictvím SQL, zobrazí se plán. Chcete-li aktualizovat plán, použijte ALTER MATERIALIZED VIEW.
  3. Značky. Pokud chcete přidat vlastní značky, klikněte na Přidat značky. Značky se automaticky nepoužívají k atribuci nákladů, ale můžete ručně vytvořit dotaz, kterým připojíte vlastní značky k nákladům. Podrobnosti najdete v tématu Náklady na atributy pro SQL Warehouse s vlastními značkami.

V Průzkumníku katalogu nejsou k dispozici vlastnosti materializovaného zobrazení. Pro tyto vlastnosti nebo získání informací prostřednictvím kódu programu můžete použít DESCRIBE EXTENDED příkaz.

Zobrazení podrobností pomocí DESCRIBE EXTENDED

Podrobnosti o materializovaném zobrazení můžete zobrazit programově pomocí příkazu DESCRIBE EXTENDED. To zahrnuje podrobnosti nad rámec toho, co získáte z Průzkumníka katalogu. Patří mezi ně:

  • Stav poslední dokončené aktualizace.

  • Plán aktualizace.

  • Sloupce materializovaného zobrazení

  • Typ aktualizace materializovaného zobrazení (není k dispozici v Průzkumníku katalogu).

  • Velikost dat materializovaného zobrazení v celkovém počtu bajtů (není k dispozici v Průzkumníku katalogu).

  • Umístění úložiště materializovaného zobrazení (není k dispozici v Průzkumníku katalogu).

  • Některé informace se do výsledku zahrnou jenom v případech, kdy je tato možnost povolená:

    • Sloupce clusteringu, pokud jsou povolené.
    • Zda jsou povoleny vektory odstranění (zobrazeny pouze v případech true).
    • Zda je povoleno sledování řádků (zobrazuje se pouze v případech true).
-- As table:
DESCRIBE TABLE EXTENDED sales;

-- As a single JSON object:
DESCRIBE TABLE EXTENDED sales AS JSON;

Dotazování protokolu událostí prostřednictvím kódu programu

Pokud chcete získat podrobnosti o historii aktualizace pro materializované zobrazení nebo podrobnosti, ke které dochází při aktualizaci, můžete do protokolu událostí zadávat dotazy prostřednictvím kódu programu.

Jako vlastník kanálu můžete vytvořit zobrazení , které ostatním umožní dotazovat se na protokol událostí pro váš kanál. Následující dotaz vytvoří zobrazení, které můžou ostatní použít k dotazování protokolu událostí. Tento dotaz používá TABLE funkci value k dotazování správné tabulky protokolu událostí.

CREATE VIEW my_event_log_view AS
  SELECT *
  FROM event_log(TABLE(<catalog_name>.<schema_name>.<mv_name>));

K dotazování zobrazení protokolu událostí použijte dotaz podobný následujícímu.

SELECT *
  FROM my_event_log_view
  WHERE event_type = "update_progress"
  ORDER BY timestamp desc;

Pokud chcete dotazovat protokol událostí přímo jako vlastník kanálu, nemusíte vytvářet zobrazení. Můžete použít TABLE funkci hodnoty a dotazovat se přímo na data, například následující ukázkový dotaz.

SELECT *
  FROM event_log(TABLE(<catalog_name>.<schema_name>.<mv_name>))
  WHERE event_type = "update_progress"
  ORDER BY timestamp desc;

Úplný seznam ukázkových dotazů využívajících protokol událostí najdete v základních příkladech dotazů.

Monitorování spuštění materializovaných pohledů

Spuštění kanálu můžete monitorovat v celém pracovním prostoru pomocí stránky Úlohy a Kanály , stránky Historie dotazů nebo programově dotazováním protokolu událostí.

Zobrazení všech běhů materializovaného pohledu v rozhraní uživatele

Pokud ke sledování stavu různých úloh orchestrace v pracovním prostoru použijete stránku Úlohy a kanály , můžete také sledovat všechna materializovaná zobrazení a streamované tabulky vytvořené tam. Každé materializované zobrazení vytvořené v Databricks SQL má kanál, který ho zálohuje. Pokud chcete zobrazit všechna materializovaná zobrazení a streamované tabulky, ke kterým máte přístup:

  1. Klikněte na ikonu Pracovní postupy.Tlačítko Úlohy a kanály na levé straně pracovního prostoru
  2. Kliknutím na přepínač Kanály vyfiltrujte zobrazení jenom na kanály.
  3. Klikněte na tlačítko Typ kanálu a výběrem MV/ST vyfiltrujte pouze kanály vytvořené službou Databricks SQL.
  4. Kliknutím na filtr Přístupné podle mě zobrazíte všechny kanály, ke kterým máte přístup.

Uvidíte všechna materializovaná zobrazení a streamované tabulky vytvořené v rámci vaší organizace, včetně souhrnného zobrazení stavu posledních spuštění. Kliknutím na název kanálu otevřete stránku s podrobnostmi o monitorování kanálu a získáte další informace. Další informace o stránce s podrobnostmi monitorování kanálu najdete v tématu Řešení potíží s neúspěšnou aktualizací.

Zobrazení záznamů pomocí historie dotazů

Pokud jste obeznámeni s kartou Historie dotazů , můžete ho také použít k zobrazení všech předchozích spuštění všech dotazů, ve kterých máte alespoň CAN VIEW přístup ke spuštěné službě SQL Warehouse. 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 pro historii dotazů a profily 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í s materializovanými zobrazeními 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ě:

  1. Klikněte na ikonu Historie.Historie dotazů na levém bočním panelu
  2. Z rozbalovacího filtru REFRESH zaškrtněte políčko .
  3. Kliknutím na název příkazu dotazu zobrazíte souhrnné podrobnosti, jako je doba trvání dotazu a agregované metriky.
  4. Kliknutím na Zobrazit profil dotazu otevřete profil dotazu. Podrobnosti o navigaci v profilu dotazu najdete v Profilu dotazu.
  5. Volitelně můžete pomocí odkazů v části Zdroj dotazů otevřít související dotaz nebo kanál.

Viz CREATE MATERIALIZED VIEW.

Řešení potíží s neúspěšnou aktualizací

Neúspěšné aktualizace pro materializovaná zobrazení (nebo tabulky streamování) najdete v seznamu Úlohy a kanály . K řešení potíží s neúspěšnou aktualizací použijte stránku podrobností monitorování kanálu nebo protokol událostí.

Pokud chcete vyřešit potíže s aktualizací, která je plná, pokud se domníváte, že by měla být přírůstková, nejprve zkontrolujte, jestli je pro všechny zdrojové tabulky Delta povolené sledování řádků . Další podrobnosti o přírůstkové aktualizaci najdete v tématu Podpora materializovaného zobrazení přírůstkové aktualizace.

Další podrobnosti můžete získat ze stránky monitorování kanálu nebo dotazováním protokolu událostí prostřednictvím kódu programu.

Použití stránky monitorování kanálu

Pokud chcete získat další podrobnosti o materializovaném zobrazení (nebo streamovací tabulce), které selhalo, můžete pro ladění problémů použít monitorovací stránku pipeline. Každé materializované zobrazení má podpůrný datový tok. Stránka monitorování kanálu obsahuje informace, například:

  • Stav posledního spuštění a historie spuštění.
  • Trvání posledního běhu.
  • Bez ohledu na to, jestli se materializované zobrazení plně nebo přírůstkově aktualizuje. Další podrobnosti o získání materializovaného zobrazení tak, aby se přírůstkově aktualizovalo, najdete v tématu Podpora přírůstkového obnovení materializovaného zobrazení.
  • Záznam událostí pro podrobnější ladění. V případě, že se materializované zobrazení nepodařilo aktualizovat nebo došlo k jiným problémům, kliknutím na panel problémů zobrazte protokoly podrobněji.

Řešení potíží s materializovaným zobrazením:

  1. V pracovním prostoru klikněte na ikonu Pracovní postupy.Tlačítko Úlohy a kanály na levém navigačním panelu
  2. V seznamu klikněte na název kanálu.
  3. Pokud se aktualizaci nepovedlo spustit, uživatelské rozhraní na dolním panelu zobrazí chybu (nebo seznam chyb).
  4. Kliknutím na tlačítko Zobrazíte protokoly nebo kliknutím na panel Problémů zobrazíte chyby podrobněji.
  5. Tím se otevře uživatelské rozhraní protokolu událostí. Každá chyba obsahuje základní zprávu a souhrn a také kartu JSON s dalšími podrobnostmi. Pokud chcete vyřešit problém s nástrojem Databricks Assistant, klikněte na diagnostikovat chybu.

Další podrobnosti na stránce monitorování kanálu najdete tady.

Dotaz na historii aktualizací materializovaného zobrazení

Protokol událostí může být užitečný pro nastavení řídicích panelů pro monitorování stavu aktualizace nebo doby trvání v pracovním prostoru nebo pokud dáváte přednost programovému monitorování pomocí uživatelského rozhraní. Materializovaná zobrazení vytvořená pomocí Databricks SQL nepodporují ukládání protokolu událostí do metastoru, takže protokol událostí může dotazovat přímo pouze vlastník materializovaného zobrazení.

Pokud chcete zobrazit stav operací REFRESH v materializovaném zobrazení, včetně aktuálních a minulých aktualizací, dotazujte protokol událostí kanálu:

SELECT *
FROM event_log(TABLE(<fully-qualified-table-name>))
WHERE event_type = "update_progress"
ORDER BY timestamp desc;

Nahraďte <fully-qualified-table-name> plně kvalifikovaným názvem materializovaného zobrazení, včetně katalogu a schématu. Pokud nejste vlastníkem kanálu, možná budete muset nejprve vytvořit zobrazení pro dotazování protokolu událostí. Viz Dotazování protokolu událostí prostřednictvím kódu programu.

Dotaz na typ aktualizace, ke které došlo pro materializované zobrazení

Některé dotazy je možné přírůstkově aktualizovat. Pokud přírůstkovou aktualizaci nelze provést, provede se místo toho úplná aktualizace.

Pokud chcete zobrazit typ aktualizace pro materializované zobrazení, zadejte dotaz na protokol událostí:

SELECT timestamp, message
FROM event_log(TABLE(my_catalog.my_schema.sales))
WHERE event_type = 'planning_information'
ORDER BY timestamp desc;

Ukázkový výstup pro tento příkaz:

    • časové razítko
    • zpráva
    • 2025-03-21T22:23:16.497+00:00
    • Flow 'sales' has been planned in :re[LDP] to be executed as ROW_BASED.

Přiřazovat náklady na SQL Warehouse s vlastními značkami

Značky se k fakturačním záznamům nepřipojí automaticky, ale v dotazu je můžete připojit k fakturačním údajům ručně.

Po přidání značek do každého materializovaného zobrazení (nebo streamovací tabulky) pomocí aplikace Catalog Explorer můžete sledovat náklady na materializovaná zobrazení spojením systémových tabulek table_tags a billing. Toto je ukázkový dotaz pro načtení fakturačních záznamů pro všechna materializovaná zobrazení a streamované tabulky vytvořené pomocí Databricks SQL a s připojením značek na úrovni tabulky.

SELECT
  u.*,
  tag_info.tags
FROM
  system.billing.usage u
LEFT JOIN (
  SELECT
    t.catalog_name,
    t.schema_name,
    t.table_name,
    collect_list(named_struct('tag_name', t.tag_name, 'tag_value', t.tag_value)) AS tags
  FROM
    main.information_schema.table_tags t
  GROUP BY
    t.catalog_name,
    t.schema_name,
    t.table_name
) tag_info
  ON tag_info.catalog_name = u.usage_metadata.uc_table_catalog
  AND tag_info.schema_name = u.usage_metadata.uc_table_schema
  AND tag_info.table_name = u.usage_metadata.uc_table_name
  WHERE usage_metadata.uc_table_name is not null;

Stejný nápad můžete použít ke spojení značek sloupců z column_tags tabulky.