Share via


Gerealiseerde weergaven gebruiken in Databricks SQL

Belangrijk

Deze functie is beschikbaar als openbare preview.

In dit artikel wordt beschreven hoe u gerealiseerde weergaven maakt en gebruikt in Databricks SQL om de prestaties te verbeteren en de kosten van uw gegevensverwerkings- en analyseworkloads te verlagen.

Wat zijn gerealiseerde weergaven?

In Databricks SQL zijn gerealiseerde weergaven beheerde tabellen van Unity Catalog waarmee gebruikers resultaten vooraf kunnen compileren op basis van de nieuwste versie van gegevens in brontabellen. Gerealiseerde weergaven in Azure Databricks verschillen van andere implementaties, omdat de geretourneerde resultaten de status van de gegevens weerspiegelen wanneer de gerealiseerde weergave voor het laatst werd vernieuwd in plaats van altijd resultaten bij te werken wanneer de gerealiseerde weergave wordt opgevraagd. U kunt gerealiseerde weergaven handmatig vernieuwen of vernieuwingen plannen.

Gerealiseerde weergaven zijn krachtig voor gegevensverwerkingsworkloads, zoals ETL-verwerking (extract, transform en load). Gerealiseerde weergaven bieden een eenvoudige, declaratieve manier om gegevens te verwerken voor naleving, correcties, aggregaties of algemene wijzigingsgegevensopname (CDC). Gerealiseerde weergaven verlagen de kosten en verbeteren de querylatentie door trage query's en veelgebruikte berekeningen vooraf te berekenen. Gerealiseerde weergaven maken ook gebruiksvriendelijke transformaties mogelijk door basistabellen op te schonen, verrijken en denormaliseren. Gerealiseerde weergaven kunnen kosten verlagen terwijl ze een vereenvoudigde eindgebruikerservaring bieden, omdat ze in sommige gevallen incrementeel wijzigingen kunnen berekenen uit de basistabellen.

Gerealiseerde weergaven werden voor het eerst ondersteund op het Databricks Data Intelligence Platform met de lancering van Delta Live Tables. Wanneer u een gerealiseerde weergave maakt in een Databricks SQL-warehouse, wordt er een Delta Live Tables-pijplijn gemaakt om vernieuwingen naar de gerealiseerde weergave te verwerken. U kunt de status van vernieuwingsbewerkingen bewaken in de gebruikersinterface van Delta Live Tables, de Delta Live Tables-API of de Delta Live Tables CLI. Zie De status van een gerealiseerde weergave vernieuwen weergeven.

Eisen

  • U moet een Databricks SQL-warehouse met Unity Catalog gebruiken om gerealiseerde weergaven te maken en te vernieuwen.

  • Uw werkruimte moet zich in een regio zonder server bevinden.

Zie Beperkingen voor meer informatie over beperkingen bij het gebruik van gerealiseerde weergaven met Databricks SQL.

Een gerealiseerde weergave maken

Gebruik de CREATE MATERIALIZED VIEW instructie om een gerealiseerde weergave te maken. Zie CREATE MATERIALIZED VIEW in de Databricks SQL-verwijzing. Als u een create-instructie wilt verzenden, gebruikt u de SQL-editor in de Azure Databricks-gebruikersinterface, de Databricks SQL CLI of de Databricks SQL-API.

Notitie

De gebruiker die een gerealiseerde weergave maakt, is de gerealiseerde eigenaar van de weergave en moet over de volgende machtigingen beschikken:

  • SELECT bevoegdheid voor de basistabellen waarnaar wordt verwezen door de gerealiseerde weergave.
  • USE CATALOG en USE SCHEMA bevoegdheden voor de catalogus en het schema met de brontabellen voor de gerealiseerde weergave.
  • USE CATALOG en USE SCHEMA bevoegdheden voor de doelcatalogus en het schema voor de gerealiseerde weergave.
  • CREATE TABLE en CREATE MATERIALIZED VIEW bevoegdheden voor het schema met de gerealiseerde weergave.

In het volgende voorbeeld wordt de gerealiseerde weergave mv1 gemaakt op basis van de basistabel base_table1:

