Megosztás a következőn keresztül:


Összevont lekérdezések futtatása a Snowflake-on

Ez a cikk azt ismerteti, hogyan állíthatja be a Lakehouse Federationt összevont lekérdezések futtatására olyan Snowflake-adatokon, amelyeket nem az Azure Databricks kezel. Ha többet szeretne megtudni a Lakehouse Federation-ről, olvassa el a Mi az a Lakehouse Federation?

Ha a Lakehouse Federation használatával szeretne csatlakozni a Snowflake-adatbázishoz, az alábbiakat kell létrehoznia az Azure Databricks Unity Catalog metaadattárában:

  • Kapcsolat a Snowflake-adatbázissal.
  • Egy külföldi katalógus , amely tükrözi a Snowflake-adatbázist a Unity Catalogban, így a Unity Catalog lekérdezési szintaxisával és adatszabályozási eszközeivel kezelheti az Azure Databricks-felhasználók hozzáférését az adatbázishoz.

Mielőtt elkezdené

Munkaterületre vonatkozó követelmények:

  • A Unity Cataloghoz engedélyezett munkaterület.

Számítási követelmények:

  • Hálózati kapcsolat a Databricks Runtime-fürtből vagy az SQL Warehouse-ból a céladatbázis-rendszerekhez. Lásd a Lakehouse Federation hálózatkezelési ajánlásait.
  • Az Azure Databricks-fürtöknek a Databricks Runtime 13.3 LTS vagy újabb verzióját kell használniuk, valamint megosztott vagy egyfelhasználós hozzáférési módot kell használniuk.
  • Az SQL-raktáraknak Pro vagy Kiszolgáló nélkülinek kell lenniük, és 2023.40-et vagy újabb verziót kell használniuk.

Szükséges engedélyek:

  • Kapcsolat létrehozásához metaadattár-rendszergazdának vagy felhasználónak kell lennie a CREATE CONNECTION munkaterülethez csatolt Unity Catalog metaadattára jogosultsággal.
  • Külföldi katalógus létrehozásához rendelkeznie kell a CREATE CATALOG metaadattár engedélyével, és vagy a kapcsolat tulajdonosának kell lennie, vagy jogosultsággal kell rendelkeznie CREATE FOREIGN CATALOG a kapcsolaton.

Az alábbi tevékenységalapú szakaszokban további engedélykövetelmények vannak megadva.

  • Ha az OAuth használatával szeretne hitelesítést végezni, hozzon létre egy biztonsági integrációt a Snowflake konzolon. A részletekért tekintse meg a következő szakaszt.

(Nem kötelező) Biztonsági integráció létrehozása a Snowflake konzolon

Ha az OAuth használatával szeretne hitelesíteni, kövesse ezt a lépést a Snowflake-kapcsolat létrehozása előtt. Ha inkább felhasználónévvel és jelszóval szeretne hitelesíteni, hagyja ki ezt a szakaszt.

Feljegyzés

Csak a Snowflake natív OAuth-integrációja támogatott. Az olyan külső OAuth-integrációk, mint az Okta vagy a Microsoft Entra ID, nem támogatottak.

A Snowflake konzolon futtassa a következőt CREATE SECURITY INTEGRATION: . Cserélje az alábbi értékeket:

  • <integration-name>: Az OAuth-integráció egyedi neve.

  • <workspace-url>: Egy Azure Databricks-munkaterület URL-címe. Az Azure Databricks-munkaterület egyedi URL-címét kell beállítania OAUTH_REDIRECT_URI https://<workspace-url>/login/oauth/snowflake.html<workspace-url>, ahol létre fogja hozni a Snowflake-kapcsolatot.

  • <duration-in-seconds>: A frissítési jogkivonatok időhossza.

    Fontos

    OAUTH_REFRESH_TOKEN_VALIDITY egy egyéni mező, amely alapértelmezés szerint 90 napra van beállítva. A frissítési jogkivonat lejárata után újra hitelesítenie kell a kapcsolatot. Állítsa be a mezőt ésszerű hosszúságúra.

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;

Kapcsolat létrehozása

