Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Viktigt!
Den här funktionen är Experimentell.
Den här artikeln beskriver hur du använder materialisering för måttvyer för att påskynda frågeprestanda.
Materialisering för måttvyer påskyndar frågor med hjälp av materialiserade vyer. Lakeflow Spark deklarativa pipelines orkestrerar användardefinierade materialiserade vyer för en given metrikvy. Vid frågetillfället dirigerar frågeoptimeraren på ett intelligent sätt användarfrågor i måttvyn till den bästa materialiserade vyn med hjälp av automatisk aggregerad frågematchning, även kallat frågeomskrivning.
Den här metoden ger fördelarna med förberäkning och automatiska inkrementella uppdateringar, så du behöver inte ta reda på vilken sammansättningstabell eller materialiserad vy du vill köra frågor mot för olika prestandamål och eliminerar behovet av att hantera separata produktionspipelines.
Översikt
Följande diagram visar hur metriska vyer hanterar definitionerna och frågeutförande:
Definitionsfasen
När du definierar en måttvy med materialisering CREATE METRIC VIEW eller ALTER METRIC VIEW anger dina dimensioner, mått och uppdateringsschema. Databricks skapar en hanterad pipeline som upprätthåller de materialiserade vyerna.
Frågekörning
När du kör SELECT ... FROM <metric_view> använder frågeoptimeraren aggregerad-frågemedveten omskrivning för att optimera prestanda.
- Snabb sökväg: Läser från förberäknade materialiserade vyer när det är tillämpligt.
- Återställningssökväg: Läser från källdata direkt när materialiseringar inte är tillgängliga.
Frågeoptimeraren balanserar automatiskt prestanda och färskhet genom att välja mellan materialiserade data och källdata. Du får resultat transparent oavsett vilken sökväg som används.
Kravspecifikation
Så här använder du materialisering för måttvyer:
- Din arbetsyta måste ha serverlös beräkning aktiverad. Detta krävs för att köra Lakeflow Spark deklarativa pipelines.
- Databricks Runtime 17.2 eller senare.
Konfigurationsreferens
All information som rör materialisering definieras i ett toppnivåfält med namnet materialization i YAML-definitionen för måttvyn.
Fältet materialization innehåller följande obligatoriska fält:
- schema: Stöder samma syntax som schemasatsen för materialiserade vyer.
-
mode: Måste vara inställt på
relaxed. -
materialized_views: En lista över materialiserade vyer som ska materialiseras.
- name: Namnet på materialiseringen.
- dimensioner: En lista över dimensioner som ska materialiseras. Endast direkta referenser till dimensionsnamn tillåts. uttryck stöds inte.
- mått: En lista över mått som ska materialiseras. Endast direkta referenser till måttnamn tillåts. uttryck stöds inte.
-
typ: Anger om den materialiserade vyn är aggregerad eller inte. Accepterar två möjliga värden:
aggregatedochunaggregated.- Om
typeäraggregatedmåste det finnas minst en dimension eller ett mått. - Om
typeärunaggregatedska ingen dimension eller mått definieras.
- Om
Anmärkning
SatsenTRIGGER ON UPDATE stöds inte för materialisering för måttvyer.
Exempeldefinition
version: 1.1
source: prod.operations.orders_enriched_view
filter: revenue > 0
dimensions:
- name: category
expr: substring(category, 5)
- name: color
expr: color
measures:
- name: total_revenue
expr: SUM(revenue)
- name: number_of_suppliers
expr: COUNT(DISTINCT supplier_id)
materialization:
schedule: every 6 hours
mode: relaxed
materialized_views:
- name: baseline
type: unaggregated
- name: revenue_breakdown
type: aggregated
dimensions:
- category
- color
measures:
- total_revenue
- name: suppliers_by_category
type: aggregated
dimensions:
- category
measures:
- number_of_suppliers
Mode
I relaxed läge verifierar automatisk frågeomskrivning endast om kandidatmaterialiserade vyer har de nödvändiga dimensionerna och måtten för att tillhandahålla svaret på frågan.
Det innebär att flera kontroller hoppas över:
- Det finns inga kontroller av om den materialiserade vyn är uppdaterad.
- Det finns inga kontroller om du har matchande SQL-inställningar (till exempel
ANSI_MODEellerTIMEZONE). - Det finns inga kontroller av om den materialiserade vyn returnerar deterministiska resultat.
Om frågan innehåller något av följande villkor sker inte frågeomskrivningen och frågan återgår till källtabellerna:
- Säkerhet på radnivå (RLS) eller maskering på kolumnnivå (CLM) i materialiserade vyer.
- Icke-deterministiska funktioner som
current_timestamp()i materialiserade vyer. Dessa kan visas i måttvyns definition eller i en källtabell som används av måttvyn.
Anmärkning
Under den experimentella lanseringsperioden relaxed är det enda läge som stöds. Om dessa kontroller misslyckas återgår frågan till källdata.
Typer av materialiseringar för måttvyer
I följande avsnitt beskrivs vilka typer av materialiserade vyer som är tillgängliga för måttvyer.
Aggregerad typ
Den här typen förberäknar sammansättningar för angivna mått- och dimensionskombinationer för måltäckning.
Detta är användbart för att rikta in sig på specifika vanliga aggregeringsfrågemönster eller widgetar. Databricks rekommenderar att du inkluderar potentiella filterkolumner som dimensioner i den materialiserade vykonfigurationen. Potentiella filterkolumner är kolumner som används vid frågetillfället WHERE i -satsen.
Oaggregerad typ
Den här typen materialiserar hela den oaggregerade datamodellen (till exempel fälten source, joinoch filter ) för bredare täckning med lägre prestandalyft jämfört med den aggregerade typen.
Använd den här typen när följande är sant:
- Källan är en kostsam vy eller SQL-fråga.
- Kopplingar som definieras i din metrikvy är dyra.
Anmärkning
Om källan är en direkt tabellreferens utan att ett selektivt filter tillämpas kan det hända att en oaggregerad materialiserad vy inte ger några fördelar.
Livscykel för materialisering
Det här avsnittet förklarar hur materialiseringar skapas, hanteras och uppdateras under hela livscykeln.
Skapa och ändra
Att skapa eller ändra en måttvy (med hjälp av CREATE, ALTEReller Katalogutforskaren) sker synkront. Angivna materialiserade vyer materialiseras asynkront med Lakeflow Spark deklarativa processer.
När du skapar en måttvy skapar Databricks en Lakeflow Spark Declarative Pipelines och schemalägger en första uppdatering omedelbart om det finns angivna materialiserade vyer. Måttvyn är fortfarande frågebar utan materialiseringar genom att återgå till att fråga från källdata.
När du ändrar en måttvy schemaläggs inga nya uppdateringar, såvida du inte aktiverar materialisering för första gången. Materialiserade vyer används inte för automatisk frågeomskrivning förrän nästa schemalagda uppdatering är klar.
Att ändra materialiseringsschemat utlöser ingen uppdatering.
Mer information om uppdateringsbeteende finns i Manuell uppdatering .
Inspektera underliggande pipeline
Materialisering för måttvyer implementeras med Lakeflow Spark deklarativa pipelines. En länk till pipelinen finns på fliken Översikt i Katalogutforskaren. Mer information om hur du kommer åt Katalogutforskaren finns i Vad är Katalogutforskaren?.
Du kan också komma åt den här pipelinen genom att köra DESCRIBE EXTENDED i måttvyn. Avsnittet Uppdateringsinformation innehåller en länk till pipelinen.
DESCRIBE EXTENDED my_metric_view;
Exempel på utdata:
-- Returns additional metadata such as parent schema, owner, access time etc.
> DESCRIBE TABLE EXTENDED customer;
col_name data_type comment
------------------------------- ------------------------------ ----------
... ... ...
# Detailed Table Information
... ...
Language YAML
Table properties ...
# Refresh information
Latest Refresh status Succeeded
Latest Refresh https://...
Refresh Schedule EVERY 3 HOURS
Manuell uppdatering
Från länken till sidan Lakeflow Spark Deklarativa pipelines kan du manuellt starta en pipelineuppdatering för att uppdatera materialiseringarna. Du kan också orkestrera detta med hjälp av ett API-anrop baserat på pipeline-ID:t.
Följande Python-skript startar till exempel en pipelineuppdatering:
from databricks.sdk import WorkspaceClient
client = WorkspaceClient()
pipeline_id = "01484540-0a06-414a-b10f-e1b0e8097f15"
client.pipelines.start_update(pipeline_id)
Om du vill köra en manuell uppdatering som en del av ett Lakeflow-jobb skapar du ett Python-skript med logiken ovan och lägger till det som en uppgift av typen Python-skript. Du kan också skapa en notebook-fil med samma logik och lägga till en uppgift av typen Notebook.
Inkrementell uppdatering
De materialiserade vyerna använder inkrementell uppdatering när det är möjligt och har samma begränsningar när det gäller datakällor och planstruktur.
Mer information om krav och begränsningar finns i Inkrementell uppdatering för materialiserade vyer.
Automatisk omskrivning av frågor
Förfrågningar till en materialiserad måttvy försöker använda dess materialiseringar så mycket som möjligt. Det finns två strategier för frågeomskrivning: exakt matchning och oaggregerad matchning.
När du kör frågor mot en metrikvy analyserar optimeraren frågan och tillgängliga användardefinierade materialiseringar. Frågan körs automatiskt på den bästa materialiseringen i stället för bastabellerna med den här algoritmen:
- Försöker först med en exakt matchning.
- Om det finns en oaggregerad materialisering försöker du med en oaggregerad matchning.
- ** Om omskrivning av frågan misslyckas läser databasfrågan direkt från källtabellerna.
Anmärkning
Materialiseringar måste slutföra materialiseringen innan frågeomskrivningen kan träda i kraft.
Kontrollera att sökfrågan använder materialiserade vyer
För att kontrollera om en fråga använder en materialiserad vy, kör EXPLAIN EXTENDED på din fråga för att se frågeplanen. Om frågan använder materialiserade vyer, innehåller lövnoden __materialization_mat___metric_view samt namnet på materialiseringen från YAML-filen.
Alternativt visar frågeprofilen samma information.
Exakt matchning
För att vara berättigad till den exakta matchningsstrategin måste grupperingsuttrycken för frågan exakt matcha materialiseringsdimensionerna. Aggregeringsuttrycken för frågan måste vara en delmängd av materialiseringsmåtten.
Oaggregerad match
Om en oaggregerad materialisering är tillgänglig är den här strategin alltid berättigad.
Billing
Uppdatering av materialiserade vyer innebär användningsavgifter för användning av Lakeflow Sparks deklarativa pipelines.
Kända begränsningar
Följande begränsningar gäller vid materialisering av måttvyer:
- En måttvy med materialisering som refererar till en annan måttvy som källa kan inte ha en oaggregerad materialisering.