Kopírování a transformace dat ve Snowflake V2 pomocí Azure Data Factory nebo Azure Synapse Analytics

VZTAHUJE SE NA: Azure Data Factory Azure Synapse Analytics

Tip

Data Factory v Microsoft Fabric je nová generace Azure Data Factory s jednodušší architekturou, integrovanou AI a novými funkcemi. Pokud s integrací dat začínáte, začněte Fabric Data Factory. Stávající úlohy ADF lze upgradovat na Fabric pro přístup k novým funkcím v oblastech datové vědy, analýz v reálném čase a vytváření sestav.

Tento článek popisuje, jak používat aktivita Copy v kanálech Azure Data Factory a Azure Synapse ke kopírování dat z a do Snowflake a použití Tok dat k transformaci dat ve Snowflake. Další informace najdete v úvodním článku o Data Factory nebo Azure Synapse Analytics.

Note

Tento konektor je také k dispozici ve službě Data Factory v Microsoft Fabric. Informace o konfiguraci a funkcích specifických pro Fabric najdete v dokumentaci ke konektoru Fabric Snowflake.

Important

Konektor Snowflake V1 je ve fázi odstranění. Doporučujeme upgradovat konektor Snowflake z V1 na V2.

Podporované možnosti

Tento konektor Snowflake je podporovaný pro následující funkce:

Podporované možnosti IR
aktivita Copy (zdroj/jímka) (1) (2)
Mapování toku dat (zdroj/úložiště)
Aktivita vyhledávání (1) (2)
Aktivita skriptu (použití verze 1.1 při použití parametru skriptu) (1) (2)

(1) Azure Integration Runtime (2) Lokálně hostované Integration Runtime

Pro aktivita Copy podporuje tento konektor Snowflake následující funkce:

  • Zkopírujte data ze Snowflake, která využívají příkaz Snowflake COPY into [umístění], abyste dosáhli co nejlepšího výkonu.
  • Zkopírujte data do Snowflake pomocí příkazu COPY into [table] od Snowflake, aby bylo dosaženo nejlepšího výkonu. Podporuje Snowflake na Azure.
  • Pokud se proxy server vyžaduje pro připojení ke Snowflake z místního Integration Runtime, musíte nakonfigurovat proměnné prostředí pro HTTP_PROXY a HTTPS_PROXY na hostiteli Integration Runtime.

Prerequisites

Pokud se vaše úložiště dat nachází uvnitř místní sítě, Azure virtuální sítě, nebo Amazon Virtual Private Cloud, musíte pro připojení nakonfigurovat self-hosted Integration Runtime. Nezapomeňte přidat IP adresy, které místní prostředí Integration Runtime používá, do seznamu povolených.

Pokud je vaše úložiště dat spravovanou cloudovou datovou službou, můžete použít Azure Integration Runtime. Pokud je přístup omezený na IP adresy schválené v pravidlech brány firewall, můžete do seznamu povolených přidat ip adresy Azure Integration Runtime.

Účet Snowflake, který se používá pro zdroj nebo cíl, by měl mít potřebný USAGE přístup k databázi a přístup pro čtení a zápis ve schématu a tabulkách/zobrazeních pod ním. Kromě toho by měl mít CREATE STAGE také na schématu, aby bylo možné vytvořit externí fázi s URI SAS.

Musí být nastaveny následující hodnoty vlastností účtu.

Property Description Required Default
REQUIRE_STORAGE_INTEGRATION_FOR_STAGE_CREATION Určuje, jestli se má objekt integrace úložiště vyžadovat jako přihlašovací údaje ke cloudu při vytváření pojmenované externí fáze (pomocí CREATE STAGE) pro přístup k umístění úložiště privátního cloudu. FALSE FALSE
REQUIRE_STORAGE_INTEGRATION_FOR_STAGE_OPERATION Určuje, jestli se má při načítání dat z úložiště nebo uvolňování dat do umístění privátního cloudu vyžadovat použití pojmenované externí fáze, která odkazuje na objekt integrace úložiště jako přihlašovací údaje cloudu. FALSE FALSE

Další informace o mechanismech zabezpečení sítě a možnostech podporovaných službou Data Factory najdete v tématu Strategie přístupu k datům.

Začínáme

K provedení aktivity kopírování pomocí datového kanálu můžete použít jeden z následujících nástrojů nebo sad SDK:

Vytvoření propojené služby do Snowflake pomocí uživatelského rozhraní

Pomocí následujícího postupu vytvořte propojenou službu s Snowflake v uživatelském rozhraní portálu Azure.

  1. Přejděte na kartu Spravovat v pracovním prostoru Azure Data Factory nebo Synapse a vyberte Propojené služby a potom klikněte na Nový:

  2. Vyhledejte Snowflake a vyberte konektor Snowflake.

    Snímek obrazovky s konektorem Snowflake

  3. Nakonfigurujte podrobnosti o službě, otestujte připojení a vytvořte novou propojenou službu.

    Snímek obrazovky s konfigurací propojené služby pro Snowflake

