Copiare e trasformare i dati in Snowflake usando Azure Data Factory o Azure Synapse Analytics

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Provare Data Factory in Microsoft Fabric, una soluzione di analisi completa per le aziende. Microsoft Fabric copre tutti gli elementi, dallo spostamento dei dati all'analisi scientifica dei dati, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Scopri come avviare gratuitamente una nuova versione di valutazione .

Questo articolo illustra come usare le attività Copy nelle pipeline di Azure Data Factory e Azure Synapse per copiare dati da e in Snowflake e usare Flusso di dati per trasformare i dati in Snowflake. Per altre informazioni, vedere l'articolo introduttivo per Data Factory o Azure Synapse Analytics.

Importante

Il nuovo connettore Snowflake offre un supporto nativo migliorato per Snowflake. Se si usa il connettore Snowflake legacy nella soluzione, supportato così come è solo per la compatibilità con le versioni precedenti, vedere l'articolo Connettore Snowflake (legacy).

Funzionalità supportate

Questo connettore Snowflake è supportato per le funzionalità seguenti:

Funzionalità supportate IR
Attività di copia (origine/sink) (1) (2)
Flusso di dati di mapping (origine/sink) (1)
Attività Lookup (1) (2)
Attività script (1) (2)

(1) Runtime di integrazione di Azure (2) Runtime di integrazione self-hosted

Per il attività Copy, questo connettore Snowflake supporta le funzioni seguenti:

  • Copiare dati da Snowflake che usa il comando COPY di Snowflake in [location] per ottenere prestazioni ottimali.
  • Copiare i dati in Snowflake che sfrutta il comando COPY di Snowflake in [table] per ottenere prestazioni ottimali. Supporta Snowflake in Azure.
  • Se è necessario un proxy per connettersi a Snowflake da un runtime di integrazione self-hosted, è necessario configurare le variabili di ambiente per HTTP_PROXY e HTTPS_PROXY nell'host del runtime di integrazione.

Prerequisiti

Se l'archivio dati si trova all'interno di una rete locale, una rete virtuale di Azure o un cloud privato virtuale di Amazon, è necessario configurare un runtime di integrazione self-hosted per connettersi. Assicurarsi di aggiungere gli indirizzi IP usati dal runtime di integrazione self-hosted all'elenco consentito.

Se l'archivio dati è un servizio dati cloud gestito, è possibile usare Azure Integration Runtime. Se l'accesso è limitato agli indirizzi IP approvati nelle regole del firewall, è possibile aggiungere indirizzi IP del runtime di integrazione di Azure all'elenco consentito.

L'account Snowflake usato per Source o Sink deve avere l'accesso necessario USAGE per il database e l'accesso in lettura/scrittura allo schema e alle tabelle/viste al suo interno. Inoltre, deve avere CREATE STAGE anche sullo schema per poter creare la fase esterna con l'URI di firma di accesso condiviso.

I valori delle proprietà account seguenti devono essere impostati

Proprietà Descrizione Richiesto Valore predefinito
REQUIRE_STORAGE_INTEGRATION_FOR_STAGE_CREATION Specifica se richiedere un oggetto di integrazione dell'archiviazione come credenziali cloud durante la creazione di una fase esterna denominata (usando CREATE STAGE) per accedere a un percorso di archiviazione cloud privato. FALSE FALSE
REQUIRE_STORAGE_INTEGRATION_FOR_STAGE_OPERATION Specifica se richiedere l'uso di una fase esterna denominata che fa riferimento a un oggetto di integrazione dell'archiviazione come credenziali cloud durante il caricamento o lo scaricamento di dati in un percorso di archiviazione cloud privato. FALSE FALSE

Per altre informazioni sui meccanismi di sicurezza di rete e sulle opzioni supportate da Data Factory, vedere strategie di accesso ai dati.

Operazioni preliminari

Per eseguire l'attività di copia con una pipeline, è possibile usare uno degli strumenti o SDK seguenti:

Creare un servizio collegato a Snowflake usando l'interfaccia utente