CREATE MATERIALIZED VIEW mv1
AS SELECT
  date, sum(sales) AS sum_of_sales
FROM
  table1
GROUP BY
  date;

Hoe worden gerealiseerde weergaven gemaakt?

Databricks SQL gerealiseerde weergavebewerkingen CREATE maken gebruik van een Databricks SQL Warehouse om gegevens te maken en te laden in de gerealiseerde weergave. Omdat het maken van een gerealiseerde weergave een synchrone bewerking is in het Databricks SQL Warehouse, wordt de CREATE MATERIALIZED VIEW opdracht geblokkeerd totdat de gerealiseerde weergave is gemaakt en de initiële gegevensbelasting is voltooid. Er wordt automatisch een Delta Live Tables-pijplijn gemaakt voor elke gerealiseerde Databricks SQL-weergave. Wanneer de gerealiseerde weergave wordt vernieuwd, wordt een update van de pijplijn delta livetabellen gestart om de vernieuwing te verwerken.

Gegevens laden uit externe systemen

Databricks raadt aan externe gegevens te laden met Lakehouse Federation voor ondersteunde gegevensbronnen. Zie Opties voor gegevensindeling voor informatie over het laden van gegevens uit bronnen die niet worden ondersteund door Lakehouse Federation.

Een gerealiseerde weergave vernieuwen

De REFRESH bewerking vernieuwt de gerealiseerde weergave om de meest recente wijzigingen in de basistabel weer te geven. Gebruik de REFRESH MATERIALIZED VIEW instructie om een gerealiseerde weergave te vernieuwen. Zie REFRESH (MATERIALIZED VIEW and STREAMING TABLE) in de Databricks SQL-verwijzing. Als u een vernieuwingsinstructie wilt verzenden, gebruikt u de SQL-editor in de Azure Databricks-gebruikersinterface, de Databricks SQL CLI of de Databricks SQL-API.

Alleen de eigenaar kan REFRESH de gerealiseerde weergave.

In het volgende voorbeeld wordt de mv1 gerealiseerde weergave vernieuwd:

REFRESH MATERIALIZED VIEW mv1;

Hoe worden gerealiseerde databricks SQL-weergaven vernieuwd?

Databricks SQL gerealiseerde weergaven maken gebruik van Delta Live Tables voor vernieuwingsbewerkingen. Wanneer de gerealiseerde weergave wordt vernieuwd, wordt een update naar de Delta Live Tables-pijplijn voor het beheren van de gerealiseerde weergave gestart om de vernieuwing te verwerken.

Omdat de vernieuwing wordt beheerd door een Delta Live Tables-pijplijn, wordt het Databricks SQL Warehouse gebruikt om de gerealiseerde weergave te maken niet gebruikt en hoeft deze niet te worden uitgevoerd tijdens de vernieuwingsbewerking.

Sommige query's kunnen incrementeel worden vernieuwd. Zie Vernieuwingsbewerkingen voor gerealiseerde weergaven. Als een incrementele vernieuwing niet kan worden uitgevoerd, wordt in plaats daarvan een volledige vernieuwing uitgevoerd.

Gerealiseerde weergavevernieuwing plannen

U kunt een gerealiseerde databricks SQL-weergave configureren om automatisch te vernieuwen op basis van een gedefinieerd schema. Configureer dit schema met de SCHEDULE component wanneer u de gerealiseerde weergave maakt of een planning toevoegt met de INSTRUCTIE ALTER VIEW . Wanneer een planning wordt gemaakt, wordt automatisch een nieuwe Databricks-taak geconfigureerd om de update te verwerken. U kunt de planning op elk gewenst moment met de DESCRIBE EXTENDED instructie bekijken.

De definitie van een gerealiseerde weergave bijwerken

Als u de definitie van een gerealiseerde weergave wilt bijwerken, moet u eerst de gerealiseerde weergave verwijderen en vervolgens de gerealiseerde weergave opnieuw maken.

Een gerealiseerde weergave verwijderen

Notitie

Als u de opdracht wilt verzenden om een gerealiseerde weergave te verwijderen, moet u de eigenaar van die gerealiseerde weergave zijn.