Podrobnosti konfigurace konektoru

Následující části obsahují podrobnosti o vlastnostech, které definují entity specifické pro konektor Snowflake.

Vlastnosti propojené služby

Pro propojenou službu Snowflake se podporují tyto obecné vlastnosti:

Property Description Required
typ Vlastnost typu musí být nastavena na SnowflakeV2. Yes
verze Zadaná verze. Pokud chcete využívat nejnovější vylepšení, doporučujeme upgradovat na nejnovější verzi. Ano pro verzi 1.1
accountIdentifier Název účtu spolu s jeho organizací. Například myorg-account123. Yes
databáze Výchozí databáze použitá pro relaci po připojení. Yes
warehouse Výchozí virtuální sklad použitý pro relaci po připojení. Yes
authenticationType Typ ověřování sloužící k připojení ke službě Snowflake. Povolené hodnoty jsou: Basic (Default) a KeyPair. Další vlastnosti a příklady najdete níže v odpovídajících částech. No
role Výchozí role zabezpečení použitá pro relaci po připojení. No
hostitel Název hostitele účtu Snowflake. Například: contoso.snowflakecomputing.com. .cn je rovněž podporován. No
connectVia Integration Runtime, které se používá k připojení k úložišti dat. Můžete použít prostředí Azure Integration Runtime nebo místní prostředí Integration Runtime (pokud je vaše úložiště dat umístěné v privátní síti). Pokud není zadaný, použije výchozí prostředí Azure Integration Runtime. No

Následující další vlastnosti připojení v propojené službě můžete nastavit v závislosti na vašem případu.

Property Description Required Výchozí hodnota
UseUtcTimestamps Zadejte false, aby se vrátil typ TIMESTAMP_LTZ a typ TIMESTAMP_TZ ve správném časovém pásmu a typ TIMESTAMP_NTZ bez informací o časovém pásmu. Určete hodnotu true tak, aby se všechny typy časových razítek Snowflake vrátily v UTC. No false
schéma Určuje schéma relace dotazu po připojení. No /

Tento konektor Snowflake podporuje následující typy ověřování. Podrobnosti najdete v odpovídajících částech.

Základní ověřování

Pokud chcete použít základní ověřování, kromě obecných vlastností popsaných v předchozí části zadejte následující vlastnosti:

Property Description Required
uživatel Přihlašovací jméno uživatele Snowflake. Yes
heslo Heslo pro uživatele Snowflake. Označte toto pole jako typ SecureString, abyste ho bezpečně uložili. Můžete také odložit tajný kód uložený v Azure Key Vault. Yes

Example:

{
    "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"
        }
    }
}

Heslo ve službě Azure Key Vault:

{
    "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"
        }
    }
}

Ověřování páru klíčů

Pokud chcete použít ověřování páru klíčů, musíte nakonfigurovat a vytvořit uživatele pro ověřování páru klíčů ve Snowflake s odkazem na ověřování páru klíčů a rotaci páru klíčů. Potom si poznamenejte privátní klíč a přístupové heslo (volitelné), které použijete k definování propojené služby.

Kromě obecných vlastností popsaných v předchozí části zadejte následující vlastnosti:

Property Description Required
uživatel Přihlašovací jméno uživatele Snowflake. Yes
privateKey Privátní klíč použitý pro ověřování páru klíčů.

Pokud chcete zajistit, aby byl privátní klíč platný při odeslání do Azure Data Factory, a vzhledem k tomu, že soubor privateKey obsahuje znaky nového řádku (\n), je nezbytné správně formátovat obsah privateKey v řetězcovém literálovém formátu. Tento proces zahrnuje explicitní přidání \n do každého nového řádku.
Yes
privateKeyPassphrase Heslo použité k dešifrování privátního klíče, pokud je šifrované. No

Example:

{
    "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"
        }
    }
}

Note

Pro mapování toků dat doporučujeme generovat nový privátní klíč RSA pomocí standardu PKCS#8 ve formátu PEM (soubor .p8).

Vlastnosti datové sady

Úplný seznam oddílů a vlastností dostupných pro definování datových sad najdete v článku Datové sady .

Pro datovou sadu Snowflake se podporují následující vlastnosti.

Property Description Required
typ Vlastnost typu datové sady musí být nastavena na SnowflakeV2Table. Yes
schéma Název schématu Všimněte si, že v názvu schématu se rozlišují malá a velká písmena. Ne pro zdroj, ano pro jímku
tabulka Název tabulky nebo zobrazení Všimněte si, že v názvu tabulky se rozlišují malá a velká písmena. Ne pro zdroj, ano pro jímku

Example:

{
    "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"
        }
    }
}

Vlastnosti kopírovací aktivity

