Sdílet prostřednictvím


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

PLATÍ PRO: Azure Data Factory Azure Synapse Analytics

Tip

Vyzkoušejte si službu Data Factory v Microsoft Fabric, řešení pro analýzy typu all-in-one pro podniky. Microsoft Fabric zahrnuje všechno od přesunu dat až po datové vědy, analýzy v reálném čase, business intelligence a vytváření sestav. Přečtěte si, jak začít používat novou zkušební verzi zdarma.

Tento článek popisuje, jak pomocí aktivita Copy v kanálech Azure Data Factory a Azure Synapse kopírovat data z a do Snowflake a pomocí Tok dat transformovat data ve Snowflake. Další informace najdete v úvodním článku služby Data Factory nebo Azure Synapse Analytics.

Důležité

Nový konektor Snowflake poskytuje vylepšenou nativní podporu Snowflake. Pokud ve svém řešení používáte starší konektor Snowflake, doporučujeme nejdříve upgradovat konektor Snowflake. Podrobnosti o rozdílu mezi starší verzí a nejnovější verzí najdete v této části .

Podporované funkce

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

Podporované funkce IR
aktivita Copy (zdroj/jímka) (1) (2)
Mapování toku dat (zdroj/jímka) (1)
Aktivita Lookup (1) (2)
Aktivita skriptu (1) (2)

(1) Prostředí Azure Integration Runtime (2) Místní prostředí Integration Runtime

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

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

Požadavky

Pokud se vaše úložiště dat nachází uvnitř místní sítě, virtuální sítě Azure nebo amazonového privátního cloudu, musíte nakonfigurovat místní prostředí Integration Runtime pro připojení k němu. 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 prostředí Azure Integration Runtime.

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

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

Vlastnost Popis Požaduje se Výchozí
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í aktivita Copy s kanálem 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ích kroků vytvořte propojenou službu s Snowflake v uživatelském rozhraní webu Azure Portal.

  1. Přejděte na kartu Správa v pracovním prostoru Azure Data Factory nebo Synapse a vyberte Propojené služby a pak 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:

Vlastnost Popis Povinní účastníci
type Vlastnost typu musí být nastavena na SnowflakeV2. Ano
accountIdentifier Název účtu spolu s jeho organizací. Například myorg-account123. Ano
database Výchozí databáze použitá pro relaci po připojení. Ano
sklad Výchozí virtuální sklad použitý pro relaci po připojení. Ano
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
host Název hostitele účtu Snowflake. Například: contoso.snowflakecomputing.com. .cn podporuje se také. No
connectVia Prostředí Integration Runtime , které slouží 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 se vaše úložiště dat nachází v privátní síti). Pokud není zadaný, použije výchozí prostředí Azure Integration Runtime. 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:

Vlastnost Popis Povinní účastníci
user Přihlašovací jméno uživatele Snowflake. Ano
Heslo Heslo pro uživatele Snowflake. Označte toto pole jako typ SecureString, abyste ho bezpečně uložili. Můžete také odkazovat na tajný klíč uložený ve službě Azure Key Vault. Ano

Příklad:

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

Poznámka:

Mapování Tok dat podporuje pouze základní ověřování.

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

Pokud chcete použít ověřování páru klíčů, musíte nakonfigurovat a vytvořit ověřovacího uživatele páru klíčů ve Snowflake pomocí odkazu na obměně páru klíčů a 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:

Vlastnost Popis Povinní účastníci
user Přihlašovací jméno uživatele Snowflake. Ano
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 služby 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 přidání \n explicitně do každého novéhořádku.
Ano
privateKeyPassphrase Heslo použité k dešifrování privátního klíče, pokud je šifrované. No

Příklad:

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

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.

Vlastnost Popis Povinní účastníci
type Vlastnost typu datové sady musí být nastavena na SnowflakeV2Table. Ano
schema 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
table 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

Příklad:

{
    "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 aktivity kopírování

Ú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 COPY snowflake do [umístění] k dosažení nejlepšího 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 zdroje aktivita Copy následující vlastnosti.

Vlastnost Popis Povinní účastníci
type Vlastnost typu zdroje aktivita Copy musí být nastavena na SnowflakeV2Source. Ano
query 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 Upřesňující nastavení používaná k načtení dat ze Snowflake. Můžete nakonfigurovat ty podporované příkazem COPY do příkazu, který služba projde při vyvolání příkazu. Ano
V části exportSettings:
type Typ příkazu exportu nastavený na SnowflakeExportCopyCommand. Ano
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 jako slovník párů klíč-hodnota. Příklady: MAX_FILE_SIZE, PŘEPSÁNÍ. 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. Další informace najdete v tématu Možnosti typů formátu Snowflake. No

Poznámka:

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ě a formát dat 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 pro službu Azure Blob Storage jímky s libovolnými podporovanými typy ověřování.

    2. Udělte instančnímu objektu snowflake v řízení přístupu k azure Blob Storage (IAM) alespoň roli Přispěvatel dat v objektu blob služby Storage Storage.

  • Pokud ve zdroji nezadáte storageIntegration :

    Propojená služba jímky 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 účet Azure Data Lake Storage Gen2, abyste se vyhnuli použití fázované kopie ze Snowflake.

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

    • Pro formát Parquet je kodek komprese None, Snappy nebo Lzo.
    • Formát textu s oddělovači:
      • rowDelimiter is \r\n, or any single character.
      • compressionnesmí být komprese, gzip, bzip2 nebo deflate.
      • encodingName je ve výchozím nastavení nebo nastaven na utf-8.
      • quoteCharje 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.
      • compressionnesmí být 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ána jako výchozí nebo nastavena na setOfObjects.
  • Ve zdroji additionalColumns aktivity kopírování není zadaný.

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

Příklad:

"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 úložiště dat nebo formát jímky 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 v Azure. 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 jímky a nakonec vyčistí dočasná data z přípravného úložiště. Podrobnosti o kopírování dat pomocí přípravy 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 průběžnou přípravu. Potom zadejte enableStaging vlastnosti a stagingSettings vlastnosti v aktivita Copy.

  • Při zadávání storageIntegration ve zdroji by dočasná příprava služby Azure Blob Storage měla být ta, která se odkazuje v externí fázi 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, a přidělte alespoň roli Přispěvatel dat objektů blob služby Snowflake instančnímu objektu služby Snowflake v přípravném řízení přístupu ke službě Azure Blob Storage (IAM).

  • Pokud ve zdroji nezadáte storageIntegration , musí přípravná propojená služba Azure Blob Storage používat ověřování pomocí sdíleného přístupového podpisu, jak to vyžaduje příkaz Snowflake COPY. Ujistěte se, že v přípravné službě Azure Blob Storage udělíte správné oprávnění k přístupu snowflake. Další informace o tom najdete v tomto článku.

Příklad:

"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í kopírování jímky na 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"
    }
}

Poznámka:

Při nastavení chování kopírování jímky na slučovací soubory může dojít pouze ke zkopírování posledního děleného souboru.

Sněhová vločka jako jímka

Konektor Snowflake využívá příkaz COPY snowflake do [table] k dosažení nejlepšího výkonu. Podporuje zápis dat do Snowflake v 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 zkopírovat data do Snowflake, podporují se v části aktivita Copy jímky následující vlastnosti.

Vlastnost Popis Povinní účastníci
type Vlastnost typu jímky aktivita Copy nastavená na SnowflakeV2Sink. Ano
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. Ano
V části importSettings:
type Typ příkazu import, který je nastavený na SnowflakeImportCopyCommand. Ano
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 jako slovník párů 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

Poznámka:

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á kopie do Snowflake

Pokud vaše zdrojové úložiště dat a formát splňují kritéria popsaná v této části, můžete aktivita Copy použít 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 službu Azure Blob Storage s libovolnými podporovanými typy ověřování.

    2. Udělte instančnímu objektu Snowflake ve zdrojovém řízení přístupu ke službě Azure Blob Storage (IAM) alespoň roli Čtenář dat objektu blob služby Storage.

  • 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 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í fázované 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 None (Žádný) nebo Snappy (Snappy).

    • Formát textu s oddělovači:

      • rowDelimiter is \r\n, or any single character. Pokud oddělovač řádků není \r\n, firstRowAsHeader musí být false a skipLineCount není zadán.
      • compressionnesmí být 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".
      • quoteCharje 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.

      • compressionnesmí být 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í zadán.
    • Pokud je zdrojem složka, recursive je nastavená na hodnotu true.
    • prefix, modifiedDateTimeStartmodifiedDateTimeEnd, a enablePartitionDiscovery nejsou zadány.

Příklad:

"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 služby Azure Blob Storage. 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ě objektů blob. Podrobnosti o kopírování dat pomocí přípravy 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 průběžnou přípravu. Potom zadejte enableStaging vlastnosti a stagingSettings vlastnosti v aktivita Copy.

  • Když zadáte storageIntegration v jímce, dočasné přípravné úložiště objektů blob v Azure by mělo být to, co jste v externí fázi ve 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, a přidělte alespoň roli Čtenář dat objektů blob služby Snowflake instančnímu objektu služby Snowflake v přípravném řízení přístupu ke službě Azure Blob Storage (IAM).

  • Pokud v jímce nezadáte storageIntegration , musí propojená služba Azure Blob Storage používat ověřování pomocí sdíleného přístupového podpisu podle požadavku příkazu Snowflake COPY.

Příklad:

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