Usare la procedura seguente per creare un servizio collegato a Snowflake nell'interfaccia utente di portale di Azure.

  1. Passare alla scheda Gestisci nell'area di lavoro di Azure Data Factory o Synapse e selezionare Servizi collegati, quindi fare clic su Nuovo:

  2. Cercare Snowflake e selezionare il connettore Snowflake.

    Screenshot del connettore Snowflake.

  3. Configurare i dettagli del servizio, testare la connessione e creare il nuovo servizio collegato.

    Screenshot della configurazione del servizio collegato per Snowflake.

Dettagli di configurazione di Connessione or

Le sezioni seguenti forniscono informazioni dettagliate sulle proprietà che definiscono entità specifiche di un connettore Snowflake.

Proprietà del servizio collegato

Queste proprietà generiche sono supportate per il servizio collegato Snowflake:

Proprietà Descrizione Richiesto
type La proprietà type deve essere impostata su SnowflakeV2.
accountIdentifier Nome dell'account insieme alla relativa organizzazione. Ad esempio, myorg-account123.
database Database predefinito utilizzato per la sessione dopo la connessione.
warehouse Il warehouse virtuale predefinito usato per la sessione dopo la connessione.
authenticationType Tipo di autenticazione usato per connettersi al servizio Snowflake. I valori consentiti sono: Basic (Default) e KeyPair. Per altre proprietà ed esempi su ogni valore, vedere le sezioni corrispondenti di seguito. No
ruolo Ruolo di sicurezza predefinito usato per la sessione dopo la connessione. No
connectVia Runtime di integrazione usato per connettersi all'archivio dati. È possibile usare il runtime di integrazione di Azure o un runtime di integrazione self-hosted (se l'archivio dati si trova in una rete privata). Se non specificato, usa il runtime di integrazione di Azure predefinito. No

Questo connettore Snowflake supporta i tipi di autenticazione seguenti. Per informazioni dettagliate, vedere le sezioni corrispondenti.

Autenticazione di base

Per usare l'autenticazione di base , oltre alle proprietà generiche descritte nella sezione precedente, specificare le proprietà seguenti:

Proprietà Descrizione Richiesto
utente Nome di accesso per l'utente Snowflake.
password Password per l'utente Snowflake. Contrassegnare questo campo come tipo SecureString per archiviarlo in modo sicuro. È anche possibile fare riferimento a un segreto archiviato in Azure Key Vault.

Esempio:

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

Password in 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"
        }
    }
}

Nota

Il mapping Flusso di dati s supporta solo l'autenticazione di base.

Autenticazione della coppia di chiavi

Per usare l'autenticazione della coppia di chiavi, è necessario configurare e creare un utente di autenticazione della coppia di chiavi in Snowflake facendo riferimento all'autenticazione della coppia di chiavi e alla rotazione della coppia di chiavi. Successivamente, prendere nota della chiave privata e della passphrase (facoltativa), che si usa per definire il servizio collegato.

Oltre alle proprietà generiche descritte nella sezione precedente, specificare le proprietà seguenti:

Proprietà Descrizione Richiesto
utente Nome di accesso per l'utente Snowflake.
privateKey Chiave privata usata per l'autenticazione della coppia di chiavi.

Per assicurarsi che la chiave privata sia valida quando viene inviata ad Azure Data Factory e considerando che il file privateKey include caratteri di nuova riga (\n), è essenziale formattare correttamente il contenuto privateKey nel formato letterale stringa. Questo processo comporta l'aggiunta esplicita di \n a ogni nuova riga.
privateKeyPassphrase Passphrase usata per decrittografare la chiave privata, se crittografata. No

Esempio:

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

Proprietà del set di dati

Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione dei set di dati, vedere l'articolo Set di dati.

Per il set di dati Snowflake sono supportate le proprietà seguenti.

Proprietà Descrizione Richiesto
type La proprietà type del set di dati deve essere impostata su SnowflakeV2Table.
schema Nome dello schema. Si noti che il nome dello schema fa distinzione tra maiuscole e minuscole. No per l'origine, sì per sink
table Nome della tabella/vista. Si noti che il nome della tabella fa distinzione tra maiuscole e minuscole. No per l'origine, sì per sink

Esempio:

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

Proprietà dell'attività di copia

Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione delle attività, vedere l'articolo sulle pipeline. In questa sezione viene fornito un elenco delle proprietà supportate dall'origine e dal sink Snowflake.