Úplný seznam oddílů a vlastností dostupných pro definování aktivit najdete v článku Pipelines . Tato část obsahuje seznam vlastností podporovaných zdrojem a jímkou Snowflake.

Snowflake jako zdroj

Konektor Snowflake využívá příkaz Snowflake 'COPY into [umístění]' k optimalizaci výkonu.

Pokud je úložiště dat a formát jímky nativně podporováno příkazem Snowflake COPY, můžete pomocí aktivita Copy přímo kopírovat ze Snowflake do jímky. Podrobnosti najdete v tématu Přímá kopie ze Snowflake. Jinak použijte předdefinovanou fázovanou kopii ze Snowflake.

Pokud chcete kopírovat data ze Snowflake, podporují se v části aktivita Copy source následující vlastnosti.

Property Description Required
typ Vlastnost typu zdroje aktivita Copy musí být nastavená na SnowflakeV2Source. Yes
dotaz Určuje dotaz SQL pro čtení dat ze Snowflake. Pokud názvy schématu, tabulek a sloupců obsahují malá písmena, uvozujte identifikátor objektu v dotazu, například select * from "schema"."myTable".
Provádění uložených procedur není podporováno.
No
exportSettings Pokročilá nastavení pro načítání dat ze Snowflake. Můžete nakonfigurovat ty podporované příkazem COPY do příkazu, který služba projde při vyvolání příkazu. Yes
treatDecimalAsString Určete, že má být desetinný typ považován jako typ řetězce v aktivitě vyhledávání a skriptu. Výchozí hodnota je false.

Tato vlastnost je podporována pouze ve verzi 1.1.
No
V části exportSettings:
typ Typ příkazu exportu nastavený na SnowflakeExportCopyCommand. Yes
storageIntegration Zadejte název integrace úložiště, kterou jste vytvořili ve Snowflake. Požadavky na použití integrace úložiště najdete v tématu Konfigurace integrace úložiště Snowflake. No
additionalCopyOptions Další možnosti kopírování, které jsou k dispozici ve formě slovníku dvojic klíč-hodnota. Příklady: MAX_FILE_SIZE, OVERWRITE. Další informace naleznete v tématu Možnosti kopírování Snowflake. No
additionalFormatOptions Další možnosti formátu souboru, které jsou k dispozici pro příkaz COPY jako slovník párů klíč-hodnota. Příklady: DATE_FORMAT, TIME_FORMAT, TIMESTAMP_FORMAT, NULL_IF. Další informace najdete v tématu Možnosti typů formátu Snowflake.

Když použijete NULL_IF, je hodnota NULL ve Snowflake při zápisu do textového souboru s oddělovači v dočasném úložišti převedena na zadanou hodnotu (která musí být uzavřena v jednoduchých uvozovkách). Tato zadaná hodnota se při čtení z přípravného souboru do cílového úložiště považuje za HODNOTU NULL. Výchozí hodnota je 'NULL'.
No

Note

Ujistěte se, že máte oprávnění ke spuštění následujícího příkazu a přístup ke schématu INFORMATION_SCHEMA a tabulce COLUMNS.

  • COPY INTO <location>

Přímá kopie ze Snowflake

Pokud úložiště dat a formát jímky splňují kritéria popsaná v této části, můžete použít aktivita Copy k přímému kopírování ze Snowflake do jímky. Služba zkontroluje nastavení a selže aktivita Copy spustit, pokud nejsou splněna následující kritéria:

  • Při zadávání storageIntegration ve zdroji:

    Úložiště dat jímky je Azure Blob Storage, na které odkazujete v externí fázi Snowflake. Před kopírováním dat je potřeba provést následující kroky:

    1. Vytvořte propojenou službu Azure Blob Storage jako cílovou službu pro Azure Blob Storage s libovolnými podporovanými typy ověřování.

    2. Udělte služebnímu principálu Snowflake v cílovém úložišti Azure Blob Storage alespoň roli Storage Blob Data Contributor v části Access Control (IAM).

  • Pokud ve zdroji nezadáte storageIntegration :

    Cílová propojená služba sink je Azure Blob Storage s ověřováním pomocí sdíleného přístupového podpisu. Pokud chcete přímo kopírovat data do Azure Data Lake Storage Gen2 v následujícím podporovaném formátu, můžete vytvořit propojenou službu Azure Blob Storage s ověřováním SAS pro váš účet Azure Data Lake Storage Gen2, abyste se vyhnuli použití staged copy ze Snowflake.

  • Formát dat pro jímku je Parquet, text s oddělovači nebo JSON se následujícími konfiguracemi:

    • Pro formát Parquet je kodek komprese None, Snappy nebo Lzo.
    • Formát textu s oddělovači :
      • rowDelimiter je \r\nnebo libovolný jeden znak.
      • compression může být žádná komprese, gzip, bzip2 nebo deflate.
      • encodingName je ve výchozím nastavení nebo nastaven na utf-8.
      • quoteChar je dvojitá uvozovka, jednoduchá uvozovka nebo prázdný řetězec (bez znaku uvozovek).
    • U formátu JSON přímé kopírování podporuje pouze případ, kdy zdrojová tabulka Snowflake nebo výsledek dotazu má pouze jeden sloupec a datový typ tohoto sloupce je VARIANT, OBJECT nebo ARRAY.
      • compression může být žádná komprese, gzip, bzip2 nebo deflate.
      • encodingName je ve výchozím nastavení nebo nastaven na utf-8.
      • filePattern v jímce aktivity kopírování je ponechán jako výchozí nebo nastaven na setOfObjects.
  • V části zdroje aktivity kopírování additionalColumns není zadané.

  • Není zadáno mapování sloupců.