Als u een gerealiseerde weergave wilt verwijderen, gebruikt u de instructie DROP VIEW . Als u een DROP instructie wilt verzenden, kunt u de SQL-editor gebruiken in de Gebruikersinterface van Azure Databricks, de Databricks SQL CLI of de Databricks SQL-API. In het volgende voorbeeld wordt de mv1 gerealiseerde weergave weggezakt:

DROP MATERIALIZED VIEW mv1;

Een gerealiseerde weergave beschrijven

Gebruik de DESCRIBE instructie om de kolommen en gegevenstypen voor een gerealiseerde weergave op te halen. Als u de kolommen, gegevenstypen en metagegevens zoals eigenaar, locatie, aanmaaktijd en vernieuwingsstatus voor een gerealiseerde weergave wilt ophalen, gebruikt u DESCRIBE EXTENDED. Als u een DESCRIBE instructie wilt verzenden, gebruikt u de SQL-editor in de Gebruikersinterface van Azure Databricks, de Databricks SQL CLI of de Databricks SQL-API.

De status van een gerealiseerde weergave vernieuwen weergeven

Notitie

Omdat een Delta Live Tables-pijplijn gerealiseerde weergavevernieuwingen beheert, wordt er latentie gemaakt door de opstarttijd voor de pijplijn. Deze tijd kan in de seconden tot minuten zijn, naast de tijd die nodig is om de vernieuwing uit te voeren.

U kunt de status van een gerealiseerde weergavevernieuwing bekijken door de pijplijn te bekijken die de gerealiseerde weergave beheert in de gebruikersinterface van Delta Live Tables of door de vernieuwingsgegevens te bekijken die door de DESCRIBE EXTENDED opdracht voor de gerealiseerde weergave worden geretourneerd.

U kunt ook de vernieuwingsgeschiedenis van een gerealiseerde weergave bekijken door een query uit te voeren op het gebeurtenislogboek van Delta Live Tables. Zie De vernieuwingsgeschiedenis voor een gerealiseerde weergave weergeven.

De vernieuwingsstatus weergeven in de gebruikersinterface van Delta Live Tables

De Delta Live Tables-pijplijn waarmee een gerealiseerde weergave wordt beheerd, is standaard niet zichtbaar in de gebruikersinterface van Delta Live Tables. Als u de pijplijn wilt weergeven in de gebruikersinterface van Delta Live Tables, moet u rechtstreeks toegang krijgen tot de koppeling naar de pagina Met pijplijndetails van de pijplijn. Ga als volgende te werk om toegang te krijgen tot de koppeling:

  • Als u de REFRESH opdracht in de SQL-editor verzendt, volgt u de koppeling in het deelvenster Resultaten .
  • Volg de koppeling die is geretourneerd door de DESCRIBE EXTENDED instructie.
  • Klik op het tabblad Herkomst voor de gerealiseerde weergave op Pijplijnen en klik vervolgens op de pijplijnkoppeling.

Een actieve vernieuwing stoppen

Als u een actieve vernieuwing in de gebruikersinterface van Delta Live Tables wilt stoppen, klikt u op de pagina Pijplijndetails op Stoppen om de pijplijnupdate te stoppen. U kunt het vernieuwen ook stoppen met de Databricks CLI of de POST/api/2.0/pipelines/{pipeline_id}/stopbewerking in de Pijplijn-API.

De eigenaar van een gerealiseerde weergave wijzigen

U kunt de eigenaar van een gerealiseerde weergave wijzigen als u zowel een metastore-beheerder als een werkruimtebeheerder bent. Gerealiseerde weergaven maken en gebruiken pijplijnen van Delta Live Tables automatisch om wijzigingen te verwerken. Gebruik de volgende stappen om de eigenaar van een gerealiseerde weergave te wijzigen:

  • Klik op Pictogram TakenWerkstromen en klik vervolgens op het tabblad Delta Live Tables.
  • Klik op de naam van de pijplijn waarvan u de eigenaar wilt wijzigen.
  • Klik ophetmenu Menu VanGelezen rechts van de naam van de pijplijn en klik op Machtigingen. Hiermee opent u het dialoogvenster Machtigingen.
  • Klik op x rechts van de naam van de huidige eigenaar om de huidige eigenaar te verwijderen.
  • Begin te typen om de lijst met beschikbare gebruikers te filteren. Klik op de gebruiker die de nieuwe eigenaar van de pijplijn moet zijn.
  • Klik op Opslaan om de wijzigingen op te slaan en het dialoogvenster te sluiten.