Snowflake come fonte

Il connettore Snowflake usa il comando COPY di Snowflake in [location] per ottenere prestazioni ottimali.

Se l'archivio dati sink e il formato sono supportati in modo nativo dal comando Snowflake COPY, è possibile usare il attività Copy per copiare direttamente da Snowflake al sink. Per informazioni dettagliate, vedere Copia diretta da Snowflake. In caso contrario, usare la copia a fasi predefinita da Snowflake.

Per copiare dati da Snowflake, nella sezione origine attività Copy sono supportate le proprietà seguenti.

Proprietà Descrizione Richiesto
type La proprietà type dell'origine attività Copy deve essere impostata su SnowflakeV2Source.
query Specifica la query SQL per leggere i dati da Snowflake. Se i nomi dello schema, della tabella e delle colonne contengono lettere minuscole, virgolette l'identificatore dell'oggetto nella query, select * from "schema"."myTable"ad esempio .
L'esecuzione di stored procedure non è supportata.
No
export Impostazioni Impostazioni avanzate usate per recuperare i dati da Snowflake. È possibile configurare quelli supportati dal comando COPY nel quale il servizio passerà quando si richiama l'istruzione .
In exportSettings:
type Tipo di comando di esportazione, impostato su SnowflakeExportCopyCommand.
additionalCopyOptions Opzioni di copia aggiuntive, fornite come dizionario di coppie chiave-valore. Esempi: MAX_FILE_SIZE, OVERWRITE. Per altre informazioni, vedere Opzioni di copia Snowflake. No
additionalFormatOptions Opzioni di formato di file aggiuntive fornite al comando COPY come dizionario di coppie chiave-valore. Esempi: DATE_FORMAT, TIME_FORMAT, TIMESTAMP_FORMAT. Per altre informazioni, vedere Opzioni del tipo di formato Snowflake. No

Nota

Assicurarsi di disporre dell'autorizzazione per eseguire il comando seguente e accedere allo schema INFORMATION_SCHEMA e alla tabella COLUMNS.

  • COPY INTO <location>

Copia diretta da Snowflake

Se l'archivio dati sink e il formato soddisfano i criteri descritti in questa sezione, è possibile usare il attività Copy per copiare direttamente da Snowflake al sink. Il servizio controlla le impostazioni e non riesce l'esecuzione del attività Copy se i criteri seguenti non vengono soddisfatti:

  • Il servizio collegato sink è Archiviazione BLOB di Azure con autenticazione della firma di accesso condiviso. Se si vuole copiare direttamente i dati in Azure Data Lake Archiviazione Gen2 nel formato supportato seguente, è possibile creare un servizio collegato BLOB di Azure con autenticazione di firma di accesso condiviso per l'account ADLS Gen2, per evitare di usare la copia di staging da Snowflake.

  • Il formato dei dati sink è parquet, testo delimitato o JSON con le configurazioni seguenti:

    • Per il formato Parquet , il codec di compressione è None, Snappy o Lzo.
    • Per il formato di testo delimitato:
      • rowDelimiter è \r\n o qualsiasi singolo carattere.
      • compressionnon può essere una compressione, gzip, bzip2 o deflate.
      • encodingName è impostato sul valore predefinito o su utf-8.
      • quoteCharè virgoletta doppia, virgoletta singola o stringa vuota (senza virgolette char).
    • Per il formato JSON , la copia diretta supporta solo il caso in cui il risultato della tabella Snowflake o della query di origine abbia solo una singola colonna e il tipo di dati di questa colonna sia VARIANT, OBJECT o ARRAY.
      • compressionnon può essere una compressione, gzip, bzip2 o deflate.
      • encodingName è impostato sul valore predefinito o su utf-8.
      • filePattern nel sink dell'attività di copia viene lasciato come predefinito o impostato su setOfObjects.
  • Nell'origine additionalColumns dell'attività di copia non è specificata.

  • Il mapping delle colonne non è specificato.

Esempio:

"activities":[
    {
        "name": "CopyFromSnowflake",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Snowflake input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SnowflakeV2Source",
                "sqlReaderQuery": "SELECT * FROM MYTABLE",
                "exportSettings": {
                    "type": "SnowflakeExportCopyCommand",
                    "additionalCopyOptions": {
                        "MAX_FILE_SIZE": "64000000",
                        "OVERWRITE": true
                    },
                    "additionalFormatOptions": {
                        "DATE_FORMAT": "'MM/DD/YYYY'"
                    }
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Copia di staging da Snowflake

Quando l'archivio dati sink o il formato non è compatibile in modo nativo con il comando Snowflake COPY, come indicato nell'ultima sezione, abilitare la copia a fasi predefinita usando un'istanza di archiviazione BLOB di Azure temporanea. La funzionalità di copia a fasi offre anche una migliore velocità effettiva. Il servizio esporta i dati da Snowflake nell'archiviazione di staging, quindi copia i dati nel sink e infine pulisce i dati temporanei dall'archiviazione di staging. Per informazioni dettagliate sulla copia dei dati tramite staging, vedere Copia a fasi.

Per usare questa funzionalità, creare un servizio collegato di archiviazione BLOB di Azure che fa riferimento all'account di archiviazione di Azure come staging provvisorio. Specificare quindi le enableStaging proprietà e stagingSettings nella attività Copy.

Nota

Il servizio collegato archiviazione BLOB di Azure di staging deve usare l'autenticazione con firma di accesso condiviso, come richiesto dal comando Snowflake COPY. Assicurarsi di concedere l'autorizzazione di accesso appropriata a Snowflake nell'archivio BLOB di Azure di staging. Per altre informazioni, vedere questo articolo.

Esempio:

"activities":[
    {
        "name": "CopyFromSnowflake",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Snowflake input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SnowflakeV2Source",               
                "sqlReaderQuery": "SELECT * FROM MyTable",
                "exportSettings": {
                    "type": "SnowflakeExportCopyCommand"
                }
            },
            "sink": {
                "type": "<sink type>"
            },
            "enableStaging": true,
            "stagingSettings": {
                "linkedServiceName": {
                    "referenceName": "MyStagingBlob",
                    "type": "LinkedServiceReference"
                },
                "path": "mystagingpath"
            }
        }
    }
]

Fiocco di neve come sink

Il connettore Snowflake usa il comando COPY in [table] di Snowflake per ottenere prestazioni ottimali. Supporta la scrittura di dati in Snowflake in Azure.

Se l'archivio dati di origine e il formato sono supportati in modo nativo dal comando Snowflake COPY, è possibile usare il attività Copy per copiare direttamente dall'origine a Snowflake. Per informazioni dettagliate, vedere Copia diretta in Snowflake. In caso contrario, usare la copia a fasi predefinita in Snowflake.

Per copiare i dati in Snowflake, nella sezione sink di attività Copy sono supportate le proprietà seguenti.

Proprietà Descrizione Richiesto
type Proprietà type del sink attività Copy, impostata su SnowflakeV2Sink.
preCopyScript Specificare una query SQL per il attività Copy da eseguire prima di scrivere dati in Snowflake in ogni esecuzione. Usare questa proprietà per pulire i dati precaricati. No
import Impostazioni Impostazioni avanzate usate per scrivere dati in Snowflake. È possibile configurare quelli supportati dal comando COPY nel quale il servizio passerà quando si richiama l'istruzione .
In importSettings:
type Tipo di comando di importazione, impostato su SnowflakeImportCopyCommand.
additionalCopyOptions Opzioni di copia aggiuntive, fornite come dizionario di coppie chiave-valore. Esempi: ON_ERROR, FORCE, LOAD_UNCERTAIN_FILES. Per altre informazioni, vedere Opzioni di copia Snowflake. No
additionalFormatOptions Opzioni di formato di file aggiuntive fornite al comando COPY, fornite come dizionario di coppie chiave-valore. Esempi: DATE_FORMAT, TIME_FORMAT, TIMESTAMP_FORMAT. Per altre informazioni, vedere Opzioni del tipo di formato Snowflake. No

Nota

Assicurarsi di disporre dell'autorizzazione per eseguire il comando seguente e accedere allo schema INFORMATION_SCHEMA e alla tabella COLUMNS.

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

Copia diretta in Snowflake

Se l'archivio dati di origine e il formato soddisfano i criteri descritti in questa sezione, è possibile usare il attività Copy per copiare direttamente dall'origine a Snowflake. Il servizio controlla le impostazioni e non riesce l'esecuzione del attività Copy se i criteri seguenti non vengono soddisfatti:

  • Il servizio collegato di origine è Archiviazione BLOB di Azure con autenticazione della firma di accesso condiviso. Se si vuole copiare direttamente i dati da Azure Data Lake Archiviazione Gen2 nel formato supportato seguente, è possibile creare un servizio collegato BLOB di Azure con autenticazione di firma di accesso condiviso per l'account ADLS Gen2, per evitare di usare la copia di staging in Snowflake.

  • Il formato dei dati di origine è Parquet, Testo delimitato o JSON con le configurazioni seguenti:

    • Per il formato Parquet , il codec di compressione è Nessuno o Snappy.

    • Per il formato di testo delimitato:

      • rowDelimiter è \r\n o qualsiasi singolo carattere. Se il delimitatore di riga non è "\r\n", firstRowAsHeader deve essere false e skipLineCount non è specificato.
      • compressionnon può essere una compressione, gzip, bzip2 o deflate.
      • encodingName viene lasciato come predefinito o impostato su "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-8855", "ISO-885 9-9", "WINDOWS-1250", "WINDOWS-1251", "WINDOWS-1252", "WINDOWS-1253", "WINDOWS-1254", "WINDOWS-1255".
      • quoteCharè virgoletta doppia, virgoletta singola o stringa vuota (senza virgolette char).
    • Per il formato JSON , la copia diretta supporta solo il caso in cui la tabella Snowflake sink ha solo una colonna e il tipo di dati di questa colonna è VARIANT, OBJECT o ARRAY.

      • compressionnon può essere una compressione, gzip, bzip2 o deflate.
      • encodingName è impostato sul valore predefinito o su utf-8.
      • Il mapping delle colonne non è specificato.
  • Nell'origine attività Copy:

    • additionalColumns non è specificato.
    • Se l'origine è una cartella, recursive è impostata su true.
    • prefix, modifiedDateTimeStart, modifiedDateTimeEnd e enablePartitionDiscovery non sono specificati.

Esempio:

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

Copia di staging in Snowflake

Quando l'archivio dati o il formato di origine non sono compatibili in modo nativo con il comando Snowflake COPY, come indicato nell'ultima sezione, abilitare la copia a fasi predefinita usando un'istanza di archiviazione BLOB di Azure temporanea. La funzionalità di copia a fasi offre anche una migliore velocità effettiva. Il servizio converte automaticamente i dati in modo da soddisfare i requisiti di formato dei dati di Snowflake. Richiama quindi il comando COPY per caricare i dati in Snowflake. Infine, pulisce i dati temporanei dall'archiviazione BLOB. Per informazioni dettagliate sulla copia dei dati tramite staging, vedere Copia a fasi .

Per usare questa funzionalità, creare un servizio collegato di archiviazione BLOB di Azure che fa riferimento all'account di archiviazione di Azure come staging provvisorio. Specificare quindi le enableStaging proprietà e stagingSettings nella attività Copy.

Nota

Il servizio collegato archiviazione BLOB di Azure di staging deve usare l'autenticazione della firma di accesso condiviso come richiesto dal comando Snowflake COPY.

Esempio:

"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"
                }
            },
            "enableStaging": true,
            "stagingSettings": {
                "linkedServiceName": {
                    "referenceName": "MyStagingBlob",
                    "type": "LinkedServiceReference"
                },
                "path": "mystagingpath"
            }
        }
    }
]