Example:

"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>"
            }
        }
    }
]

Fázovaná kopie ze Snowflake

Pokud cílové úložiště dat nebo formát není nativně kompatibilní s příkazem Snowflake COPY, jak je uvedeno v poslední části, povolte vestavěnou mezikopii pomocí dočasné instance Azure Blob storage. Funkce fázovaného kopírování také poskytuje lepší propustnost. Služba exportuje data ze Snowflake do přípravného úložiště, pak zkopíruje data do cílového úložiště a nakonec odstraní dočasná data z přípravného úložiště. Podrobnosti o kopírování dat pomocí fázování najdete v části Fázovaná kopie.

Pokud chcete tuto funkci použít, vytvořte propojenou službu Azure Blob Storage, která odkazuje na účet úložiště Azure jako dočasnou přípravu. Potom zadejte vlastnosti enableStaging a stagingSettings v aktivita Copy.

  • Když ve zdroji zadáte storageIntegration, měl by dočasný přípravný úložiště Azure Blob Storage být ten, který jste uvedli v "external stage" ve Snowflake. Ujistěte se, že pro ni vytvoříte propojenou službu Azure Blob Storage s jakýmkoli podporovaným ověřováním při použití prostředí Azure Integration Runtime nebo s anonymním klíčem účtu, sdíleným přístupovým podpisem nebo ověřováním instančního objektu při použití místního prostředí Integration Runtime. Kromě toho udělte roli alespoň Storage Blob Data Contributor službě principal Snowflake v přípravném úložišti Azure Blob Access Control (IAM).

  • Pokud ve zdroji nezadáte storageIntegration, musí propojená služba pracovního úložiště Azure Blob používat ověření sdíleným přístupovým podpisem, jak to vyžaduje příkaz Snowflake COPY. Ujistěte se, že v přípravném Azure Blob Storage udělíte správné oprávnění pro přístup ke Snowflake. Další informace o tom najdete v tomto článku.

Example:

"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"
            }
        }
    }
]

Při provádění fázované kopie ze Snowflake je důležité nastavit chování při kopírování jako sloučení souborů. Toto nastavení zajišťuje správné zpracování a sloučení všech dělených souborů, což brání problému, kdy se zkopíruje jenom poslední dělený soubor.

Příklad konfigurace

{
    "type": "Copy",
    "source": {
        "type": "SnowflakeSource",
        "query": "SELECT * FROM my_table"
    },
    "sink": {
        "type": "AzureBlobStorage",
        "copyBehavior": "MergeFiles"
    }
}

Note

Nepodaří-li se nastavit chování kopírování jímky na slučovací soubory, může být zkopírován pouze poslední dělený soubor.

Sněhová vločka jako jímka

Konektor Snowflake využívá příkaz Snowflake COPY do [table] k dosažení nejlepšího výkonu. Podporuje zápis dat do Snowflake na Azure.

Pokud je zdrojové úložiště dat a formát nativně podporováno příkazem Snowflake COPY, můžete použít aktivita Copy k přímému kopírování ze zdroje do Snowflake. Podrobnosti najdete v tématu Přímé kopírování do Snowflake. V opačném případě použijte integrovanou fázovanou kopii do Snowflake.

Pokud chcete kopírovat data do Snowflake, podporují se v části aktivita Copy sink následující vlastnosti.

Property Description Required
typ Vlastnost typu jímky aktivita Copy nastavená na hodnotu SnowflakeV2Sink. Yes
preCopyScript Zadejte dotaz SQL pro aktivita Copy, který se má spustit před zápisem dat do Snowflake v každém spuštění. Tato vlastnost slouží k vyčištění předem načtených dat. No
importSettings Upřesňující nastavení sloužící k zápisu dat do Snowflake. Můžete nakonfigurovat ty podporované příkazem COPY do příkazu, který služba projde při vyvolání příkazu. Yes
V části importSettings:
typ Typ příkazu import, který je nastavený na SnowflakeImportCopyCommand. Yes
storageIntegration Zadejte název integrace úložiště, kterou jste vytvořili ve Snowflake. Požadavky na použití integrace úložiště najdete v tématu Konfigurace integrace úložiště Snowflake. No
additionalCopyOptions Další možnosti kopírování, které jsou k dispozici ve formě slovníku dvojic klíč-hodnota. Příklady: ON_ERROR, FORCE, LOAD_UNCERTAIN_FILES. Další informace naleznete v tématu Možnosti kopírování Snowflake. No
additionalFormatOptions Další možnosti formátu souboru poskytnuté příkazu COPY, které jsou k dispozici jako slovník párů klíč-hodnota. Příklady: DATE_FORMAT, TIME_FORMAT, TIMESTAMP_FORMAT. Další informace najdete v tématu Možnosti typů formátu Snowflake. No