Název Popis Povinní účastníci 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
Dotaz 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 query
Povolení přírůstkového extrakce (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á hodnota enableCdc
Přírůstkový sloupec Při použití funkce přírůstkového extrakce musíte zvolit sloupec datum/čas/číselný sloupec, který chcete použít jako vodoznak ve zdrojové tabulce. No String waterMarkColumn
Povolení sledování změn Snowflake (Preview) Tato možnost umožňuje ADF využívat technologii zachytávání dat změn Snowflake ke zpracování pouze rozdílových dat od předchozího spuštění kanálu. Tato možnost automaticky načte rozdílová data s operacemi vložení, aktualizace a odstranění řádků bez nutnosti přírůstkového sloupce. No Logická hodnota enableNativeCdc
Net Changes Pokud používáte sledování změn sněhové vločky, můžete pomocí této možnosti získat odstraněné změněné řádky nebo vyčerpávající změny. Odstraněné změněné řádky zobrazí pouze nejnovější verze řádků, které se od daného bodu v čase změnily, zatímco vyčerpávající změny vám ukážou všechny verze každého řádku, které se změnily, včetně těch, které byly odstraněny nebo aktualizovány. Pokud například aktualizujete řádek, uvidíte verzi odstranění a vkládanou verzi v vyčerpávajících změnách, ale jenom verzi pro vložení ve odstraněný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á hodnota 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á hodnota 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á hodnota 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 sledování změn ve formě protokolů. Tato funkce snowflake nám umožňuje sledovat změny v datech v průběhu času, což je užitečné pro přírůstkové načítání a auditování. 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 spotřebovávají v intervalu nastavené doby uchovávání dat pro tabulku zdroje snowflake, jinak by uživatel mohl zaznamenat nekonzistentní chování zachycený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.

Název Popis Povinní účastníci Povolené hodnoty Vlastnost skriptu toku dat
Metoda aktualizace Určete, jaké operace jsou povoleny v cíli Snowflake.
Pokud chcete aktualizovat, upsertovat nebo odstranit řádky, je k označení řádků pro tyto akce potřeba transformace alter řádku.
Ano true nebo false s možností odsud
vložitelné
aktualizovatelné
upsertable
Klíčové sloupce Pro aktualizace, upserty a odstranění je nutné nastavit klíčový sloupec nebo sloupce, aby bylo možné určit, který řádek se má změnit. No Pole keys
Akce tabulky Určuje, zda se mají před zápisem znovu vytvořit nebo odebrat všechny řádky z cílové tabulky.
- Žádné: V tabulce se neprovede žádná akce.
- Znovu vytvořte: Tabulka se přehodí a znovu vytvoří. Vyžaduje se při dynamickém vytváření nové tabulky.
- Zkrácení: Odeberou se všechny řádky z cílové tabulky.
No true nebo false obnovit
truncate

Příklady skriptů jímky Snowflake

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

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 odsdílení 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 optimalizace Sparku a povolení optimalizace odsadnutí dotazů poskytovaných Snowflakem. Tato optimalizace posunutu umožňuje podstatné vylepšení výkonu pro velké tabulky Snowflake s rozsáhlými datovými sadami.

Poznámka:

Nepodporujeme dočasné tabulky ve Snowflake, protože jsou místní pro relaci nebo uživatele, který je vytvoří, takže je nepřístupný pro jiné relace a náchylný k přepsání jako běžné tabulky 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.

Vlastnosti aktivity vyhledávání

Další informace ovlastnostech

Upgrade konektoru Snowflake

Pokud chcete upgradovat konektor Snowflake, 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.
  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 službami v kanálech, které cílí na starší objekty.

Místní upgrade

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 ze staršího formátu na nový vzor. 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 starších a nových propojených služeb Snowflake:

    Starší datová část JSON propojené služby Snowflake:

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

    Nová datová část JSON propojené služby Snowflake:

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

Rozdíly mezi Snowflake a Snowflake (starší verze)

Konektor Snowflake nabízí nové funkce a je kompatibilní s většinou funkcí konektoru Snowflake (starší verze). Následující tabulka ukazuje rozdíly mezi funkcemi Snowflake a Snowflake (starší verze).

Snowflake Snowflake (starší verze)
Podpora ověřování základního páru a páru klíčů Podpora základního ověřování
Parametry skriptu se v současné době nepodporují v aktivitě skriptu. Jako alternativu použijte dynamické výrazy pro parametry skriptu. Další informace najdete v tématu Výrazy a funkce ve službě Azure Data Factory a Azure Synapse Analytics. Podpora parametrů skriptu v aktivitě skriptu
Podpora BigDecimal v aktivitě Vyhledávání Typ ČÍSLO definovaný ve Snowflake se zobrazí jako řetězec v aktivitě Vyhledávání. Pokud ho chcete překrýt na číselný typ, 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) Ve vyhledávací aktivitě se nepodporuje BigDecimal.
Objekty accountIdentifier, warehousea schema databaserole vlastnosti slouží k navázání připojení. Vlastnost connectionstring slouží k navázání připojení.
Datový typ časového razítka ve Snowflake se čte jako datový typ DateTimeOffset v aktivitě Lookup a Script. Datový typ časového razítka ve Snowflake se čte jako datový typ DateTime v aktivitě Vyhledávání a Skript.
Pokud po upgradu konektoru 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')

Seznam úložišť dat podporovaných jako zdroje a jímky aktivita Copy najdete v podporovaných úložištích a formátech dat.