Köra federerade frågor på Microsoft Azure Synapse

Den här artikeln beskriver hur du konfigurerar Lakehouse Federation för att köra federerade frågor på Azure Synapse-data (SQL Data Warehouse) som inte hanteras av Azure Databricks. Mer information om Lakehouse Federation finns i Ansluta till externa databaser och kataloger.

Om du vill ansluta till en Azure Synapse-databas (SQL Data Warehouse) med Lakehouse Federation måste du skapa följande i azure Databricks Unity Catalog-metaarkivet:

  • En anslutning till din Azure Synapse-databas (SQL Data Warehouse).
  • En utländsk katalog som speglar din Azure Synapse-databas (SQL Data Warehouse) i Unity Catalog så att du kan använda Frågesyntax för Unity Catalog och verktyg för datastyrning för att hantera Azure Databricks-användaråtkomst till databasen.

Innan du börjar

Krav för arbetsyta:

  • Arbetsytan är aktiverad för Unity Catalog. Arbetsytor som skapats efter den 9 november 2023 aktiveras automatiskt för Unity Catalog, inklusive automatisk metaarkivetablering. Du behöver inte skapa ett metadatalager manuellt, om inte arbetsytan är äldre än den automatiska aktiveringen och inte har aktiverats för Unity Catalog. Se Kom igång med Unity Catalog.

Beräkningskrav:

  • Nätverksanslutning från beräkningsresursen till måldatabassystemen. Se Nätverksrekommendationer för Lakehouse Federation.
  • Azure Databricks-beräkning måste använda Databricks Runtime 13.3 LTS eller senare och standard - eller dedikerat åtkomstläge.
  • SQL-lager måste vara pro eller serverlösa och måste använda 2023.40 eller senare.

Behörigheter som krävs:

  • Om du vill skapa en anslutning måste du vara metaarkivadministratör eller användare med CREATE CONNECTION behörighet i Unity Catalog-metaarkivet som är kopplat till arbetsytan. I arbetsytor som aktiverades automatiskt för Unity Catalog har arbetsyteadministratörer behörigheten CREATE CONNECTION som standard.
  • Om du vill skapa en extern katalog måste du ha behörigheten CREATE CATALOG i metaarkivet och antingen vara ägare till anslutningen eller ha CREATE FOREIGN CATALOG behörighet för anslutningen. I arbetsytor som aktiverades automatiskt för Unity Catalog har arbetsyteadministratörer behörigheten CREATE CATALOG som standard.

Ytterligare behörighetskrav anges i varje aktivitetsbaserat avsnitt som följer.

Skapa en anslutning

En anslutning anger en sökväg och autentiseringsuppgifter för åtkomst till ett externt databassystem. Om du vill skapa en anslutning kan du använda Catalog Explorer eller kommandot CREATE CONNECTION SQL i en Azure Databricks-notebook-fil eller Databricks SQL-frågeredigeraren.

Note

Du kan också använda Databricks REST API eller Databricks CLI för att skapa en anslutning. Se kommandona POST /api/2.1/unity-catalog/connections och Unity Catalog.

Behörigheter som krävs: Metaarkivadministratör eller användare med behörighet.CREATE CONNECTION

Katalogutforskaren

  1. På din Azure Databricks-arbetsyta klickar du på dataikonen.Katalog.
  2. Längst upp i fönstret Katalog klickar du på ikonen Lägg till eller pluslägg till och väljer Skapa en anslutning på menyn.
  3. Ange ett användarvänligt Anslutningsnamnpå sidan Anslutningsgrunder i guiden Konfigurera anslutning.
  4. Välj en anslutningstyp för SQLDW.
  5. (Valfritt) Lägg till en kommentar.
  6. Klicka på Nästa.
  7. På sidan Autentisering anger du följande anslutningsegenskaper för din Azure Synapse-instans:
    • Värd: Till exempel .
    • Port: Till exempel 1433
    • User
    • Password
    • Förtroendeservercertifikat: Detta avmarkeras som standard. När du väljer det här alternativet använder transportlagret SSL för att kryptera kanalen och kringgår certifikatkedjan för att verifiera förtroendet. Låt den här inställningen vara standard om du inte har ett specifikt behov av att kringgå förtroendevalidering.
  8. Klicka på Skapa anslutning.
  9. catalog basics-sidan anger du ett namn för den externa katalogen. En extern katalog speglar en databas i ett externt datasystem så att du kan köra frågor mot och hantera åtkomst till data i databasen med hjälp av Azure Databricks och Unity Catalog.
  10. (Valfritt) Klicka på Testa anslutning för att bekräfta att den fungerar.
  11. Klicka på Skapa katalog.
  12. På sidan Access väljer du de arbetsytor där användarna kan komma åt katalogen som du skapade. Du kan välja Alla arbetsytor har åtkomsteller klicka på Tilldela till arbetsytor, välj arbetsytor och klicka sedan på Tilldela.
  13. Ändra ägaren som ska kunna hantera åtkomsten till alla objekt i katalogen. Börja skriva ett kontonamn i textrutan och klicka sedan på kontot när det visas i resultaten.
  14. Bevilja privilegier i katalogen. Klicka på Bevilja:
    1. Ange principals vem som ska ha åtkomst till objekt i katalogen. Börja skriva ett kontonamn i textrutan och klicka sedan på kontot när det visas i resultaten.
    2. Välj förinställningarna för privilegier som ska beviljas varje huvudaktör . Alla kontoanvändare beviljas BROWSE som standard.
      • Välj dataläsare från den nedrullningsbara menyn för att bevilja read behörigheter för objekt i katalogen.
      • Välj dataredigeraren från den nedrullningsbara menyn för att bevilja read och modify behörigheter för objekt i katalogen.
      • Välj de behörigheter som ska beviljas manuellt.
    3. Klicka på Tillåt.
  15. Klicka på Nästa.
  16. På sidan metadata anger du taggar för nyckel/värde-par. Mer information finns i Tillämpa taggar på skyddsbara objekt i Unity Catalog.
  17. (Valfritt) Lägg till en kommentar.
  18. Klicka på Spara.