Note

Ujistěte se, že máte oprávnění ke spuštění následujícího příkazu a přístup ke schématu INFORMATION_SCHEMA a tabulce COLUMNS.

  • SELECT CURRENT_REGION()
  • COPY INTO <table>
  • SHOW REGIONS
  • CREATE OR REPLACE STAGE
  • DROP STAGE

Přímé kopírování do Snowflake

Pokud vaše zdrojové úložiště dat a formát splňují kritéria popsaná v této části, můžete použít aktivita Copy k přímému kopírování ze zdroje do Snowflake. Služba zkontroluje nastavení a selže aktivita Copy spustit, pokud nejsou splněna následující kritéria:

  • Když zadáte storageIntegration v jímce:

    Zdrojové úložiště dat je Azure Blob Storage, na které odkazujete v externí fázi Snowflake. Před kopírováním dat je potřeba provést následující kroky:

    1. Vytvořte propojenou službu Azure Blob Storage pro zdrojovou Azure Blob Storage s libovolnými podporovanými typy ověřování.

    2. Udělte Storage Blob Data Reader roli instančního objektu Snowflake ve zdrojovém Azure Blob Storage Access Control (IAM).

  • Pokud v jímce nezadáte storageIntegration :

    Zdrojová propojená služba je Azure Blob storage s ověřováním pomocí sdíleného přístupového podpisu. Pokud chcete přímo kopírovat data z Azure Data Lake Storage Gen2 v následujícím podporovaném formátu, můžete vytvořit Azure Blob Storage propojenou službu a použít SAS ověřování pro váš účet Azure Data Lake Storage Gen2, aby se zabránilo použití předběžné kopie do Snowflake.

  • Zdrojový formát dat je Parquet, text s oddělovači nebo JSON s následujícími konfiguracemi:

    • U formátu Parquet je kodek komprese Žádný nebo Snappy.

    • Formát ohraničeného textu

      • rowDelimiter je \r\nnebo libovolný jeden znak. Pokud oddělovač řádků není "\r\n", firstRowAsHeader musí být false a skipLineCount není zadaný.
      • compression může být žádná komprese, gzip, bzip2 nebo deflate.
      • encodingName je ponechán jako výchozí nebo je nastaven na "UTF-8", "UTF-16", "UTF-16BE", "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 je dvojitá uvozovka, jednoduchá uvozovka nebo prázdný řetězec (bez znaku uvozovek).
    • U formátu JSON přímé kopírování podporuje pouze případ, že tabulka Snowflake jímky má pouze jeden sloupec a datový typ tohoto sloupce je VARIANT, OBJECT nebo ARRAY.

      • compression může být žádná komprese, gzip, bzip2 nebo deflate.
      • encodingName je ve výchozím nastavení nebo nastaven na utf-8.
      • Není zadáno mapování sloupců.
  • Ve zdroji aktivita Copy:

    • additionalColumns není specifikován.
    • Pokud je zdrojem složka, recursive je nastavená na hodnotu true.
    • prefix, modifiedDateTimeStartmodifiedDateTimeEnd, a enablePartitionDiscovery nejsou zadány.

Example:

"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 >"
                }
            }
        }
    }
]

Fázovaná kopie do Snowflake

Pokud zdrojové úložiště dat nebo formát není nativně kompatibilní s příkazem Snowflake COPY, jak je uvedeno v poslední části, povolte integrovanou fázovanou kopii pomocí dočasné instance úložiště objektů blob Azure. Funkce fázovaného kopírování také poskytuje lepší propustnost. Služba automaticky převede data tak, aby splňovala požadavky na formát dat Snowflake. Potom vyvolá příkaz COPY, který načte data do Snowflake. Nakonec vyčistí dočasná data z úložiště blobů. Podrobnosti o kopírování dat pomocí etapování najdete v části Etapovaná kopie.

