Spouštění federovaných dotazů v Microsoft Azure Synapse

Tento článek popisuje, jak nastavit Lakehouse Federation k tomu, aby spouštěla federované dotazy na data služby Azure Synapse (SQL Data Warehouse), která nespravuje Azure Databricks. Další informace o federaci Lakehouse najdete v tématu Připojení k externím databázím a katalogům.

Pokud se chcete připojit k databázi Azure Synapse (SQL Data Warehouse) pomocí federace Lakehouse, musíte v metastoru azure Databricks Unity Catalog vytvořit následující:

  • Připojení k databázi Azure Synapse (SQL Data Warehouse).
  • cizí katalog, který zrcadlí databázi Azure Synapse (SQL Data Warehouse) v Katalogu Unity, abyste mohli pomocí syntaxe dotazů Unity Catalog a nástrojů pro správu dat spravovat uživatelský přístup k databázi Azure Databricks.

Než začnete

Požadavky na pracovní prostor:

  • Pracovní prostor aktivován pro katalog Unity. Pracovní prostory vytvořené po 9. listopadu 2023 jsou pro Unity Catalog automaticky povolené, včetně automatického provisioningu metastoru. Metastore nemusíte vytvářet ručně, pokud váš pracovní prostor pochází z doby před automatickým povolením a nebyl povolen pro Unity Catalog. Viz Začínáme s katalogem Unity.

Požadavky na výpočetní prostředky:

  • Síťové připojení z vašeho výpočetního prostředku k cílovým databázovým systémům. Viz doporučení ohledně sítí pro Lakehouse Federation.
  • Výpočetní prostředky Azure Databricks musí používat Databricks Runtime 13.3 LTS nebo novější a Standard nebo dedikovaný režim přístupu.
  • Sql Warehouse musí být pro nebo bezserverové a musí používat verzi 2023.40 nebo vyšší.

Požadovaná oprávnění:

  • Pokud chcete vytvořit připojení, musíte být správcem metastoru nebo uživatelem s oprávněním CREATE CONNECTION k metastoru katalogu Unity připojenému k pracovnímu prostoru. V pracovních prostorech, které byly automaticky povoleny pro Katalog Unity, mají správci pracovišť CREATE CONNECTION ve výchozím nastavení oprávnění.
  • Chcete-li vytvořit cizí katalog, musíte mít oprávnění CREATE CATALOG k metastoru a být buď vlastníkem připojení, nebo mít oprávnění CREATE FOREIGN CATALOG pro připojení. V pracovních prostorech, které byly automaticky povoleny pro Katalog Unity, mají správci pracovišť CREATE CATALOG ve výchozím nastavení oprávnění.

Další požadavky na oprávnění jsou uvedeny v následující části založené na úlohách.

Vytvoření připojení

Připojení určuje cestu a přihlašovací údaje pro přístup k externímu databázovému systému. K vytvoření připojení můžete použít Průzkumníka katalogu nebo příkaz CREATE CONNECTION SQL v poznámkovém bloku Azure Databricks nebo editoru dotazů SQL Databricks.

Note

K vytvoření připojení můžete použít také rozhraní REST API Databricks nebo rozhraní příkazového řádku Databricks. Viz POST /api/2.1/unity-catalog/connections a příkazy Unity Catalog .

Požadovaná oprávnění: Správce metastoru nebo uživatel s oprávněním CREATE CONNECTION .

