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


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:

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.

  1. 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:

  2. Keresse meg a Snowflake-t, és válassza a Snowflake-összekötőt.

    Képernyőkép a Snowflake-összekötőről.

  3. Konfigurálja a szolgáltatás részleteit, tesztelje a kapcsolatot, és hozza létre az új társított szolgáltatást.

    Képernyőkép a Snowflake társított szolgáltatáskonfigurációjáról.

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:

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

    2. 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.
      • compressionnem lehet tömörítés, gzip, bzip2 vagy deflátum.
      • encodingNamealapé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.
      • compressionnem lehet tömörítés, gzip, bzip2 vagy deflátum.
      • encodingNamealapértelmezettként marad, vagy utf-8 értékre van állítva.
      • filePatterna 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:

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

    2. 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, és skipLineCount nincs megadva.
      • compressionnem 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.

      • compressionnem lehet tömörítés, gzip, bzip2 vagy deflátum.
      • encodingNamealapé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és enablePartitionDiscovery 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:

  1. 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.
  2. Hozzon létre egy adatkészletet az újonnan létrehozott Snowflake társított szolgáltatás alapján.
  3. 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.

  1. Frissítse a típust a Snowflake-ről a SnowflakeV2 típusra.

  2. 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"
             }
         }
     }
    
  3. 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 accountIdentifierrendszer a , warehouse, databaseschema é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')

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.