Pokud chcete tuto funkci použít, vytvořte propojenou službu Azure Blob Storage, která odkazuje na účet úložiště Azure jako dočasnou přípravu. Potom zadejte vlastnosti enableStaging a stagingSettings v aktivita Copy.

  • Když v jímce zadáte storageIntegration, měl by být dočasný pracovní Azure Blob Storage ten, který jste v externí fázi v Snowflake zmínili. Ujistěte se, že pro ni vytvoříte propojenou službu Azure Blob Storage s jakýmkoli podporovaným ověřováním při použití prostředí Azure Integration Runtime nebo s anonymním klíčem účtu, sdíleným přístupovým podpisem nebo ověřováním instančního objektu při použití místního prostředí Integration Runtime. Kromě toho udělejte roli alespoň Storage Blob Data Reader pro instanční objekt Snowflake v průběžném úložišti Azure Blob Storage, v části Řízení přístupu (IAM).

  • Pokud v jímce nezadáte storageIntegration, musí propojená služba Azure Blob Storage pro přípravu dat používat ověřování pomocí sdíleného přístupového podpisu, jak to vyžaduje příkaz Snowflake COPY.

Example:

"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"
            }
        }
    }
]

Mapování vlastností toku dat

Při transformaci dat při mapování toku dat můžete číst a zapisovat do tabulek ve Snowflake. Další informace najdete v tématu transformace zdroje a transformace jímky v mapování toků dat. Jako typ zdroje a jímky můžete použít datovou sadu Snowflake nebo vloženou datovou sadu .

Transformace zdroje

Následující tabulka uvádí vlastnosti podporované zdrojem Snowflake. Tyto vlastnosti můžete upravit na kartě Možnosti zdroje . Konektor využívá interní přenos dat Snowflake.

Name Description Required Povolené hodnoty Vlastnost skriptu toku dat
Table Pokud jako vstup vyberete tabulku, tok dat načte všechna data z tabulky zadané v datové sadě Snowflake nebo ve zdrojových možnostech při použití vložené datové sady. No String (pouze pro vloženou datovou sadu)
tableName
schemaName
Query Pokud jako vstup vyberete Dotaz, zadejte dotaz, který načte data ze Snowflake. Toto nastavení přepíše všechny tabulky, které jste zvolili v datové sadě.
Pokud názvy schématu, tabulek a sloupců obsahují malá písmena, uvozujte identifikátor objektu v dotazu, například select * from "schema"."myTable".
No String dotaz
Povolit přírůstkový extrakt (Preview) Pomocí této možnosti můžete službě ADF sdělit, aby zpracovával jenom řádky, které se od posledního spuštění kanálu změnily. No logický enableCdc
Přírůstkový sloupec Při použití funkce přírůstkové extrakce musíte zvolit datumový, časový nebo číselný sloupec, který bude použit jako indikátor ve zdrojové tabulce. No String waterMarkColumn
Povolení sledování změn Snowflake (Preview) Tato možnost umožňuje ADF využívat technologii Snowflake pro zachytávání změn v datech ke zpracování pouze rozdílových dat od posledního spuštění kanálu. Tato možnost automaticky načte delta data se záznamy o vkládání, aktualizaci a mazání řádků bez nutnosti používat přírůstkový sloupec. No logický enableNativeCdc
Čisté změny Pokud používáte sledování změn ve Snowflake, můžete pomocí této možnosti získat deduplikované změněné řádky nebo kompletní změny. Řádky, které byly zbaveny duplicit, zobrazí pouze nejnovější verze řádků, které se změnily od daného bodu v čase, zatímco úplné změny vám ukážou všechny verze každého řádku, které se změnily, včetně těch, které byly smazány nebo aktualizovány. Pokud například aktualizujete řádek, uvidíte verzi smazání a verzi vložení ve vyčerpávajících změnách, ale pouze verzi vložení v deduplikovaných změněných řádcích. V závislosti na vašem případu použití můžete zvolit možnost, která vyhovuje vašim potřebám. Výchozí možnost je false, což znamená vyčerpávající změny. No logický netChanges
Zahrnout systémové sloupce Při použití sledování změn snowflake můžete pomocí možnosti SystemColumns určit, jestli jsou sloupce datového proudu metadat poskytované Snowflakeem zahrnuté nebo vyloučené ve výstupu sledování změn. Ve výchozím nastavení je systemColumns nastaven na hodnotu true, což znamená, že jsou zahrnuty sloupce datového proudu metadat. Pokud je chcete vyloučit, můžete nastavit hodnotu systemColumns na false. No logický systemColumns
Začít číst od začátku Nastavení této možnosti s přírůstkovým extrahováním a sledováním změn dá ADF pokyn ke čtení všech řádků při prvním spuštění kanálu se zapnutým přírůstkovým extrahováním. No logický skipInitialLoad

Příklady zdrojových skriptů Snowflake

Pokud jako typ zdroje použijete datovou sadu Snowflake, přidružený skript toku dat:

source(allowSchemaDrift: true,
	validateSchema: false,
	query: 'select * from MYTABLE',
	format: 'query') ~> SnowflakeSource

Pokud používáte vloženou datovou sadu, přidružený skript toku dat je:

source(allowSchemaDrift: true,
	validateSchema: false,
	format: 'query',
	query: 'select * from MYTABLE',
	store: 'snowflake') ~> SnowflakeSource