SQL

Kör följande kommando i en notebook-fil eller Databricks SQL-frågeredigeraren.

CREATE CONNECTION <connection-name> TYPE sqldw
OPTIONS (
  host '<hostname>',
  port '<port>',
  user '<user>',
  password '<password>'
);

Vi rekommenderar att du använder Azure Databricks secrets istället för textsträngar för känsliga värden som inloggningsuppgifter. Till exempel:

CREATE CONNECTION <connection-name> TYPE sqldw
OPTIONS (
  host '<hostname>',
  port '<port>',
  user secret ('<secret-scope>','<secret-key-user>'),
  password secret ('<secret-scope>','<secret-key-password>')
)

Information om hur du konfigurerar hemligheter finns i Hemlighetshantering.

Skapa en utländsk katalog

Note

Om du använder användargränssnittet för att skapa en anslutning till datakällan inkluderas skapande av utländsk katalog och du kan hoppa över det här steget.

En extern katalog speglar en databas i ett externt datasystem så att du kan köra frågor mot och hantera åtkomst till data i databasen med hjälp av Azure Databricks och Unity Catalog. Om du vill skapa en extern katalog använder du en anslutning till datakällan som redan har definierats.

Om du vill skapa en utländsk katalog kan du använda Catalog Explorer eller kommandot CREATE FOREIGN CATALOG SQL i en Azure Databricks-notebook-fil eller SQL-frågeredigeraren. Du kan också använda Databricks REST API eller Databricks CLI för att skapa en katalog. Se kommandona POST /api/2.1/unity-catalog/catalogs och Unity Catalog.

Behörigheter som krävs:CREATE CATALOG behörighet för metaarkivet och antingen ägarskap för anslutningen eller behörigheten CREATE FOREIGN CATALOG för anslutningen.

Katalogutforskaren

  1. På din Azure Databricks-arbetsyta klickar du på dataikonen.Katalog för att öppna Katalogutforskaren.

  2. Längst upp i panelen Catalog klickar du på Lägg till- eller plusikonen och väljer Lägg till en katalog från menyn.

    Från sidan Snabbåtkomst klickar du på knappen Kataloger och klickar sedan på knappen Skapa katalog.

  3. Följ anvisningarna för att skapa externa kataloger i Skapa kataloger.

SQL

Kör följande SQL-kommando i en notebook- eller SQL-frågeredigerare. Objekt inom hakparenteser är valfria. Ersätt platshållarvärdena:

  • <catalog-name>: Namn på katalogen i Azure Databricks.
  • <connection-name>: Det anslutningsobjektet som anger autentiseringsuppgifterna för datakälla, sökväg och åtkomst.
  • <database-name>: Namnet på databasen som du vill spegla som en katalog i Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');

Pushdowns som stöds

I följande tabell visas de pushdown-åtgärder som stöds för Azure Synapse (SQL Data Warehouse) tillsammans med den beräkning som krävs för var och en.

Pushdown Beräkning som stöds
Filters Stöds Alla beräkningstjänster
Innehåller, Börjar med, Slutar med Stöds Alla beräkningstjänster
Limit Stöds Alla beräkningstjänster
Matematiska funktioner
SIN, COS, FLOOR, ABS (när ANSI är aktiverat) – partiellt stöd, endast filteruttryck
Stöds Alla beräkningstjänster
Diverse funktioner
Cast – partiellt stöd, endast filteruttryck
Stöds Alla beräkningstjänster
Projections Stöds Alla beräkningstjänster
Strängfunktioner
(UPPER, LOWER, CONCAT, TRIM – partiellt stöd, endast filteruttryck)
Stöds Alla beräkningstjänster
Aggregates
(Genomsnitt, Antal, Max, Min, Populationsstandardavvikelse, Stickprovsstandardavvikelse, Summa, Populationsvarians, Stickprovsvarians)
Stöds Alla beräkningstjänster
Aritmetiska operatorer
(till exempel +, -, *, %, /) – stöds inte om ANSI är inaktiverat
Stöds Alla beräkningstjänster
Booleska operatorer
(till exempel =, <=>, <, <=, >, >=)
Stöds Alla beräkningstjänster
Bitvisa operatörer
(&, |, ^ och ~)
Stöds Alla beräkningstjänster
Sortering, när den används med gräns Stöds Alla beräkningstjänster
Joins Stöds inte Stöds inte
Fönsterfunktioner Stöds inte Stöds inte

Datatypsmappningar

När du läser från Synapse/SQL Data Warehouse till Spark mappar datatyperna på följande sätt:

Synapstyp Sparktyp
decimal, money, , numericsmallmoney DecimalType
smallint ShortType
tinyint ByteType
int IntegerType
bigint LongType
real FloatType
float DoubleType
char, nchar, ntext, , nvarchar, text, uniqueidentifier, , varchar, xml StringType
binary, geography, geometry, image, timestamp, , , udtvarbinary BinaryType
bit BooleanType
date DateType
datetime, datetime2, , smalldatetimetime TimestampType/TimestampNTZType*

*När du läser från Synapse/SQL Data Warehouse (SQLDW) mappas SQLDW datetimes till Spark TimestampType om preferTimestampNTZ = false (standard). SQLDW datetimes mappas till TimestampNTZType om preferTimestampNTZ = true.