Alle pijplijnassets, inclusief gerealiseerde weergaven die zijn gedefinieerd in de pijplijn, zijn eigendom van de nieuwe eigenaar van de pijplijn. Alle toekomstige updates worden uitgevoerd met behulp van de identiteit van de nieuwe eigenaar.

Toegang tot gerealiseerde weergaven beheren

Gerealiseerde weergaven bieden ondersteuning voor uitgebreide besturingselementen voor toegang tot het delen van gegevens en voorkomen dat mogelijk persoonlijke gegevens worden weergegeven. De eigenaar van een gerealiseerde weergave kan bevoegdheden verlenen SELECT aan andere gebruikers. Gebruikers met SELECT toegang tot de gerealiseerde weergave hebben geen toegang nodig SELECT tot de tabellen waarnaar wordt verwezen door de gerealiseerde weergave. Met dit toegangsbeheer kunt u gegevens delen terwijl u de toegang tot de onderliggende gegevens beheert.

Bevoegdheden verlenen aan een gerealiseerde weergave

Gebruik de GRANT instructie om toegang te verlenen tot een gerealiseerde weergave:

GRANT
  privilege_type [, privilege_type ] ...
  ON <mv_name> TO principal;

De privilege_type kan het volgende zijn:

  • SELECT - de gebruiker kan SELECT de gerealiseerde weergave.
  • REFRESH - de gebruiker kan REFRESH de gerealiseerde weergave. Vernieuwingen worden uitgevoerd met behulp van de machtigingen van de eigenaar.

In het volgende voorbeeld wordt een gerealiseerde weergave gemaakt en worden selectie- en vernieuwingsbevoegdheden verleend aan een gebruiker:

CREATE MATERIALIZED VIEW <mv_name> AS SELECT * FROM <base_table>;
GRANT SELECT ON <mv_name> TO user;
GRANT REFRESH ON <mv_name> TO user;

Bevoegdheden intrekken vanuit een gerealiseerde weergave

Als u de toegang vanuit een gerealiseerde weergave wilt intrekken, gebruikt u de REVOKE instructie:

REVOKE
  privilege_type [, privilege_type ]
  ON <name> FROM principal;

Wanneer SELECT bevoegdheden voor een basistabel worden ingetrokken van de gerealiseerde weergave-eigenaar of een andere gebruiker die bevoegdheden heeft gekregen voor de gerealiseerde weergave, of als de basistabel wordt verwijderd, kan de gerealiseerde weergave-eigenaar of gebruiker die toegang heeft verleend SELECT , nog steeds een query uitvoeren op de gerealiseerde weergave. Het volgende gedrag treedt echter op:

  • De gerealiseerde weergave-eigenaar of anderen die de toegang tot een gerealiseerde weergave hebben verloren, kunnen die gerealiseerde weergave niet meer REFRESH gebruiken en de gerealiseerde weergave wordt verouderd.
  • Als geautomatiseerd met een schema, mislukt de volgende geplande REFRESH bewerking of wordt deze niet uitgevoerd.

In het volgende voorbeeld wordt de SELECT bevoegdheid ingetrokken van mv1:

REVOKE SELECT ON mv1 FROM user1;

Wijzigingenfeed inschakelen

Wijzigingenfeed is vereist voor de gerealiseerde weergaven basistabellen, met uitzondering van bepaalde geavanceerde gebruiksvoorbeelden. Als u de gegevensfeed voor een basistabel wilt inschakelen, stelt u de delta.enableChangeDataFeed tabeleigenschap in met behulp van de volgende syntaxis:

ALTER TABLE table1 SET TBLPROPERTIES (delta.enableChangeDataFeed = true);

De vernieuwingsgeschiedenis voor een gerealiseerde weergave weergeven

