Sdílet prostřednictvím


Spouštění federovaných dotazů ve Snowflake (OAuth)

Tato stránka popisuje, jak nastavit federaci Lakehouse pro spouštění federovaných dotazů na data Snowflake, která nespravuje Azure Databricks. Další informace o federaci Lakehouse najdete v tématu Co je Federace Lakehouse?

Pokud se chcete připojit k databázi Snowflake pomocí federace Lakehouse, musíte v metastore katalogu Azure Databricks Unity vytvořit následující:

  • Připojení k databázi Snowflake.
  • Cizí katalog , který zrcadlí databázi Snowflake v katalogu Unity Catalog, abyste mohli použít syntaxi dotazů Unity Catalog a nástroje řízení dat ke správě přístupu uživatelů Azure Databricks k databázi.

Tato stránka popisuje, jak spouštět federované dotazy na data Snowflake pomocí integrovaného OAuth integrace Snowflake. Další metody ověřování najdete na následujících stránkách:

Ve Snowflake můžete spouštět federované dotazy pomocí federace dotazů nebo federace katalogu.

V federaci dotazů JDBC odešle dotaz katalogu Unity do externí databáze. To je ideální pro vytváření sestav na vyžádání nebo testování konceptu ve vašich kanálech ETL.

V federování katalogu se dotaz katalogu Unity spouští přímo v úložišti souborů. Tento přístup je užitečný pro přírůstkovou migraci bez přizpůsobení kódu nebo jako dlouhodobější hybridní model pro organizace, které musí udržovat některá data ve Snowflake společně s daty registrovanými v katalogu Unity. Viz Povolení federace katalogu Snowflake.

Federace dotazů

Než začnete

Požadavky na pracovní prostor:

  • Pracovní prostor aktivován pro katalog 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 síťová doporučení pro Federaci Lakehouse.
  • 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.
  • 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í.

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

Vytvoření integrace zabezpečení

V konzole Snowflake spusťte CREATE SECURITY INTEGRATION. Nahraďte následující hodnoty:

  • <integration-name>: Jedinečný název integrace OAuth.

  • <workspace-url>: Adresa URL pracovního prostoru Azure Databricks. Musíte nastavit OAUTH_REDIRECT_URI na https://<workspace-url>/login/oauth/snowflake.html, kde <workspace-url> je jedinečná adresa URL pracovního prostoru Azure Databricks, kde vytvoříte připojení Snowflake.

  • <duration-in-seconds>: Doba trvání obnovovacích tokenů.

    Important

    OAUTH_REFRESH_TOKEN_VALIDITY je vlastní pole nastavené ve výchozím nastavení na 90 dnů. Po vypršení platnosti obnovovacího tokenu je nutné připojení znovu ověřit. Nastavte pole na přiměřenou délku času.

Například:

CREATE SECURITY INTEGRATION <integration-name>
TYPE = oauth
ENABLED = true
OAUTH_CLIENT = custom
OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
OAUTH_REDIRECT_URI = 'https://<workspace-url>/login/oauth/snowflake.html'
OAUTH_ISSUE_REFRESH_TOKENS = TRUE
OAUTH_REFRESH_TOKEN_VALIDITY = <duration-in-seconds>
OAUTH_ENFORCE_PKCE = TRUE;

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 .

  1. V pracovním prostoru Azure Databricks klikněte na ikonu Data.Katalog.

  2. V horní části podokna katalogu klikněte na ikonu Přidat nebo plusikona Přidat a v nabídce vyberte možnost Přidat připojení.

    Případně na stránce Rychlý přístup klikněte na tlačítko Externí data >, přejděte na kartu Připojení a klikněte na Vytvořit připojení.

  3. Na stránce Základy připojení průvodce nastavením připojení zadejte název připojení, který je uživatelsky přívětivý .

  4. Vyberte typ připojeníSnowflake.

  5. Pro typ ověřování vyberte OAuth z rozevírací nabídky.

  6. (Volitelné) Přidejte komentář.

  7. Klikněte na tlačítko Další.

  8. Zadejte následující podrobnosti o ověřování a připojení pro váš sklad Snowflake.

    • Hostitel: Příklad: snowflake-demo.east-us-2.azure.snowflakecomputing.com

    • Port: Příklad: 443

    • Uživatel: Příklad: snowflake-user

    • ID klienta: V konzole Snowflake spusťte SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security-integration-name>'), abyste získali ID klienta pro integraci zabezpečení.

    • Tajný klíč klienta: V konzole Snowflake spusťte SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security-integration-name>') načtení tajného klíče klienta pro integraci zabezpečení.

    • Rozsah OAuth: refresh_token session:role:<role-name>. Zadejte roli Snowflake, která se má použít v <role-name>.

    • Přihlaste se pomocí Snowflake: Klikněte a přihlaste se ke Snowflake pomocí svých přihlašovacích údajů OAuth.

      Po úspěšném přihlášení jste přesměrováni zpět do průvodce Nastavení připojení.

  9. Klikněte na Vytvořit připojení.

  10. 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.

  11. (Volitelné) Kliknutím na test připojení potvrďte, že funguje.

  12. Klikněte na Vytvořit katalog.

  13. 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.

  14. Změňte vlastníka , který bude moci spravovat přístup ke všem objektům v katalogu. Začněte psát entitu do textového pole a poté klikněte na entitu ve zobrazených výsledcích.

  15. Udělte privilegia v rámci katalogu. Klikněte na Odsouhlasit:

    1. Uveďte uživatele Principals, kteří budou mít přístup k objektům v katalogu. Začněte psát entitu do textového pole a poté klikněte na entitu ve zobrazených výsledcích.
    2. Vyberte přednastavení oprávnění k poskytnutí každému subjektu. 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.
      • Z rozbalovacího menu vyberte Datový editor, abyste udělili read a modify oprávnění k objektům v katalogu.
      • Ručně vyberte oprávnění, která chcete udělit.
    3. Klikněte na Povolit.
  16. Klikněte na tlačítko Další.

  17. Na stránce Metadata zadejte páry klíč-hodnota tagů. Další informace najdete v tématu Označení zabezpečitelných objektů v Unity Catalogu.

  18. (Volitelné) Přidejte komentář.

  19. Klikněte na Uložit.

