Ö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 rendelkeznieCREATE 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ítaniaOAUTH_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ő
Az Azure Databricks-munkaterületen kattintson a Katalógus elemre .
A Katalógus panel tetején kattintson a 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.
Adjon meg egy felhasználóbarát kapcsolatnevet.
Válassza ki a Snowflake kapcsolattípusát.
Adja meg a Snowflake-raktár alábbi kapcsolati tulajdonságait.
- Hitelesítés típusa:
OAuth
vagyUsername 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.
- Hitelesítés típusa:
(Nem kötelező) Kattintson a Kapcsolat tesztelése elemre annak ellenőrzéséhez, hogy működik-e.
(Nem kötelező) Megjegyzés hozzáadása.
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ő
Az Azure Databricks-munkaterületen kattintson a Katalógus gombra a Catalog Explorer megnyitásához.
A Katalógus panel tetején kattintson a 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.
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:
<catalog-name>
: A katalógus neve az Azure Databricksben.<connection-name>
: Az adatforrást, elérési utat és hozzáférési hitelesítő adatokat meghatározó kapcsolati objektum .<database-name>
: Annak az adatbázisnak a neve, amelyet katalógusként szeretne tükrözni az Azure Databricksben.
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ásaDATABASE
"database"
konvertálásadatabase
"database"""
konvertálásadatabase"
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
- A Snowflake OAuth konfigurálása egyéni ügyfelek számára a Snowflake dokumentációjában
- SQL-referencia: CREATE SECURITY INTEGRATION (Snowflake OAuth) a Snowflake dokumentációjában