Adatok másolása és átalakítása a Snowflake V2-ben az Azure Data Factory vagy az Azure Synapse Analytics használatával
A következőkre vonatkozik: Azure Data Factory
Azure Synapse Analytics
Tipp.
Próbálja ki a Data Factoryt a Microsoft Fabricben, amely egy teljes körű elemzési megoldás a nagyvállalatok számára. A Microsoft Fabric az adattovábbítástól az adatelemzésig, a valós idejű elemzésig, az üzleti intelligenciáig és a jelentéskészítésig mindent lefed. Ismerje meg, hogyan indíthat új próbaverziót ingyenesen!
Ez a cikk bemutatja, hogyan használhatja a Copy tevékenység az Azure Data Factoryben és az Azure Synapse-folyamatokban az adatok Snowflake-ből és Snowflake-be való másolásához, valamint Adatfolyam a Snowflake-adatok átalakításához. További információkért tekintse meg a Data Factory vagy az Azure Synapse Analytics bevezető cikkét.
Fontos
A Snowflake V2-összekötő továbbfejlesztett natív Snowflake-támogatást biztosít. Ha a Snowflake V1-összekötőt használja a megoldásban, javasoljuk, hogy a lehető leghamarabb frissítse a Snowflake-összekötőt . A V2 és az 1. V közötti különbségről ebben a szakaszban olvashat.
Támogatott képességek
Ez a Snowflake-összekötő a következő képességeket támogatja:
Támogatott képességek | IR |
---|---|
Copy tevékenység (forrás/fogadó) | (1) (2) |
Adatfolyam leképezése (forrás/fogadó) | (1) |
Keresési tevékenység | (1) (2) |
Szkripttevékenység | (1) (2) |
(1) Azure-integrációs modul (2) Saját üzemeltetésű integrációs modul
A Copy tevékenység ez a Snowflake-összekötő a következő funkciókat támogatja:
- A Snowflake COPY parancsát használó Snowflake-adatok másolása a [location] parancsba a legjobb teljesítmény elérése érdekében.
- Másolja az adatokat a Snowflake-be, amely kihasználja a Snowflake COPY in [table] parancsát a legjobb teljesítmény elérése érdekében. Támogatja a Snowflake-t az Azure-ban.
- Ha proxyra van szükség a Snowflake-hez való csatlakozáshoz egy saját üzemeltetésű integrációs modulból, konfigurálnia kell a környezeti változókat HTTP_PROXY és HTTPS_PROXY az integrációs modul gazdagépén.
Előfeltételek
Ha az adattár helyszíni hálózaton, Azure-beli virtuális hálózaton vagy Amazon Virtual Private Cloudon belül található, konfigurálnia kell egy saját üzemeltetésű integrációs modult a csatlakozáshoz. Mindenképpen adja hozzá a saját üzemeltetésű integrációs modul által használt IP-címeket az engedélyezett listához.
Ha az adattár felügyelt felhőalapú adatszolgáltatás, használhatja az Azure Integration Runtime-ot. Ha a hozzáférés a tűzfalszabályokban jóváhagyott IP-címekre korlátozódik, felveheti az Azure Integration Runtime IP-eket az engedélyezett listára.
A Forráshoz vagy fogadóhoz használt Snowflake-fióknak rendelkeznie kell a szükséges USAGE
hozzáféréssel az adatbázishoz, és olvasási/írási hozzáféréssel kell rendelkeznie a sémán és az alatta lévő táblákon/nézeteken. Emellett a sémának is rendelkeznie CREATE STAGE
kell a külső szakasz SAS URI-val való létrehozásához.
A következő fióktulajdonság-értékeket kell megadni
Tulajdonság | Leírás | Kötelező | Alapértelmezett |
---|---|---|---|
REQUIRE_STORAGE_INTEGRATION_FOR_STAGE_CREATION | Megadja, hogy szükség van-e egy tárolóintegrációs objektumra felhőbeli hitelesítő adatokként egy elnevezett külső szakasz létrehozásakor (a CREATE STAGE használatával) a magánfelhőbeli tárolóhely eléréséhez. | HAMIS | HAMIS |
REQUIRE_STORAGE_INTEGRATION_FOR_STAGE_OPERATION | Megadja, hogy szükség van-e egy elnevezett külső szakasz használatára, amely felhőbeli hitelesítő adatokként hivatkozik egy tárolóintegrációs objektumra az adatok magánfelhő-tárolóhelyre való betöltésekor vagy eltávolításakor. | HAMIS | HAMIS |
A Data Factory által támogatott hálózati biztonsági mechanizmusokkal és lehetőségekkel kapcsolatos további információkért lásd az adathozzáférési stratégiákat.
Első lépések
A Copy tevékenység folyamattal való végrehajtásához használja az alábbi eszközök vagy SDK-k egyikét:
- Az Adatok másolása eszköz
- Az Azure Portal
- A .NET SDK
- A Python SDK
- Azure PowerShell
- A REST API
- Az Azure Resource Manager-sablon
Társított szolgáltatás létrehozása a Snowflake-hez felhasználói felülettel
Az alábbi lépésekkel létrehozhat egy társított szolgáltatást a Snowflake-hez az Azure Portal felhasználói felületén.
Keresse meg az Azure Data Factory vagy a Synapse-munkaterület Kezelés lapját, és válassza a Társított szolgáltatások lehetőséget, majd kattintson az Új gombra:
Keresse meg a Snowflake-t, és válassza a Snowflake-összekötőt.
Konfigurálja a szolgáltatás részleteit, tesztelje a kapcsolatot, és hozza létre az új társított szolgáltatást.
Az összekötő konfigurációjának részletei
A következő szakaszok a Snowflake-összekötőhöz tartozó entitásokat definiáló tulajdonságok részleteit ismertetik.
Társított szolgáltatás tulajdonságai
Ezek az általános tulajdonságok támogatottak a Snowflake társított szolgáltatásban:
Tulajdonság | Leírás | Kötelező |
---|---|---|
típus | A típustulajdonságot SnowflakeV2 értékre kell állítani. | Igen |
accountIdentifier | A fiók neve a szervezetével együtt. Például myorg-account123. | Igen |
adatbázis | A csatlakozás után a munkamenethez használt alapértelmezett adatbázis. | Igen |
adattárház | A munkamenethez a csatlakozás után használt alapértelmezett virtuális raktár. | Igen |
authenticationType | A Snowflake szolgáltatáshoz való csatlakozáshoz használt hitelesítés típusa. Az engedélyezett értékek a következők: Alapszintű (alapértelmezett) és KeyPair. További tulajdonságokat és példákat az alábbi szakaszokban talál. | Nem |
szerepkör | A csatlakozás után a munkamenethez használt alapértelmezett biztonsági szerepkör. | Nem |
házigazda | A Snowflake-fiók gazdagépneve. Például: contoso.snowflakecomputing.com
.cn is támogatott. |
Nem |
connectVia | Az adattárhoz való csatlakozáshoz használt integrációs modul . Használhatja az Azure integrációs modult vagy egy saját üzemeltetésű integrációs modult (ha az adattár egy magánhálózaton található). Ha nincs megadva, az alapértelmezett Azure-integrációs modult használja. | Nem |
Ez a Snowflake-összekötő a következő hitelesítési típusokat támogatja. Részletekért tekintse meg a megfelelő szakaszokat.
Alapszintű hitelesítés
Az alapszintű hitelesítés használatához az előző szakaszban ismertetett általános tulajdonságok mellett adja meg a következő tulajdonságokat:
Tulajdonság | Leírás | Kötelező |
---|---|---|
user | A Snowflake-felhasználó bejelentkezési neve. | Igen |
jelszó | A Snowflake-felhasználó jelszava. Jelölje meg ezt a mezőt SecureString-típusként a biztonságos tároláshoz. Hivatkozhat az Azure Key Vaultban tárolt titkos kódokra is. | Igen |
Példa:
{
"name": "SnowflakeV2LinkedService",
"properties": {
"type": "SnowflakeV2",
"typeProperties": {
"accountIdentifier": "<accountIdentifier>",
"database": "<database>",
"warehouse": "<warehouse>",
"authenticationType": "Basic",
"user": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
},
"role": "<role>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Jelszó az Azure Key Vaultban:
{
"name": "SnowflakeV2LinkedService",
"properties": {
"type": "SnowflakeV2",
"typeProperties": {
"accountIdentifier": "<accountIdentifier>",
"database": "<database>",
"warehouse": "<warehouse>",
"authenticationType": "Basic",
"user": "<username>",
"password": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Feljegyzés
A leképezési Adatfolyam csak az alapszintű hitelesítést támogatják.
Kulcspárok hitelesítése
A kulcspáros hitelesítés használatához konfigurálnia kell és létre kell hoznia egy kulcspár-hitelesítést használó felhasználót a Snowflake-ben a Kulcspár-hitelesítés és a Kulcspár forgatása parancsra hivatkozva. Ezután jegyezze fel a titkos kulcsot és a (nem kötelező) jelszót, amelyet a társított szolgáltatás definiálásához használ.
Az előző szakaszban ismertetett általános tulajdonságok mellett adja meg a következő tulajdonságokat:
Tulajdonság | Leírás | Kötelező |
---|---|---|
user | A Snowflake-felhasználó bejelentkezési neve. | Igen |
privateKey | A kulcspár hitelesítéséhez használt titkos kulcs. Annak érdekében, hogy a titkos kulcs érvényes legyen az Azure Data Factorybe való küldéskor, és figyelembe véve, hogy a privateKey-fájl új karaktereket (\n) tartalmaz, elengedhetetlen a privateKey-tartalom helyes formázása a sztringkonstans formájában. Ez a folyamat magában foglalja a \n explicit hozzáadását minden új vonalhoz. |
Igen |
privateKeyPassphrase | A titkos kulcs visszafejtéséhez használt jelszó, ha titkosítva van. | Nem |
Példa:
{
"name": "SnowflakeV2LinkedService",
"properties": {
"type": "SnowflakeV2",
"typeProperties": {
"accountIdentifier": "<accountIdentifier>",
"database": "<database>",
"warehouse": "<warehouse>",
"authenticationType": "KeyPair",
"user": "<username>",
"privateKey": {
"type": "SecureString",
"value": "<privateKey>"
},
"privateKeyPassphrase": {
"type": "SecureString",
"value": "<privateKeyPassphrase>"
},
"role": "<role>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Adathalmaz tulajdonságai
Az adathalmazok meghatározásához elérhető szakaszok és tulajdonságok teljes listáját az Adathalmazok című cikkben találja.
A Snowflake-adatkészlet esetében az alábbi tulajdonságok támogatottak.
Tulajdonság | Leírás | Kötelező |
---|---|---|
típus | Az adathalmaz típustulajdonságának SnowflakeV2Table értékre kell állítania. | Igen |
schema | A séma neve. Vegye figyelembe, hogy a séma neve megkülönbözteti a kis- és nagybetűk nevét. | Nem a forráshoz, igen a fogadóhoz |
table | A tábla/nézet neve. Vegye figyelembe, hogy a tábla neve megkülönbözteti a kis- és nagybetűk nevét. | Nem a forráshoz, igen a fogadóhoz |
Példa:
{
"name": "SnowflakeV2Dataset",
"properties": {
"type": "SnowflakeV2Table",
"typeProperties": {
"schema": "<Schema name for your Snowflake database>",
"table": "<Table name for your Snowflake database>"
},
"schema": [ < physical schema, optional, retrievable during authoring > ],
"linkedServiceName": {
"referenceName": "<name of linked service>",
"type": "LinkedServiceReference"
}
}
}
Másolási tevékenység tulajdonságai
A tevékenységek meghatározásához elérhető szakaszok és tulajdonságok teljes listáját a Folyamatok című cikkben találja. Ez a szakasz a Snowflake-forrás és -fogadó által támogatott tulajdonságok listáját tartalmazza.
Hópehely mint forrás
A Snowflake-összekötő a Snowflake COPY into [location] parancsát használja a legjobb teljesítmény eléréséhez.
Ha a Snowflake COPY parancs natív módon támogatja a fogadó adattárát és formátumát, a Copy tevékenység használatával közvetlenül másolhatja a Snowflake-ből a fogadóba. További részletekért lásd a Snowflake közvetlen másolatát. Ellenkező esetben használja a Snowflake beépített szakaszos másolatát.
Ha a Snowflake-ből szeretne adatokat másolni, az alábbi tulajdonságok támogatottak a Copy tevékenység forrásszakaszban.
Tulajdonság | Leírás | Kötelező |
---|---|---|
típus | A Copy tevékenység forrás típustulajdonságának SnowflakeV2Source értékre kell állítania. | Igen |
Lekérdezés | Megadja azt az SQL-lekérdezést, amely adatokat olvas be a Snowflake-ből. Ha a séma, a tábla és az oszlopok neve kisbetűt tartalmaz, idézzük a lekérdezés objektumazonosítóját, például. select * from "schema"."myTable" A tárolt eljárás végrehajtása nem támogatott. |
Nem |
exportSettings | Speciális beállítások az adatok Snowflake-ból való lekéréséhez. A COPY által támogatott parancsokat konfigurálhatja a szolgáltatás által az utasítás meghívásakor átadott parancsra. | Igen |
A következő alatt exportSettings : |
||
típus | Az exportálási parancs típusa SnowflakeExportCopyCommand értékre állítva. | Igen |
storageIntegration | Adja meg a Snowflake-ben létrehozott tárolási integráció nevét. A tárolási integráció használatának előfeltételeiről a Snowflake-tárolóintegráció konfigurálásával kapcsolatban olvashat. | Nem |
additionalCopyOptions | További másolási lehetőségek, kulcs-érték párok szótáraként. Példák: MAX_FILE_SIZE, FELÜLÍRÁS. További információ: Snowflake Copy Options. | Nem |
additionalFormatOptions | A COPY parancshoz kulcs-érték párok szótáraként megadott további fájlformátum-beállítások. Példák: DATE_FORMAT, TIME_FORMAT, TIMESTAMP_FORMAT, NULL_IF. További információ: Snowflake Format Type Options. Ha NULL_IF használ, a Snowflake NULL értéke a megadott értékre lesz konvertálva (amelyet egyszeresen kell idézni), amikor az előkészítési tárolóban lévő elválasztott szövegfájlba ír. Ez a megadott érték NULL értékként lesz kezelve, amikor az előkészítési fájlból a fogadó tárolóba olvas. Az alapértelmezett érték 'NULL' . |
Nem |
Feljegyzés
Győződjön meg arról, hogy rendelkezik engedéllyel a következő parancs végrehajtásához, és hozzáfér a séma INFORMATION_SCHEMA és a TÁBLA OSZLOPAI parancshoz.
COPY INTO <location>
Közvetlen másolat a Snowflake-ből
Ha a fogadó adattára és formátuma megfelel az ebben a szakaszban ismertetett feltételeknek, a Copy tevékenység használatával közvetlenül másolhatja a Snowflake-ből a fogadóba. A szolgáltatás ellenőrzi a beállításokat, és nem futtatja a Copy tevékenység, ha a következő feltételek nem teljesülnek:
Ha a forrásban adja meg a következőt
storageIntegration
:A fogadó adattár az Azure Blob Storage, amelyet a Snowflake külső szakaszában említett. Az adatok másolása előtt az alábbi lépéseket kell elvégeznie:
Hozzon létre egy Azure Blob Storage társított szolgáltatást a fogadó Azure Blob Storage-hoz bármilyen támogatott hitelesítési típussal.
Adjon legalább Storage Blob Data Contributor szerepkört a Snowflake szolgáltatásnévnek a fogadó Azure Blob Storage hozzáférés-vezérlésében (IAM).
Ha nem adja meg
storageIntegration
a forrást:A fogadóhoz társított szolgáltatás az Azure Blob Storage megosztott hozzáférésű jogosultságkód-hitelesítéssel. Ha az alábbi támogatott formátumban szeretne közvetlenül adatokat másolni az Azure Data Lake Storage Gen2-be, létrehozhat egy Azure Blob Storage társított szolgáltatást SAS-hitelesítéssel az Azure Data Lake Storage Gen2-fiókján, hogy elkerülje a Snowflake-ből származó szakaszos másolást.
A fogadó adatformátuma parquet, tagolt szöveg vagy JSON, az alábbi konfigurációkkal:
- Parquet formátum esetén a tömörítési kodek Nincs, Snappy vagy Lzo.
- Tagolt szövegformátum esetén:
-
rowDelimiter
\ r\n, vagy bármely karakter. -
compression
nem lehet tömörítés, gzip, bzip2 vagy deflátum. -
encodingName
alapértelmezettként marad, vagy utf-8 értékre van állítva. -
quoteChar
dupla idézőjel, egy idézőjel vagy üres sztring (nincs idézőjel karakter).
-
- JSON-formátum esetén a közvetlen másolás csak azt az esetet támogatja, hogy a Snowflake-tábla vagy lekérdezés eredménye csak egyetlen oszlopból áll, és az oszlop adattípusa VARIANT, OBJECT vagy ARRAY.
-
compression
nem lehet tömörítés, gzip, bzip2 vagy deflátum. -
encodingName
alapértelmezettként marad, vagy utf-8 értékre van állítva. -
filePattern
a másolási tevékenység fogadója alapértelmezés szerint marad, vagy a setOfObjects értékre van állítva.
-
A másolási tevékenység forrásában
additionalColumns
nincs megadva.Nincs megadva oszlopleképezés.
Példa:
"activities":[
{
"name": "CopyFromSnowflake",
"type": "Copy",
"inputs": [
{
"referenceName": "<Snowflake input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SnowflakeV2Source",
"query": "SELECT * FROM MYTABLE",
"exportSettings": {
"type": "SnowflakeExportCopyCommand",
"additionalCopyOptions": {
"MAX_FILE_SIZE": "64000000",
"OVERWRITE": true
},
"additionalFormatOptions": {
"DATE_FORMAT": "'MM/DD/YYYY'"
},
"storageIntegration": "< Snowflake storage integration name >"
}
},
"sink": {
"type": "<sink type>"
}
}
}
]
Szakaszos másolat a Snowflake-ből
Ha a fogadó adattára vagy formátuma natív módon nem kompatibilis a Snowflake COPY paranccsal, ahogyan azt az előző szakaszban említettük, engedélyezze a beépített szakaszos példányt egy köztes Azure Blob Storage-példány használatával. A szakaszos másolási funkció jobb átviteli sebességet is biztosít. A szolgáltatás adatokat exportál a Snowflake-ből az átmeneti tárolóba, majd átmásolja az adatokat a fogadóba, és végül megtisztítja az ideiglenes adatokat az átmeneti tárolóból. Az adatok előkészítéssel történő másolásával kapcsolatos részletekért tekintse meg a szakaszos másolást .
A funkció használatához hozzon létre egy Azure Blob Storage társított szolgáltatást , amely köztes előkészítésként hivatkozik az Azure Storage-fiókra. Ezután adja meg a enableStaging
Copy tevékenység a tulajdonságokat és stagingSettings
a tulajdonságokat.
Ha a forrásban adja meg
storageIntegration
, az átmeneti Azure Blob Storage-nak kell lennie a Snowflake külső szakaszában hivatkozottnak. Győződjön meg arról, hogy bármilyen támogatott hitelesítéssel létrehoz egy Azure Blob Storage társított szolgáltatást, és legalább Storage Blob Data Contributor szerepkört biztosít a Snowflake szolgáltatásnévnek az átmeneti Azure Blob Storage-hozzáférés-vezérlésben (IAM).Ha nem adja meg
storageIntegration
a forrást, az átmeneti Azure Blob Storage társított szolgáltatásnak közös hozzáférésű jogosultságkód-hitelesítést kell használnia a Snowflake COPY parancsnak megfelelően. Győződjön meg arról, hogy megfelelő hozzáférési engedélyt ad a Snowflake-nek az átmeneti Azure Blob Storage-ban. Erről a cikkből tudhat meg többet.
Példa:
"activities":[
{
"name": "CopyFromSnowflake",
"type": "Copy",
"inputs": [
{
"referenceName": "<Snowflake input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SnowflakeV2Source",
"query": "SELECT * FROM MyTable",
"exportSettings": {
"type": "SnowflakeExportCopyCommand",
"storageIntegration": "< Snowflake storage integration name >"
}
},
"sink": {
"type": "<sink type>"
},
"enableStaging": true,
"stagingSettings": {
"linkedServiceName": {
"referenceName": "MyStagingBlob",
"type": "LinkedServiceReference"
},
"path": "mystagingpath"
}
}
}
]
Ha a Snowflake-ből végez szakaszos másolatot, elengedhetetlen, hogy a fogadó másolási viselkedését a fájlok egyesítése érdekében állítsa be. Ez a beállítás biztosítja, hogy az összes particionált fájl megfelelően legyen kezelve és egyesítve, megakadályozva ezzel azt a problémát, amely miatt csak az utolsó particionált fájl másolódik.
Példakonfiguráció
{
"type": "Copy",
"source": {
"type": "SnowflakeSource",
"query": "SELECT * FROM my_table"
},
"sink": {
"type": "AzureBlobStorage",
"copyBehavior": "MergeFiles"
}
}
Feljegyzés
Ha nem állítja be a fogadó másolási viselkedését fájlok egyesítése gombra, az csak az utolsó particionált fájlt másolhatja.
Hópehely fogadóként
A Snowflake-összekötő a Snowflake COPY into [table] parancsát használja a legjobb teljesítmény eléréséhez. Támogatja az adatok írását a Snowflake-be az Azure-ban.
Ha a Snowflake COPY parancs natív módon támogatja a forrásadattárat és a formátumot, a Copy tevékenység közvetlenül másolhatja a forrásból a Snowflake-be. További részletekért lásd : A Snowflake közvetlen másolása. Ellenkező esetben használjon beépített szakaszos másolatot a Snowflake-hez.
Ha adatokat szeretne átmásolni a Snowflake-be, az alábbi tulajdonságok támogatottak a Copy tevékenység fogadó szakaszban.
Tulajdonság | Leírás | Kötelező |
---|---|---|
típus | A Copy tevékenység fogadó típustulajdonsága SnowflakeV2Sink értékre állítva. | Igen |
preCopyScript | Adjon meg egy SQL-lekérdezést a Copy tevékenység futtatásához, mielőtt adatokat írna a Snowflake-be minden futtatás során. Ezzel a tulajdonságkal törölheti az előre betöltött adatokat. | Nem |
importSettings | Speciális beállítások az adatok Snowflake-be való írásához. A COPY által támogatott parancsokat konfigurálhatja a szolgáltatás által az utasítás meghívásakor átadott parancsra. | Igen |
A következő alatt importSettings : |
||
típus | Az importálási parancs típusa SnowflakeImportCopyCommand értékre állítva. | Igen |
storageIntegration | Adja meg a Snowflake-ben létrehozott tárolási integráció nevét. A tárolási integráció használatának előfeltételeiről a Snowflake-tárolóintegráció konfigurálásával kapcsolatban olvashat. | Nem |
additionalCopyOptions | További másolási lehetőségek, kulcs-érték párok szótáraként. Példák: ON_ERROR, FORCE, LOAD_UNCERTAIN_FILES. További információ: Snowflake Copy Options. | Nem |
additionalFormatOptions | További fájlformátum-beállítások a COPY parancshoz, kulcs-érték párok szótáraként. Példák: DATE_FORMAT, TIME_FORMAT, TIMESTAMP_FORMAT. További információ: Snowflake Format Type Options. | Nem |
Feljegyzés
Győződjön meg arról, hogy rendelkezik engedéllyel a következő parancs végrehajtásához, és hozzáfér a séma INFORMATION_SCHEMA és a TÁBLA OSZLOPAI parancshoz.
SELECT CURRENT_REGION()
COPY INTO <table>
SHOW REGIONS
CREATE OR REPLACE STAGE
DROP STAGE
Közvetlen másolat a Snowflake-be
Ha a forrásadattár és a formátum megfelel az ebben a szakaszban leírt feltételeknek, a Copy tevékenység használatával közvetlenül másolhat a forrásból a Snowflake-be. A szolgáltatás ellenőrzi a beállításokat, és nem futtatja a Copy tevékenység, ha a következő feltételek nem teljesülnek:
Amikor megadja
storageIntegration
a fogadóban:A forrásadattár a Snowflake külső szakaszában hivatkozott Azure Blob Storage. Az adatok másolása előtt az alábbi lépéseket kell elvégeznie:
Hozzon létre egy Azure Blob Storage társított szolgáltatást a forrás Azure Blob Storage-hoz bármilyen támogatott hitelesítési típussal.
Adjon legalább Storage Blob Data Reader szerepkört a Snowflake szolgáltatásnévnek a forrás Azure Blob Storage Hozzáférés-vezérlés (IAM) szolgáltatásban.
Ha nem adja meg
storageIntegration
a fogadóban:A forráshoz társított szolgáltatás az Azure Blob Storage megosztott hozzáférésű jogosultságkód-hitelesítéssel. Ha a következő támogatott formátumban szeretne közvetlenül adatokat másolni az Azure Data Lake Storage Gen2-ből, létrehozhat egy Azure Blob Storage társított szolgáltatást SAS-hitelesítéssel az Azure Data Lake Storage Gen2-fiókján, hogy elkerülje a Snowflake-be történő szakaszos másolást.
A forrásadat formátuma parquet, tagolt szöveg vagy JSON az alábbi konfigurációkkal:
Parquet formátum esetén a tömörítési kodek Nincs vagy Snappy.
Tagolt szövegformátum esetén:
-
rowDelimiter
\ r\n, vagy bármely karakter. Ha a sorelválasztó nem "\r\n",firstRowAsHeader
akkor hamisnak kell lennie, ésskipLineCount
nincs megadva. -
compression
nem lehet tömörítés, gzip, bzip2 vagy deflátum. -
encodingName
alapértelmezettként marad, vagy "UTF-8", "UTF-16", "UTF-16BE" értékre van állítva, "UTF-32", "UTF-32BE", "BIG5", "EUC-JP", "EUC-KR", "GB18030", "ISO-2022-JP", "ISO-2022-KR", "ISO-8859-1", "ISO-8859-2", "ISO-8859-5", "ISO-8859-6", "ISO-8859-7", "ISO-8859-8", "ISO-8859-9", "WINDOWS-1250", "WINDOWS-1251", "WINDOWS-1252", "WINDOWS-1253", "WINDOWS-1254", "WINDOWS-1255". -
quoteChar
dupla idézőjel, egy idézőjel vagy üres sztring (nincs idézőjel karakter).
-
JSON-formátum esetén a közvetlen másolás csak azt az esetet támogatja, hogy a fogadó Snowflake tábla csak egyetlen oszlopot tartalmaz, és az oszlop adattípusa VARIANT, OBJECT vagy ARRAY.
-
compression
nem lehet tömörítés, gzip, bzip2 vagy deflátum. -
encodingName
alapértelmezettként marad, vagy utf-8 értékre van állítva. - Nincs megadva oszlopleképezés.
-
A Copy tevékenység forrásban:
-
additionalColumns
nincs megadva. - Ha a forrás egy mappa,
recursive
akkor igaz értékre van állítva. -
prefix
,modifiedDateTimeStart
,modifiedDateTimeEnd
ésenablePartitionDiscovery
nincs megadva.
-
Példa:
"activities":[
{
"name": "CopyToSnowflake",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Snowflake output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "SnowflakeV2Sink",
"importSettings": {
"type": "SnowflakeImportCopyCommand",
"copyOptions": {
"FORCE": "TRUE",
"ON_ERROR": "SKIP_FILE"
},
"fileFormatOptions": {
"DATE_FORMAT": "YYYY-MM-DD"
},
"storageIntegration": "< Snowflake storage integration name >"
}
}
}
}
]
Szakaszos másolat a Snowflake-be
Ha a forrásadattár vagy -formátum natív módon nem kompatibilis a Snowflake COPY paranccsal, ahogyan azt az előző szakaszban említettük, engedélyezze a beépített szakaszos példányt egy köztes Azure Blob Storage-példány használatával. A szakaszos másolási funkció jobb átviteli sebességet is biztosít. A szolgáltatás automatikusan átalakítja az adatokat, hogy megfeleljenek a Snowflake adatformátum-követelményeinek. Ezután meghívja a COPY parancsot az adatok Snowflake-be való betöltéséhez. Végül törli az ideiglenes adatokat a blobtárolóból. Az adatok átmeneti másolással történő másolásával kapcsolatos részletekért tekintse meg a szakaszos másolást .
A funkció használatához hozzon létre egy Azure Blob Storage társított szolgáltatást , amely köztes előkészítésként hivatkozik az Azure Storage-fiókra. Ezután adja meg a enableStaging
Copy tevékenység a tulajdonságokat és stagingSettings
a tulajdonságokat.
Amikor
storageIntegration
megadja a fogadóban, az átmeneti Azure Blob Storage-nak kell lennie a Snowflake külső szakaszában hivatkozottnak. Győződjön meg arról, hogy bármilyen támogatott hitelesítéssel létrehoz egy Azure Blob Storage társított szolgáltatást, és legalább Storage Blob Data Reader szerepkört biztosít a Snowflake szolgáltatásnévnek az átmeneti Azure Blob Storage-hozzáférés-vezérlésben (IAM).Ha nem adja meg
storageIntegration
a fogadóban, az átmeneti Azure Blob Storage társított szolgáltatásnak a Snowflake COPY parancs által megkövetelt közös hozzáférésű jogosultságkód-hitelesítést kell használnia.
Példa:
"activities":[
{
"name": "CopyToSnowflake",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Snowflake output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "SnowflakeV2Sink",
"importSettings": {
"type": "SnowflakeImportCopyCommand",
"storageIntegration": "< Snowflake storage integration name >"
}
},
"enableStaging": true,
"stagingSettings": {
"linkedServiceName": {
"referenceName": "MyStagingBlob",
"type": "LinkedServiceReference"
},
"path": "mystagingpath"
}
}
}
]
Adatfolyam-tulajdonságok leképezése
A leképezési adatfolyam adatainak átalakításakor a Snowflake-ban olvashat és írhat táblákba. További információkért tekintse meg a forrásátalakítást és a fogadóátalakítást a leképezési adatfolyamokban. Választhat, hogy a Snowflake-adatkészletet vagy egy beágyazott adatkészletet használ forrás- és fogadótípusként.
Forrásátalakítás
Az alábbi táblázat a Snowflake-forrás által támogatott tulajdonságokat sorolja fel. Ezeket a tulajdonságokat a Forrás beállításai lapon szerkesztheti. Az összekötő a Snowflake belső adatátvitelét használja.
Név | Leírás | Kötelező | Megengedett értékek | Adatfolyam-szkript tulajdonság |
---|---|---|---|---|
Tábla | Ha bemenetként a Táblázat lehetőséget választja, az adatfolyam beolvassa az összes adatot a Snowflake-adathalmazban megadott táblából vagy a forrásbeállításokból beágyazott adathalmaz használatakor. | Nem | Sztring |
(csak beágyazott adathalmaz esetén) tableName schemaName |
Lekérdezés | Ha bemenetként a Lekérdezés lehetőséget választja, adjon meg egy lekérdezést, amely adatokat szeretne lekérni a Snowflake-ből. Ez a beállítás felülírja az adathalmazban kiválasztott táblákat. Ha a séma, a tábla és az oszlopok neve kisbetűt tartalmaz, idézzük a lekérdezés objektumazonosítóját, például. select * from "schema"."myTable" |
Nem | Sztring | Lekérdezés |
Növekményes kivonat engedélyezése (előzetes verzió) | Ezzel a beállítással az ADF-nek csak azokat a sorokat kell feldolgoznia, amelyek a folyamat legutóbbi végrehajtása óta megváltoztak. | Nem | Logikai | enableCdc |
Növekményes oszlop | A növekményes kinyerési funkció használatakor ki kell választania azt a dátum/idő/numerikus oszlopot, amelyet vízjelként szeretne használni a forrástáblában. | Nem | Sztring | waterMarkColumn |
A Snowflake változáskövetésének engedélyezése (előzetes verzió) | Ez a beállítás lehetővé teszi az ADF számára, hogy a Snowflake változásadat-rögzítési technológiával csak a változásadatokat dolgozza fel az előző folyamat végrehajtása óta. Ez a beállítás automatikusan betölti a deltaadatokat sorbeszúrási, frissítési és törlési műveletekkel anélkül, hogy növekményes oszlopot kellene igényelnie. | Nem | Logikai | enableNativeCdc |
Nettó változások | Ha hópehely változáskövetést használ, ezzel a beállítással leállíthatja a módosított sorokat vagy a teljes módosításokat. A deduplikált módosított sorok csak az adott időpont óta módosult sorok legújabb verzióit jelenítik meg, a teljes körű módosítások pedig az egyes módosított sorok összes verzióját jelenítik meg, beleértve a törölt vagy frissített sorokat is. Ha például frissít egy sort, a teljes módosításokban megjelenik egy törlési és egy beszúrási verzió, de csak a deduplikált sorokban lévő beszúrási verzió. A használati esettől függően kiválaszthatja az igényeinek megfelelő lehetőséget. Az alapértelmezett beállítás hamis, ami teljes módosításokat jelent. | Nem | Logikai | netChanges |
Rendszeroszlopok belefoglalása | Ha hópehely változáskövetést használ, a systemColumns beállítással szabályozhatja, hogy a Snowflake által biztosított metaadatfolyam-oszlopok szerepelnek-e a változáskövetési kimenetben, vagy kizárják-e azokat. A systemColumns alapértelmezés szerint igaz értékre van állítva, ami azt jelenti, hogy a metaadat-adatfolyam oszlopai szerepelnek benne. Ha ki szeretné zárni őket, a systemColumns értéke hamis lehet. | Nem | Logikai | systemColumns |
Olvasás indítása az elejétől | Ha ezt a beállítást növekményes kinyeréssel és változáskövetéssel állítja be, az ADF arra utasítja az ADF-t, hogy olvassa be az összes sort egy folyamat első végrehajtásakor, és be van kapcsolva a növekményes kivonat. | Nem | Logikai | skipInitialLoad |
Példák a Snowflake forrásszkriptjeire
Ha a Snowflake-adatkészletet használja forrástípusként, a társított adatfolyam-szkript a következő:
source(allowSchemaDrift: true,
validateSchema: false,
query: 'select * from MYTABLE',
format: 'query') ~> SnowflakeSource
Beágyazott adatkészlet használata esetén a társított adatfolyam-szkript a következő:
source(allowSchemaDrift: true,
validateSchema: false,
format: 'query',
query: 'select * from MYTABLE',
store: 'snowflake') ~> SnowflakeSource
Natív változáskövetés
Az Azure Data Factory mostantól támogatja a Snowflake egyik natív funkcióját, a változáskövetést, amely naplók formájában tartalmazza a változások nyomon követését. A hópehely ezen funkciója lehetővé teszi az adatok időbeli változásainak nyomon követését, ami hasznossá teszi az adatok növekményes betöltését és naplózását. A funkció használatához, amikor engedélyezi a Változás adatrögzítést, és kiválasztja a Snowflake Változáskövetést, létrehozunk egy Stream-objektumot a forrástáblához, amely lehetővé teszi a változáskövetést a forrás hópehelytáblán. Ezt követően a lekérdezésBEN a CHANGES záradékot használjuk, hogy csak az új vagy frissített adatokat kérje le a forrástáblából. Azt is javasoljuk, hogy ütemezze a folyamatokat, hogy a módosítások a snowflake forrástáblához beállított adatmegőrzési idő alatt legyenek felhasználva, máskülönben a felhasználó inkonzisztens viselkedést tapasztalhat a rögzített módosításokban.
Fogadó átalakítása
Az alábbi táblázat a Snowflake mosogató által támogatott tulajdonságokat sorolja fel. Ezeket a tulajdonságokat a Beállítások lapon szerkesztheti. Beágyazott adatkészlet használata esetén további beállítások jelennek meg, amelyek megegyeznek az adathalmaz tulajdonságainak szakaszában leírt tulajdonságokkal. Az összekötő a Snowflake belső adatátvitelét használja.
Név | Leírás | Kötelező | Megengedett értékek | Adatfolyam-szkript tulajdonság |
---|---|---|---|---|
Frissítési módszer | Adja meg, hogy milyen műveletek engedélyezettek a Snowflake-célhelyen. A sorok frissítéséhez, frissítéséhez vagy törléséhez a sorok címkézéséhez alter sorátalakítás szükséges. |
Igen |
true vagy false |
törölhető beszúrható frissíthető upsertable |
Kulcsoszlopok | Frissítések, upserts és deletes esetén egy kulcsoszlopot vagy oszlopot kell beállítani annak meghatározásához, hogy melyik sort kell módosítani. | Nem | Tömb | keys |
Táblaművelet | Meghatározza, hogy az írás előtt újra létre kell-e hozni vagy eltávolítani az összes sort a céltáblából. - Nincs: A rendszer nem hajt végre műveletet a táblán. - Újra: A tábla elvetve és újra létrehozva lesz. Új tábla dinamikus létrehozása esetén kötelező. - Csonkolási: A céltábla összes sora el lesz távolítva. |
Nem |
true vagy false |
újra előállít megcsonkít |
Snowflake fogadó szkript példák
Ha a Snowflake-adatkészletet fogadótípusként használja, a társított adatfolyam-szkript a következő:
IncomingStream sink(allowSchemaDrift: true,
validateSchema: false,
deletable:true,
insertable:true,
updateable:true,
upsertable:false,
keys:['movieId'],
format: 'table',
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> SnowflakeSink
Beágyazott adatkészlet használata esetén a társított adatfolyam-szkript a következő:
IncomingStream sink(allowSchemaDrift: true,
validateSchema: false,
format: 'table',
tableName: 'table',
schemaName: 'schema',
deletable: true,
insertable: true,
updateable: true,
upsertable: false,
store: 'snowflake',
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> SnowflakeSink
Lekérdezésleküldés optimalizálása
Ha a folyamat naplózási szintjét Nincs értékre állítja, kizárjuk a köztes átalakítási metrikák átvitelét, megakadályozva a Spark-optimalizálás lehetséges akadályait, és lehetővé tesszük a Snowflake által biztosított lekérdezésleküldési optimalizálást. Ez a leküldéses optimalizálás jelentős teljesítménybeli fejlesztéseket tesz lehetővé a nagyméretű, nagy adatkészletekkel rendelkező Snowflake-táblák esetében.
Feljegyzés
A Snowflake-ben nem támogatjuk az ideiglenes táblákat, mivel azok helyiek a munkamenetben vagy az őket létrehozó felhasználónál, így elérhetetlenné teszik őket más munkamenetekhez, és hajlamosak arra, hogy a Snowflake normál táblázatként felülírja őket. Bár a Snowflake alternatív megoldásként átmeneti táblákat kínál, amelyek globálisan elérhetők, manuális törlést igényelnek, ellentétben a Temp-táblák használatának elsődleges célkitűzésével, amely a forrássémában végzett törlési műveletek elkerülése.
Keresési tevékenység tulajdonságai
A tulajdonságokról további információt a Keresési tevékenység című témakörben talál.
A Snowflake-összekötő frissítése
A Snowflake-összekötő frissítéséhez elvégezheti az egymás melletti vagy a helyszíni frissítést.
Párhuzamos frissítés
Az egymás melletti frissítés végrehajtásához hajtsa végre a következő lépéseket:
- Hozzon létre egy új Snowflake társított szolgáltatást, és konfigurálja a V2 társított szolgáltatás tulajdonságaira hivatkozva.
- Hozzon létre egy adatkészletet az újonnan létrehozott Snowflake társított szolgáltatás alapján.
- Cserélje le az új társított szolgáltatást és adatkészletet a V1 objektumokat célként kitűző folyamatok meglévőire.
Frissítés helyben
A helyszíni frissítés végrehajtásához szerkesztenie kell a meglévő társított szolgáltatás hasznos adatait, és frissítenie kell az adatkészletet az új társított szolgáltatás használatához.
Frissítse a típust a Snowflake-ről a SnowflakeV2 típusra.
Módosítsa a társított szolgáltatás hasznos adatait a V1 formátumából a V2 formátumra. A fenti típus módosítása után a felhasználói felületről kitöltheti az egyes mezőket, vagy közvetlenül a JSON-szerkesztőn keresztül frissítheti a hasznos adatokat. A támogatott kapcsolattulajdonságokért tekintse meg a jelen cikk Csatolt szolgáltatás tulajdonságai szakaszát. Az alábbi példák a V1 és v2 Snowflake társított szolgáltatások hasznos adatainak különbségeit mutatják be:
Snowflake V1 társított szolgáltatás JSON hasznos adatai:
{ "name": "Snowflake1", "type": "Microsoft.DataFactory/factories/linkedservices", "properties": { "annotations": [], "type": "Snowflake", "typeProperties": { "authenticationType": "Basic", "connectionString": "jdbc:snowflake://<fake_account>.snowflakecomputing.com/?user=FAKE_USER&db=FAKE_DB&warehouse=FAKE_DW&schema=PUBLIC", "encryptedCredential": "<your_encrypted_credential_value>" }, "connectVia": { "referenceName": "AzureIntegrationRuntime", "type": "IntegrationRuntimeReference" } } }
Snowflake V2 társított szolgáltatás JSON hasznos adatai:
{ "name": "Snowflake2", "type": "Microsoft.DataFactory/factories/linkedservices", "properties": { "parameters": { "schema": { "type": "string", "defaultValue": "PUBLIC" } }, "annotations": [], "type": "SnowflakeV2", "typeProperties": { "authenticationType": "Basic", "accountIdentifier": "<FAKE_Account>", "user": "FAKE_USER", "database": "FAKE_DB", "warehouse": "FAKE_DW", "encryptedCredential": "<placeholder>" }, "connectVia": { "referenceName": "AutoResolveIntegrationRuntime", "type": "IntegrationRuntimeReference" } } }
Frissítse az adatkészletet az új társított szolgáltatás használatára. Létrehozhat egy új adatkészletet az újonnan létrehozott társított szolgáltatás alapján, vagy frissítheti egy meglévő adathalmaz típustulajdonságát a SnowflakeTable-ról a SnowflakeV2Table-ra.
Különbségek a Snowflake V2 és a V1 között
A Snowflake V2-összekötő új funkciókat kínál, és kompatibilis a Snowflake V1-összekötő legtöbb funkciójával. Az alábbi táblázat a V2 és az 1. virtuális gép közötti funkcióbeli különbségeket mutatja be.
Snowflake V2 | Hópehely V1 |
---|---|
Alapszintű és kulcspáros hitelesítés támogatása. | Alapszintű hitelesítés támogatása. |
A szkriptparaméterek jelenleg nem támogatottak a szkripttevékenységekben. Alternatív megoldásként használja a dinamikus kifejezéseket a szkriptparaméterekhez. További információ: Kifejezések és függvények az Azure Data Factoryben és az Azure Synapse Analyticsben. | Szkriptparaméterek támogatása a szkripttevékenységben. |
A BigDecimal támogatása a keresési tevékenységben. A Snowflake-ben definiált SZÁM típus sztringként jelenik meg a Keresési tevékenységben. Ha numerikus típusba szeretné befedni, használhatja a folyamatparamétert int függvénnyel vagy lebegőpontos függvénnyel. Például: int(activity('lookup').output.firstRow.VALUE) float(activity('lookup').output.firstRow.VALUE) |
A BigDecimal nem támogatott a Keresési tevékenységben. |
A accountIdentifier rendszer a , warehouse , database schema és role tulajdonságok használatával hoz létre kapcsolatot. |
A connectionstring tulajdonság egy kapcsolat létrehozására szolgál. |
A Snowflake időbélyeg adattípusa DateTimeOffset adattípusként van beolvasva a Keresési és szkripttevékenységben. | A Snowflake időbélyeg adattípusa DateTime adattípusként van beolvasva a Keresési és szkripttevékenységben. Ha az összekötő frissítése után is paraméterként kell használnia a Datetime értéket a folyamatban, a DateTimeOffset típust a formatDateTime függvény (ajánlott) vagy az összefűző függvény használatával konvertálhatja DateTime típussá. Például: formatDateTime(activity('lookup').output.firstRow.DATETIMETYPE) , concat(substring(activity('lookup').output.firstRow.DATETIMETYPE, 0, 19), 'Z') |
Kapcsolódó tartalom
A Copy tevékenység által forrásként és fogadóként támogatott adattárak listájáért tekintse meg a támogatott adattárakat és formátumokat.