A kapcsolat megadja a külső adatbázisrendszer eléréséhez szükséges elérési utat és hitelesítő adatokat. Kapcsolat létrehozásához használhatja a Catalog Explorert vagy az CREATE CONNECTION SQL-parancsot egy Azure Databricks-jegyzetfüzetben vagy a Databricks SQL-lekérdezésszerkesztőben.

Feljegyzés

A Databricks REST API-val vagy a Databricks parancssori felülettel is létrehozhat kapcsolatot. Lásd: POST /api/2.1/unity-catalog/connections és Unity Catalog parancsok.

Szükséges engedélyek: Metaadattár-rendszergazda vagy jogosultsággal CREATE CONNECTION rendelkező felhasználó.

Katalóguskezelő

  1. Az Azure Databricks-munkaterületen kattintson a Katalógus elemre Katalógus ikon .

  2. A Katalógus panel tetején kattintson aHozzáadás vagy plusz ikon Hozzáadás ikonra, és válassza a Kapcsolat hozzáadása lehetőséget a menüből.

    Másik lehetőségként a Gyorselérési lapon kattintson a Külső adatok >gombra, lépjen a Kapcsolatok lapra, és kattintson a Kapcsolat létrehozása parancsra.

  3. Adjon meg egy felhasználóbarát kapcsolatnevet.

  4. Válassza ki a Snowflake kapcsolattípusát.

  5. Adja meg a Snowflake-raktár alábbi kapcsolati tulajdonságait.

    • Hitelesítés típusa: OAuth vagy Username and password
    • Gazdagép: Például: snowflake-demo.east-us-2.azure.snowflakecomputing.com
    • Port: Például: 443
    • Hópehelyraktár: Például: my-snowflake-warehouse
    • Felhasználó: Például: snowflake-user
    • (OAuth) Ügyfélazonosító: A Snowflake konzolon futtassa SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security_integration_name>') a biztonsági integráció ügyfélazonosítójának lekéréséhez.
    • (OAuth): Ügyfélkód: A Snowflake konzolon futtassa SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security_integration_name>') az ügyfél titkos kódjának lekéréséhez a biztonsági integrációhoz.
    • (OAuth) Ügyfél hatóköre: refresh_token session:role:<role-name>. Adja meg a használni kívánt Snowflake szerepkört <role-name>.
    • (Felhasználónév és jelszó) Jelszó: Például: password123

    (OAuth) A rendszer arra kéri, hogy jelentkezzen be a Snowflake-be OAuth-hitelesítő adataival.

  6. (Nem kötelező) Kattintson a Kapcsolat tesztelése elemre annak ellenőrzéséhez, hogy működik-e.

  7. (Nem kötelező) Megjegyzés hozzáadása.

  8. Kattintson a Létrehozás gombra.

SQL

Futtassa a következő parancsot egy jegyzetfüzetben vagy a Databricks SQL-lekérdezésszerkesztőben.

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

Javasoljuk, hogy az Azure Databricks titkos kulcsait használja egyszerű szöveges sztringek helyett olyan bizalmas értékekhez, mint a hitelesítő adatok. Példa:

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

A titkos kódok beállításáról további információt a Titkos kódok kezelése című témakörben talál.

Idegen katalógus létrehozása

A külső katalógus egy külső adatrendszer adatbázisát tükrözi, így az Azure Databricks és a Unity Catalog használatával lekérdezheti és kezelheti az adatbázisban lévő adatokhoz való hozzáférést. Idegen katalógus létrehozásához a már definiált adatforráshoz való kapcsolatot kell használnia.

Idegen katalógus létrehozásához használhatja a Catalog Explorert vagy az CREATE FOREIGN CATALOG SQL-parancsot egy Azure Databricks-jegyzetfüzetben vagy az SQL-lekérdezésszerkesztőben.

Feljegyzés

Katalógus létrehozásához használhatja a Databricks REST API-t vagy a Databricks parancssori felületet is. Lásd: POST /api/2.1/unity-catalog/catalogs és Unity Catalog parancsok.