Průzkumník katalogu

  1. V pracovním prostoru Azure Databricks klikněte na ikonu Data.Katalog.
  2. V horní části podokna Katalog klikněte na ikonu Přidat nebo plusPřidat a v nabídce vyberte Vytvořit připojení .
  3. Na stránce základy připojení průvodce Nastavení připojení zadejte uživatelsky přívětivý název připojení.
  4. Vyberte typ připojení pro SQLDW.
  5. (Volitelné) Přidejte komentář.
  6. Klikněte na tlačítko Další.
  7. Na stránce Ověřování zadejte následující vlastnosti připojení pro vaši instanci Azure Synapse:
    • Hostitel: Například sqldws-demo.database.windows.net.
    • Port: Příklad: 1433
    • User
    • Password
    • důvěřovat certifikátu serveru: Ve výchozím nastavení je tato možnost zrušena. Pokud je tato možnost vybraná, vrstva přenosu používá SSL k šifrování kanálu a obchází řetěz certifikátů při ověřování důvěryhodnosti. Ponechte tuto možnost nastavenou na výchozí, pokud nemáte konkrétní potřebu obejít ověření důvěryhodnosti.
  8. Klikněte na Vytvořit připojení.
  9. Na stránce základy katalogu zadejte název cizího katalogu. Cizí katalog zrcadlí databázi v externím datovém systému, abyste mohli dotazovat a spravovat přístup k datům v této databázi pomocí Azure Databricks a Unity Catalog.
  10. (Volitelné) Kliknutím na test připojení potvrďte, že funguje.
  11. Klikněte na Vytvořit katalog.
  12. Na stránce Access vyberte pracovní prostory, ve kterých mají uživatelé přístup k vytvořenému katalogu. Můžete vybrat Všechny pracovní prostory mají přístup, nebo klepněte na Přiřadit k pracovním prostorům, vyberte pracovní prostory a potom klikněte na Přiřadit.
  13. Změňte vlastníka , který bude moci spravovat přístup ke všem objektům v katalogu. Začněte do textového pole zadávat objekt zabezpečení a potom ve vrácených výsledcích klikněte na objekt zabezpečení.
  14. Udělte oprávnění na katalog. Klikněte na Udělit:
    1. Uveďte uživatele Principals, kteří budou mít přístup k objektům v katalogu. Začněte do textového pole zadávat objekt zabezpečení a potom ve vrácených výsledcích klikněte na objekt zabezpečení.
    2. Vyberte přednastavení oprávnění, které se mají každému subjektu udělit. Všichni uživatelé účtu mají ve výchozím nastavení udělené BROWSE.
      • V rozevírací nabídce vyberte Data Reader a poskytněte read oprávnění k objektům v katalogu.
      • V rozevírací nabídce vyberte Datový editor a udělte oprávnění read a modify k objektům v katalogu.
      • Ručně vyberte oprávnění, která chcete udělit.
    3. Klikněte na Povolit.
  15. Klikněte na tlačítko Další.
  16. Na stránce Metadata zadejte páry klíč-hodnota tagů. Další informace najdete v tématu Použití značek na zabezpečitelné objekty v Katalogu Unity.
  17. (Volitelné) Přidejte komentář.
  18. Klikněte na Uložit.

SQL

V poznámkovém bloku nebo editoru dotazů SQL Databricks spusťte následující příkaz.

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

Doporučujeme používat Azure Databricks tajemství místo prostého textu pro citlivé hodnoty, jako jsou přihlašovací údaje. Například:

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>')
)

Informace o nastavení tajných kódů najdete v tématu Správa tajných kódů.

Vytvoření zahraničního katalogu

Note

Pokud k vytvoření připojení ke zdroji dat použijete uživatelské rozhraní, zahrne se vytvoření cizího katalogu a tento krok můžete přeskočit.

Cizí katalog zrcadlí databázi v externím datovém systému, abyste mohli dotazovat a spravovat přístup k datům v této databázi pomocí Azure Databricks a Unity Catalog. Chcete-li vytvořit cizí katalog, použijete připojení ke zdroji dat, který již byl definován.

K vytvoření cizího katalogu můžete použít Průzkumníka katalogu nebo příkaz CREATE FOREIGN CATALOG SQL v poznámkovém bloku Azure Databricks nebo v editoru dotazů SQL. K vytvoření katalogu můžete použít také rozhraní REST API Databricks nebo rozhraní příkazového řádku Databricks. Viz POST /api/2.1/unity-catalog/catalogs a příkazy Unity Catalog.