Proprietà del flusso di dati per mapping

Quando si trasformano i dati nel flusso di dati di mapping, è possibile leggere e scrivere nelle tabelle in Snowflake. Per altre informazioni, vedere la trasformazione origine e la trasformazione sink nei flussi di dati per mapping. È possibile scegliere di usare un set di dati Snowflake o un set di dati inline come tipo di origine e sink.

Trasformazione origine

Nella tabella seguente sono elencate le proprietà supportate dall'origine Snowflake. È possibile modificare queste proprietà nella scheda Opzioni origine. Il connettore usa il trasferimento interno di Snowflake.

Nome Descrizione Richiesto Valori consentiti Proprietà script flusso di dati
Tabella Se si seleziona Tabella come input, il flusso di dati recupera tutti i dati dalla tabella specificata nel set di dati Snowflake o nelle opzioni di origine quando si usa il set di dati inline. No String (solo per set di dati inline)
tableName
schemaName
Query Se si seleziona Query come input, immettere una query per recuperare i dati da Snowflake. Questa impostazione esegue l'override di qualsiasi tabella scelta nel set di dati.
Se i nomi dello schema, della tabella e delle colonne contengono lettere minuscole, virgolette l'identificatore dell'oggetto nella query, select * from "schema"."myTable"ad esempio .
No String query
Abilitare l'estrazione incrementale (anteprima) Usare questa opzione per indicare ad ADF di elaborare solo le righe modificate dall'ultima esecuzione della pipeline. No Booleano enableCdc
Colonna incrementale Quando si usa la funzionalità di estrazione incrementale, è necessario scegliere la colonna data/ora/numerica da usare come filigrana nella tabella di origine. No String waterMarkColumn
Abilitare snowflake Rilevamento modifiche (anteprima) Questa opzione consente a Azure Data Factory di sfruttare la tecnologia snowflake change data capture per elaborare solo i dati differenziali dall'esecuzione precedente della pipeline. Questa opzione carica automaticamente i dati differenziali con operazioni di inserimento, aggiornamento ed eliminazione di righe senza richiedere alcuna colonna incrementale. No Booleano enableNativeCdc
Modifiche nette Quando si usa il rilevamento delle modifiche snowflake, è possibile usare questa opzione per ottenere le righe modificate deduplicate o le modifiche complete. Le righe modificate deduplicate mostreranno solo le versioni più recenti delle righe modificate da un determinato punto nel tempo, mentre le modifiche complete mostreranno tutte le versioni di ogni riga modificata, incluse quelle eliminate o aggiornate. Ad esempio, se si aggiorna una riga, verrà visualizzata una versione di eliminazione e una versione di inserimento in modifiche complete, ma solo la versione di inserimento nelle righe modificate deeduped. A seconda del caso d'uso, è possibile scegliere l'opzione più adatta alle proprie esigenze. L'opzione predefinita è false, il che significa modifiche complete. No Booleano netChanges
Includi colonne di sistema Quando si usa il rilevamento delle modifiche snowflake, è possibile usare l'opzione systemColumns per controllare se le colonne del flusso di metadati fornite da Snowflake sono incluse o escluse nell'output del rilevamento delle modifiche. Per impostazione predefinita, systemColumns è impostato su true, ovvero le colonne del flusso di metadati sono incluse. È possibile impostare systemColumns su false se si desidera escluderli. No Booleano systemColumns
Iniziare a leggere dall'inizio L'impostazione di questa opzione con l'estrazione incrementale e il rilevamento delle modifiche indicherà a Azure Data Factory di leggere tutte le righe alla prima esecuzione di una pipeline con estrazione incrementale attivata. No Booleano skipInitialLoad