Nativní sledování změn

Azure Data Factory teď podporuje nativní funkci Snowflake označovanou jako sledování změn, která zahrnuje zaznamenávání změn ve formě protokolů. Tato funkce Snowflake nám umožňuje sledovat změny dat v čase, což je užitečné pro incrementální nahrávání dat a účely auditu. Pokud chcete tuto funkci využít, když povolíte zachytávání dat změn a vyberete Snowflake Change Tracking, vytvoříme objekt Stream pro zdrojovou tabulku, která umožňuje sledování změn ve zdrojové tabulce snowflake. Následně použijeme klauzuli CHANGES v našem dotazu k načtení pouze nových nebo aktualizovaných dat ze zdrojové tabulky. Doporučuje se také naplánovat kanál tak, aby se změny zpracovávaly v intervalu nastavené doby uchovávání dat pro zdrojovou tabulku Snowflake, jinak by uživatel mohl zaznamenat nekonzistentní chování zaznamenaných změn.

Transformace jímky

Následující tabulka uvádí vlastnosti podporované jímkou Snowflake. Tyto vlastnosti můžete upravit na kartě Nastavení . Při použití vložené datové sady se zobrazí další nastavení, která jsou stejná jako vlastnosti popsané v části vlastností datové sady . Konektor využívá interní přenos dat Snowflake.

Name Description Required Povolené hodnoty Vlastnost skriptu toku dat
Metoda aktualizace Určete, jaké operace jsou povoleny v cíli Snowflake.
Pokud chcete aktualizovat, vložit nebo odstranit řádky, k označení řádků pro tyto akce je potřeba úprava řádku.
Yes true nebo false deletable
insertable
updateable
upsertable
Klíčové sloupce Pro aktualizace, vložení nebo úpravy a odstranění je nutné nastavit jeden nebo více klíčových sloupců, aby bylo možné určit, který řádek se má změnit. No Array keys
Operace tabulky Určuje, zda se mají před zápisem znovu vytvořit nebo odebrat všechny řádky z cílové tabulky.
- Žádné: Na tabulce se neprovede žádná akce.
- Znovu vytvořte: Tabulka se odstraní a znovu vytvoří. Vyžaduje se při dynamickém vytváření nové tabulky.
- Odstranit: Všechny řádky z cílové tabulky budou odstraněny.
No true nebo false recreate
zkrátit

Příklady skriptů jímky Snowflake

Pokud jako typ cíle použijete datovou sadu Snowflake, přidružený skript toku dat je:

IncomingStream sink(allowSchemaDrift: true,
	validateSchema: false,
	deletable:true,
	insertable:true,
	updateable:true,
	upsertable:false,
	keys:['movieId'],
	format: 'table',
	skipDuplicateMapInputs: true,
	skipDuplicateMapOutputs: true) ~> SnowflakeSink

Pokud používáte vloženou datovou sadu, přidružený skript toku dat je:

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

Optimalizace delegování dotazů

Nastavením úrovně protokolování kanálu na None vyloučíme přenos průběžných transformačních metrik, což brání potenciálním překážkám v optimalizaci Sparku a umožňuje optimalizaci posunutí dotazu poskytovanou Snowflakem. Tato optimalizace posunutu umožňuje podstatné vylepšení výkonu pro velké tabulky Snowflake s rozsáhlými datovými sadami.

Note

Nepodporujeme dočasné tabulky ve Snowflake, protože jsou místní pro danou relaci nebo uživatele, který je vytvoří, takže jsou nepřístupné pro jiné relace a náchylné k přepsání jako běžné tabulky ve Snowflake. Snowflake sice nabízí přechodné tabulky jako alternativu, která je přístupná globálně, ale vyžadují ruční odstranění, což je v rozporu s naším primárním cílem použití dočasných tabulek, což je zabránit jakýmkoli operacím odstranění ve zdrojovém schématu.

Mapování datových typů pro Snowflake V2

Když kopírujete data ze Snowflake, používají se následující mapování z datových typů Snowflake na dočasné datové typy interně v rámci služby. Informace o tom, jak aktivita kopírování mapuje zdrojové schéma a datový typ na jímku, najdete v tématu Mapování schématu a datového typu.

Datový typ Snowflake Dočasný datový typ služby
ČÍSLO (p,0) Decimal
ČÍSLO (p,s kde s>0) Decimal
FLOAT Double
VARCHAR String
CHAR String
BINARY Byte[]
BOOLEAN logický
DATE DateTime
TIME TimeSpan
TIMESTAMP_LTZ DateTimeOffset
TIMESTAMP_NTZ DateTimeOffset
TIMESTAMP_TZ DateTimeOffset
VARIANT String
OBJECT String
ARRAY String

Vlastnosti aktivity vyhledávání

Další informace o vlastnostech viz Lookup activity.

Životní cyklus a upgrade konektoru Snowflake