Identifikátory rozlišující malá a velká písmena v databázích

Pole database cizího katalogu mapuje identifikátor databáze Snowflake. Pokud identifikátor databáze Snowflake nerozlišuje velká a malá písmena, zachová se formátování, které používáte v cizím katalogu <database-name>. Pokud je však identifikátor databáze Snowflake citlivý na velikost písmen, musíte cizí katalog <database-name> uzavřít do dvojitých uvozovek, aby se zachovala správná velikost písmen.

Například:

  • database je převeden na DATABASE

  • "database" je převeden na database

  • "database""" je převeden na database"

    Pro únik dvojité uvozovky použijte jinou dvojitou uvozovku.

  • "database"" způsobí chybu, protože dvojitá uvozovka není správně escapována.

Další informace najdete v tématu Požadavky na identifikátor v dokumentaci Snowflake.

Podporovaná snižování

Podporují se následující pushdowny:

  • Filters
  • Projections
  • Limit
  • Joins
  • Agregace (Průměr, Corr, CovPopulation, CovSample, Počet, Maximum, Minimum, StddevPop, StddevSamp, Součet, VariancePop, VarianceSamp)
  • Funkce (řetězcové funkce, matematické funkce, data, časová a časová razítka a další různé funkce, jako jsou Alias, Cast, SortOrder)
  • Funkce Systému Windows (DenseRank, Rank, RowNumber)
  • Sorting

Mapování datového typu

Při čtení ze Snowflake do Spark se datové typy mapují takto:

Typ sněhové vločky Typ Spark
desetinný, číslo, numerický DecimalType
bigint (velké číslo), byteint (základní bajt), int (celé číslo), integer (celé číslo), smallint (malé celé číslo), tinyint (malé číslo) IntegerType
float, float4, float8 (typy dat) FloatType
dvojité číslo, dvojitá přesnost, reálné číslo DoubleType
char, znak, řetězec, text, čas, varchar StringType
binární BinaryType
boolean BooleanType
date DateType
datetime, timestamp, timestamp_ltz, timestamp_ntz, timestamp_tz TimestampType

Omezení federace dotazů

  • Koncový bod Snowflake OAuth musí být přístupný z IP adres řídicí roviny Azure Databricks. Viz Odchozí IP adresy z řídicí roviny Azure Databricks. Snowflake podporuje konfiguraci zásad sítě na úrovni integrace zabezpečení, což umožňuje samostatné síťové zásady, které umožňují přímé připojení z řídicí roviny Azure Databricks ke koncovému bodu OAuth pro autorizaci.
  • Použít Proxy, Proxy hostitel, Proxy port a možnosti konfigurace role Snowflake nejsou podporované. Jako součást rozsahu OAuth určete roli Snowflake.

Dodatečné zdroje

Projděte si následující články v dokumentaci snowflake: