Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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:
- Nástroj pro kopírování dat
- portál Azure
- .NET SDK
- Python SDK
- Azure PowerShell
- REST API
- šablona Azure Resource Manager
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.
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ý:
Vyhledejte Snowflake a vyberte konektor Snowflake.
Nakonfigurujte podrobnosti o službě, otestujte připojení a vytvořte novou propojenou službu.
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í
storageIntegrationve 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:
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í.
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 :
-
rowDelimiterje \r\nnebo libovolný jeden znak. -
compressionmůže být žádná komprese, gzip, bzip2 nebo deflate. -
encodingNameje 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.
-
compressionmůže být žádná komprese, gzip, bzip2 nebo deflate. -
encodingNameje ve výchozím nastavení nebo nastaven na utf-8. -
filePatternv jímce aktivity kopírování je ponechán jako výchozí nebo nastaven na setOfObjects.
-
V části zdroje aktivity kopírování
additionalColumnsnení 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 REGIONSCREATE OR REPLACE STAGEDROP 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
storageIntegrationv 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:
Vytvořte propojenou službu Azure Blob Storage pro zdrojovou Azure Blob Storage s libovolnými podporovanými typy ověřování.
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
-
rowDelimiterje \r\nnebo libovolný jeden znak. Pokud oddělovač řádků není "\r\n",firstRowAsHeadermusí být false askipLineCountnení zadaný. -
compressionmůže být žádná komprese, gzip, bzip2 nebo deflate. -
encodingNameje 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.
-
compressionmůže být žádná komprese, gzip, bzip2 nebo deflate. -
encodingNameje ve výchozím nastavení nebo nastaven na utf-8. - Není zadáno mapování sloupců.
-
Ve zdroji aktivita Copy:
-
additionalColumnsnení specifikován. - Pokud je zdrojem složka,
recursiveje nastavená na hodnotu true. -
prefix,modifiedDateTimeStartmodifiedDateTimeEnd, aenablePartitionDiscoverynejsou 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:
- Vytvořte novou propojenou službu Snowflake a nakonfigurujte ji pomocí odkazů na vlastnosti propojené služby V2.
- Vytvořte datovou sadu založenou na nově vytvořené propojené službě Snowflake.
- 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.
Aktualizujte typ ze Snowflake na SnowflakeV2.
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" } } }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.
Související obsah
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.