Esempi di script di origine Snowflake

Quando si usa il set di dati Snowflake come tipo di origine, lo script del flusso di dati associato è:

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

Se si usa un set di dati inline, lo script del flusso di dati associato è:

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

Rilevamento modifiche nativo

Azure Data Factory supporta ora una funzionalità nativa in Snowflake nota come rilevamento delle modifiche, che comporta il rilevamento delle modifiche sotto forma di log. Questa funzionalità di snowflake consente di tenere traccia delle modifiche apportate ai dati nel tempo, rendendola utile per il caricamento e il controllo incrementali dei dati. Per utilizzare questa funzionalità, quando si abilita Change Data Capture e si seleziona l'Rilevamento modifiche Snowflake, viene creato un oggetto Stream per la tabella di origine che abilita il rilevamento delle modifiche nella tabella snowflake di origine. Successivamente, viene usata la clausola CHANGES nella query per recuperare solo i dati nuovi o aggiornati dalla tabella di origine. È inoltre consigliabile pianificare la pipeline in modo che le modifiche vengano utilizzate entro l'intervallo di tempo di conservazione dei dati impostato per la tabella di origine snowflake. In caso contrario, l'utente potrebbe vedere un comportamento incoerente nelle modifiche acquisite.

Trasformazione sink

Nella tabella seguente sono elencate le proprietà supportate dal sink Snowflake. È possibile modificare queste proprietà nella scheda Impostazioni. Quando si usa il set di dati inline, verranno visualizzate impostazioni aggiuntive, che corrispondono alle proprietà descritte nella sezione proprietà del set di dati. Il connettore usa il trasferimento interno di Snowflake.

Nome Descrizione Richiesto Valori consentiti Proprietà script flusso di dati
Metodo di aggiornamento Specificare le operazioni consentite nella destinazione Snowflake.
Per aggiornare, upsert o eliminare righe, è necessaria una trasformazione Alter row per contrassegnare le righe per tali azioni.
true oppure false deletable
Inseribile
Aggiornabile
aggiornabile
Colonne chiave Per le operazioni di aggiornamento, upsert ed eliminazione è necessario impostare una o più colonne chiave per determinare quale riga modificare. No Matrice keys
azione Tabella determina se ricreare o rimuovere tutte le righe dalla tabella di destinazione prima della scrittura.
- Nessuno: nessuna azione verrà eseguita nella tabella.
- Ricrea: la tabella verrà eliminata e ricreata. Questa opzione è obbligatoria se si crea una nuova tabella in modo dinamico.
- Troncamento: tutte le righe della tabella di destinazione verranno rimosse.
No true oppure false Ricreare
truncate

Esempi di script sink Snowflake

Quando si usa il set di dati Snowflake come tipo di sink, lo script del flusso di dati associato è:

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

Se si usa un set di dati inline, lo script del flusso di dati associato è:

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

Ottimizzazione pushdown query

Impostando il livello di registrazione della pipeline su Nessuno, si esclude la trasmissione delle metriche di trasformazione intermedia, impedendo potenziali ostacoli alle ottimizzazioni spark e abilitando l'ottimizzazione pushdown delle query fornita da Snowflake. Questa ottimizzazione pushdown consente miglioramenti sostanziali delle prestazioni per tabelle Snowflake di grandi dimensioni con set di dati estesi.

Nota

Non sono supportate tabelle temporanee in Snowflake, perché sono locali per la sessione o l'utente che li crea, rendendole inaccessibili ad altre sessioni e soggette a sovrascrivere come tabelle regolari da Snowflake. Anche se Snowflake offre tabelle temporanee come alternativa, accessibili a livello globale, richiedono l'eliminazione manuale, contraddicendo l'obiettivo principale dell'uso delle tabelle temp, evitando qualsiasi operazione di eliminazione nello schema di origine.

Proprietà dell'attività Lookup

Per altre informazioni sulle proprietà, vedere Attività di ricerca.

Aggiornare il servizio collegato Snowflake

Per aggiornare il servizio collegato Snowflake, creare un nuovo servizio collegato Snowflake e configurarlo facendo riferimento alle proprietà del servizio collegato.

Differenze tra Snowflake e Snowflake (legacy)

Il connettore Snowflake offre nuove funzionalità ed è compatibile con la maggior parte delle funzionalità del connettore Snowflake (legacy). La tabella seguente illustra le differenze di funzionalità tra Snowflake e Snowflake (legacy).

Snowflake Snowflake (legacy)
Supportare l'autenticazione della coppia di chiavi e di base. Supportare l'autenticazione di base.
I parametri script non sono attualmente supportati nell'attività Script. In alternativa, usare espressioni dinamiche per i parametri di script. Per altre informazioni, vedere Espressioni e funzioni in Azure Data Factory e Azure Synapse Analytics. Supportare i parametri di script nell'attività Script.
L'esecuzione di più istruzioni SQL nell'attività script non è attualmente supportata. Per eseguire più istruzioni SQL, dividere la query in diversi blocchi di script. Supportare l'esecuzione di più istruzioni SQL nell'attività script.
Supportare BigDecimal nell'attività Lookup. Il tipo NUMBER, come definito in Snowflake, verrà visualizzato come stringa nell'attività Lookup. BigDecimal non è supportato nell'attività Lookup.

Per un elenco degli archivi dati supportati come origini e sink da attività Copy, vedere archivi dati e formati supportati.