Požadovaná oprávnění:CREATE CATALOG oprávnění k metastoru a vlastnictví připojení nebo CREATE FOREIGN CATALOG oprávnění k připojení.

Průzkumník katalogu

  1. V pracovním prostoru Azure Databricks klikněte na ikonu Data. Klikněte na Katalog pro otevření Průzkumníka katalogu.

  2. V horní části podokna katalogu klikněte na ikonu Přidat nebo plus a v nabídce vyberte Přidat katalog.

    Případně na stránce Rychlý přístup klikněte na tlačítko Katalogy a potom klikněte na tlačítko Vytvořit katalog.

  3. Postupujte podle pokynů pro vytváření cizích katalogů v Vytvořit katalogy.

SQL

V poznámkovém bloku nebo editoru dotazů SQL spusťte následující příkaz SQL. Položky v závorkách jsou volitelné. Nahraďte zástupné hodnoty:

  • <catalog-name>: Název katalogu v Azure Databricks.
  • <connection-name>: Objekt připojení , který určuje zdroj dat, cestu a přihlašovací údaje pro přístup.
  • <database-name>: Název databáze, kterou chcete zrcadlit jako katalog v Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');

Podporovaná snižování

Následující tabulka uvádí pushdown operace podporované pro službu Azure Synapse (SQL Data Warehouse) včetně výpočetních prostředků požadovaných pro každou z nich.

Zásobník Podporované výpočetní prostředky
Filters Podporovány Všechny výpočetní prostředky
Obsahuje, Začíná na, Končí na Podporovány Všechny výpočetní prostředky
Limit Podporovány Všechny výpočetní prostředky
Matematické funkce
SIN, COS, FLOOR, ABS (při povolení ANSI) – částečná podpora, pouze ve výrazech filtru
Podporovány Všechny výpočetní prostředky
Různé funkce
Přetypování – částečná podpora, pouze pro výrazy filtru
Podporovány Všechny výpočetní prostředky
Projections Podporovány Všechny výpočetní prostředky
Řetězcové funkce
(UPPER, LOWER, CONCAT, TRIM – částečná podpora, pouze výrazy filtru)
Podporovány Všechny výpočetní prostředky
Aggregates
(Průměr, Počet, Maximum, Minimum, Směrodatná odchylka populace, Směrodatná odchylka výběru, Součet, Rozptyl populace, Rozptyl výběru)
Podporovány Všechny výpočetní prostředky
Aritmetické operátory
(například +, -, *, %, /) – není podporováno, pokud je anSI zakázaný.
Podporovány Všechny výpočetní prostředky
Logické operátory
(například =, <=>, <, <=, >, >=)
Podporovány Všechny výpočetní prostředky
bitové operátory
(&, |, ^ a ~)
Podporovány Všechny výpočetní prostředky
Řazení při použití s limitem Podporovány Všechny výpočetní prostředky
Joins Nepodporováno Nepodporováno
Funkce okna Nepodporováno Nepodporováno

Mapování datového typu

Při čtení ze služby Synapse / SQL Data Warehouse do Sparku se datové typy mapuje takto:

Typ Synapse Typ Spark
decimal, money, , numericsmallmoney DecimalType
smallint ShortType
tinyint ByteType
int IntegerType
bigint LongType
real FloatType
float DoubleType
char, nchar, ntext, , nvarchartext, uniqueidentifier, , varcharxml StringType
binary, geography, geometry, image, timestamp, , udtvarbinary BinaryType
bit BooleanType
date DateType
datetime, datetime2, , smalldatetimetime TimestampType/TimestampNTZType*

Při čtení ze služby Synapse / SQL Data Warehouse (SQLDW) se SQLDW datetimes mapují na Spark TimestampType za předpokladu, že preferTimestampNTZ = false je nastaveno jako výchozí. SQLDW datetimes jsou mapovány na TimestampNTZType if preferTimestampNTZ = true.