Als u de status van REFRESH bewerkingen in een gerealiseerde weergave wilt weergeven, inclusief huidige en eerdere vernieuwingen, voert u een query uit op het gebeurtenislogboek van Delta Live Tables:

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

Vervang door <fully-qualified-table-name> de volledig gekwalificeerde naam van de gerealiseerde weergave, inclusief de catalogus en het schema.

Zie Wat is het gebeurtenislogboek van Delta Live Tables?

Bepalen of een incrementeel of volledig vernieuwen wordt gebruikt

Om de prestaties van gerealiseerde weergavevernieuwingen te optimaliseren, gebruikt Azure Databricks een kostenmodel om de techniek te selecteren die wordt gebruikt voor het vernieuwen. In de volgende tabel worden deze technieken beschreven:

Techniek Incrementeel vernieuwen? Beschrijving
FULL_RECOMPUTE Nee De gerealiseerde weergave is volledig opnieuw gecomputeerd
NO_OP Niet van toepassing De gerealiseerde weergave is niet bijgewerkt omdat er geen wijzigingen in de basistabel zijn gedetecteerd.
ROW_BASED of PARTITION_OVERWRITE Ja De gerealiseerde weergave is incrementeel vernieuwd met behulp van de opgegeven techniek.

Als u de gebruikte techniek wilt bepalen, voert u een query uit op het gebeurtenislogboek van Delta Live Tables waar het event_type volgende is planning_information:

SELECT
  timestamp,
  message
FROM
  event_log(TABLE(<fully-qualified-table-name>))
WHERE
  event_type = 'planning_information'
ORDER BY
  timestamp desc;

Vervang door <fully-qualified-table-name> de volledig gekwalificeerde naam van de gerealiseerde weergave, inclusief de catalogus en het schema.

Zie Wat is het gebeurtenislogboek van Delta Live Tables?

Beperkingen

  • Er zijn beperkingen voor het beheren van MV's en waar ze kunnen worden opgevraagd:

    • Databricks SQL gerealiseerde weergaven kunnen alleen worden gemaakt en vernieuwd in pro SQL-warehouses en serverloze SQL-warehouses.
    • Een gerealiseerde Databricks SQL-weergave kan alleen worden vernieuwd vanuit de werkruimte die deze heeft gemaakt.
    • Databricks SQL gerealiseerde weergaven kunnen alleen worden opgevraagd vanuit Databricks SQL-warehouses, Delta Live Tables en gedeelde clusters waarop Databricks Runtime 11.3 of hoger wordt uitgevoerd. U kunt geen query's uitvoeren op gerealiseerde weergaven vanuit clusters met toegangsmodus voor één gebruiker.
  • Gerealiseerde weergaven bieden geen ondersteuning voor identiteitskolommen of surrogaatsleutels.

  • Als een gerealiseerde weergave gebruikmaakt van een somaggregaties voor een NULLkolom die in staat is en alleen NULL waarden in die kolom blijven, is de gerealiseerde weergaven resulterende statistische waarde nul in plaats van NULL.

  • De onderliggende bestanden die gerealiseerde weergaven ondersteunen, bevatten mogelijk gegevens uit upstreamtabellen (inclusief mogelijke persoonsgegevens) die niet worden weergegeven in de gerealiseerde weergavedefinitie. Deze gegevens worden automatisch toegevoegd aan de onderliggende opslag ter ondersteuning van incrementeel vernieuwen van gerealiseerde weergaven. Omdat de onderliggende bestanden van een gerealiseerde weergave mogelijk risico lopen dat gegevens uit upstream-tabellen worden weergegeven die geen deel uitmaken van het gerealiseerde weergaveschema, raadt Databricks aan om de onderliggende opslag niet te delen met niet-vertrouwde downstreamgebruikers. Stel dat de definitie van een gerealiseerde weergave een COUNT(DISTINCT field_a) component bevat. Hoewel de gerealiseerde weergavedefinitie alleen de statistische COUNT DISTINCT component bevat, bevatten de onderliggende bestanden een lijst met de werkelijke waarden van field_a.

  • Gerealiseerde databricks SQL-weergaven worden niet ondersteund in de regio's VS - zuid-centraal en VS - west 2.