Následující tabulka uvádí protokoly fází vydání a změn pro různé verze konektoru Snowflake:

Version Fáze vydání Protokol změn
Sněhová vločka V1 Removed Nelze použít.
Snowflake V2 (verze 1.0) Dostupná verze GA • Přidejte podporu pro ověřování páru klíčů.

• Do aktivita Copy přidejte podporu pro storageIntegration.

• Vlastnosti accountIdentifier, warehouse, databaseschema a role jsou použity k navázání spojení místo connectionstring vlastnosti.

• Přidání podpory pro desetinné číslo v aktivitě Vyhledávání Typ ČÍSLO definovaný ve Snowflake se zobrazí jako řetězec v aktivitě Vyhledávání. Pokud ho chcete převést na číselný typ v 2, můžete použít parametr kanálu s funkcí int nebo plovoucí funkcí. Například , int(activity('lookup').output.firstRow.VALUE)float(activity('lookup').output.firstRow.VALUE)

• Datový typ časového razítka ve Snowflake se čte jako datový typ DateTimeOffset v aktivitě Lookup a Script. Pokud po upgradu na V2 stále potřebujete použít hodnotu Datetime jako parametr v kanálu, můžete typ DateTimeOffset převést na typ DateTime pomocí funkce formatDateTime (doporučeno) nebo funkce concat. Příklad: formatDateTime(activity('lookup').output.firstRow.DATETIMETYPE), concat(substring(activity('lookup').output.firstRow.DATETIMETYPE, 0, 19), 'Z')

• ČÍSLO (p,0) je čteno jako datový typ Desetinné číslo.

• TIMESTAMP_LTZ, TIMESTAMP_NTZ a TIMESTAMP_TZ se čtou jako datový typ DateTimeOffset.

• Parametry skriptu nejsou podporovány v aktivitě skriptu. Jako alternativu použijte dynamické výrazy pro parametry skriptu. Další informace naleznete v dokumentaci Výrazy a funkce v Azure Data Factory a Azure Synapse Analytics.

• Spuštění více příkazů SQL v aktivitě skriptu není podporováno.
Snowflake V2 (verze 1.1) Dostupná verze GA • Přidejte podporu parametrů skriptu.

• Přidání podpory pro provádění více příkazů v aktivitě skriptu.

• Přidejte treatDecimalAsString vlastnost ve vyhledávací aktivitě a aktivitě skriptu.

• Přidejte další vlastnost UseUtcTimestampspřipojení .

Aktualizujte Snowflake konektor z V1 na V2

Pokud chcete upgradovat konektor Snowflake z V1 na V2, můžete provést souběžný upgrade nebo místní upgrade.

Souběžný upgrade

Pokud chcete provést souběžný upgrade, proveďte následující kroky:

  1. Vytvořte novou propojenou službu Snowflake a nakonfigurujte ji pomocí odkazů na vlastnosti propojené služby V2.
  2. Vytvořte datovou sadu založenou na nově vytvořené propojené službě Snowflake.
  3. Nahraďte novou propojenou službu a datovou sadu stávajícími propojenými službami a datovými sadami v pipelinech, které cílí na objekty V1.

Upgradovat na místě

Pokud chcete provést místní upgrade, musíte upravit stávající datovou část propojené služby a aktualizovat datovou sadu tak, aby používala novou propojenou službu.

  1. Aktualizujte typ ze Snowflake na SnowflakeV2.

  2. Upravte datovou část propojené služby z formátu V1 na V2. Po změně výše uvedeného typu můžete buď vyplnit jednotlivá pole z uživatelského rozhraní, nebo datovou část aktualizovat přímo prostřednictvím Editoru JSON. Informace o podporovaných vlastnostech připojení najdete v části Vlastnosti propojené služby v tomto článku. Následující příklady ukazují rozdíly v datové části propojených služeb V1 a V2 Snowflake:

    JSON datová část pro propojenou službu Snowflake V1:

      {
         "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"
             }
         }
     }
    

    Datová část JSON propojené služby Snowflake V2:

     {
         "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. Aktualizujte datovou sadu tak, aby používala novou propojenou službu. Můžete buď vytvořit novou datovou sadu založenou na nově vytvořené propojené službě, nebo aktualizovat vlastnost typu existující datové sady ze SnowflakeTable na SnowflakeV2Table.

Note

Při přechodu na propojené služby může sekce parametrů šablony přepsání zobrazovat pouze vlastnosti databáze. Můžete to vyřešit ruční úpravou parametrů. Potom se v části Přepsat parametry šablony zobrazí připojovací řetězce.

Upgrade konektoru Snowflake V2 z verze 1.0 na verzi 1.1

Na stránce Upravit propojenou službu vyberte verzi 1.1. Další informace naleznete v tématu Vlastnosti propojené služby.

Seznam úložišť dat, která jsou podporována jako zdroje a cíle pro aktivita Copy, najdete v tématu supported data stores and formats.