Szükséges engedélyek: CREATE CATALOG a metaadattár engedélye, illetve a kapcsolat tulajdonjoga vagy a CREATE FOREIGN CATALOG kapcsolat jogosultsága.

Katalóguskezelő

  1. Az Azure Databricks-munkaterületen kattintson a Katalógus gombra Katalógus ikon a Catalog Explorer megnyitásához.

  2. A Katalógus panel tetején kattintson aHozzáadás vagy plusz ikon Hozzáadás ikonra, és válassza a Katalógus hozzáadása lehetőséget a menüből.

    Másik lehetőségként a Gyorselérési lapon kattintson a Katalógusok gombra, majd a Katalógus létrehozása gombra.

  3. Kövesse az utasításokat a külföldi katalógusok létrehozásakor a Katalógusok létrehozása területen.

SQL

Futtassa a következő SQL-parancsot egy jegyzetfüzetben vagy egy SQL-lekérdezésszerkesztőben. A szögletes zárójelek nem kötelezőek. Cserélje le a helyőrző értékeket:

CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');

Kis- és nagybetűket megkülönböztető adatbázis-azonosítók

A database külföldi katalógus mezője snowflake-adatbázis-azonosítóra van leképezni. Ha a Snowflake-adatbázis azonosítója nem megkülönbözteti a kis- és nagybetűk megkülönböztetését, a külső katalógusban <database-name> használt burkolat megmarad. Ha azonban a Snowflake-adatbázis azonosítója megkülönbözteti a kis- és nagybetűket, a kis- és nagybetűk megőrzéséhez a külföldi katalógust <database-name> dupla idézőjelekbe kell csomagolnia.

Példa:

  • database konvertálása DATABASE

  • "database" konvertálása database

  • "database""" konvertálása database"

    A dupla idézőjelek feloldásához használjon egy másik dupla idézőjelet.

  • "database"" hibát eredményez, mert a kettős idézőjel nem megfelelő.

További információ: Azonosítókövetelmények a Snowflake dokumentációjában.

Támogatott leküldéses leküldések

A következő leküldéses leküldések támogatottak:

  • Szűrők
  • Leképezések
  • Korlát
  • Összekapcsolások
  • Összesítések (Átlag, Corr, CovPopulation, CovSample, Count, Max, Min, StddevPop, StddevSamp, Sum, VariancePop, VarianceSamp)
  • Függvények (sztringfüggvények, matematikai függvények, adatok, idő- és időbélyegfüggvények és egyéb egyéb függvények, például Alias, Cast, SortOrder)
  • Windows-függvények (DenseRank, Rank, RowNumber)
  • Rendezés

Adattípus-leképezések

Ha a Snowflake-ből a Sparkba olvas, az adattípusok az alábbiak szerint lesznek megfeleltetve:

Hópehely típusa Spark-típus
decimális, szám, szám Decimális típus
bigint, bájt, int, egész szám, smallint, tinyint Egész számtípus
float, float4, float8 FloatType
dupla, dupla pontosság, valós DoubleType
karakter, karakter, sztring, szöveg, idő, varchar StringType
bináris BinaryType
Logikai Logikai típus
dátum: DateType
datetime, timestamp, timestamp_ltz, timestamp_ntz, timestamp_tz Időbélyegtípus

OAuth-korlátozások

Az OAuth támogatási korlátozásai a következők:

  • A Snowflake OAuth végpontnak elérhetőnek kell lennie a Databricks vezérlősík IP-címéről. Lásd: Kimenő forgalom az Azure Databricks vezérlősíkjáról. A Snowflake támogatja a hálózati szabályzatok biztonsági integrációs szinten történő konfigurálását, amely lehetővé teszi egy külön hálózati szabályzat létrehozását, amely lehetővé teszi a Databricks vezérlősík és az OAuth-végpont közötti közvetlen kapcsolatot engedélyezés céljából.
  • A Proxy, a Proxy gazdagép, a Proxyport és a Snowflake szerepkör konfigurációs beállításai nem támogatottak. Adja meg a Snowflake szerepkört az OAuth-hatókör részeként.

További erőforrások