Delen via


Gegevens kopiëren en transformeren in Snowflake V2 met behulp van Azure Data Factory of Azure Synapse Analytics

VAN TOEPASSING OP: Azure Data Factory Azure Synapse Analytics

Aanbeveling

Probeer Data Factory uit in Microsoft Fabric, een alles-in-één analyseoplossing voor ondernemingen. Microsoft Fabric omvat alles, van gegevensverplaatsing tot gegevenswetenschap, realtime analyses, business intelligence en rapportage. Meer informatie over het gratis starten van een nieuwe proefversie .

In dit artikel wordt beschreven hoe u de Copy-activiteit in Azure Data Factory- en Azure Synapse-pijplijnen gebruikt om gegevens van en naar Snowflake te kopiëren en Gegevensstroom te gebruiken om gegevens in Snowflake te transformeren. Zie het inleidende artikel voor Data Factory of Azure Synapse Analytics voor meer informatie.

Belangrijk

De Snowflake V2-connector biedt verbeterde systeemeigen Ondersteuning voor Snowflake. Als u de Snowflake V1-connector in uw oplossing gebruikt, wordt u aangeraden uw Snowflake-connector vóór 30 juni 2025 te upgraden. Raadpleeg deze sectie voor meer informatie over het verschil tussen V2 en V1.

Ondersteunde mogelijkheden

Deze Snowflake-connector wordt ondersteund voor de volgende mogelijkheden:

Ondersteunde mogelijkheden IR
Copy-activiteit (bron/afvoer) (1) (2)
Gegevensstroom toewijzen (bron/bestemming) (1)
Zoekactiviteit (1) (2)
Scriptactiviteit (versie 1.1 (preview) toepassen wanneer u de scriptparameter gebruikt) (1) (2)

(1) Azure integratie-runtime (2) Zelf-gehoste integratie-runtime

Voor de Copy-activiteit ondersteunt deze Snowflake-connector de volgende functies:

  • Kopieer gegevens uit Snowflake met behulp van het COPY into [location]-commando van Snowflake om de beste prestaties te bereiken.
  • Kopieer gegevens naar Snowflake die gebruikmaken van Snowflake's COPY into [table]-opdracht om de beste prestaties te bereiken. Het biedt ondersteuning voor Snowflake in Azure.
  • Als een proxy is vereist om vanuit een zelf-hostende Integration Runtime verbinding te maken met Snowflake, moet u de omgevingsvariabelen configureren voor HTTP_PROXY en HTTPS_PROXY op de Integration Runtime-host.

Vereisten

Als uw gegevensarchief zich in een on-premises netwerk, een virtueel Azure-netwerk of een virtuele particuliere cloud van Amazon bevindt, moet u een zelf-hostende Integration Runtime configureren om er verbinding mee te maken. Zorg ervoor dat u de IP-adressen toevoegt die de zelf-hostende Integration Runtime gebruikt voor de lijst met toegestane adressen.

Als uw gegevensarchief een beheerde cloudgegevensservice is, kunt u De Azure Integration Runtime gebruiken. Als de toegang is beperkt tot IP-adressen die zijn goedgekeurd in de firewallregels, kunt u IP-adressen van Azure Integration Runtime toevoegen aan de lijst met toegestane adressen.

Het Snowflake-account dat wordt gebruikt voor bron of sink, moet de benodigde USAGE toegang hebben tot de database en lees-/schrijftoegang voor het schema en de tabellen/weergaven eronder. Daarnaast moet het ook CREATE STAGE onderdeel van het schema zijn om de Externe fase te kunnen maken met SAS URI.

De volgende waarden voor accounteigenschappen moeten worden ingesteld

Eigendom Beschrijving Vereist Standaard
OPSLAGINTEGRATIE_VEREISD_VOOR_AANMAKEN_VAN_STAGE Hiermee specificeert u of een opslagintegratieobject vereist is als cloudauthorisatie bij het creëren van een genaamde externe fase (met CREATE STAGE) om toegang te krijgen tot een opslaglocatie in de privécloud. ONWAAR ONWAAR
OPSLAGINTEGRATIE VEREIST VOOR FASEOPERATIE Hiermee geeft u op of u een benoemde externe fase wilt gebruiken die verwijst naar een opslagintegratieobject als cloudreferenties bij het laden van gegevens uit of het verwijderen van gegevens naar een opslaglocatie in de privécloud. ONWAAR ONWAAR

Zie Strategieën voor gegevenstoegang voor meer informatie over de netwerkbeveiligingsmechanismen en -opties die door Data Factory worden ondersteund.

Aan de slag

Als u de kopieeractiviteit wilt uitvoeren met een pijplijn, kunt u een van de volgende hulpprogramma's of SDK's gebruiken:

Een gekoppelde service maken voor Snowflake met behulp van de gebruikersinterface

Gebruik de volgende stappen om een gekoppelde service te maken voor Snowflake in de gebruikersinterface van Azure Portal.

  1. Blader naar het tabblad Beheren in uw Azure Data Factory- of Synapse-werkruimte en selecteer Gekoppelde services en klik vervolgens op Nieuw:

  2. Zoek naar Snowflake en selecteer de Snowflake-connector.

    Schermopname van de Snowflake-connector.

  3. Configureer de servicedetails, test de verbinding en maak de nieuwe gekoppelde service.

    Schermopname van de configuratie van de gekoppelde service voor Snowflake.

Details van de configuratie van de connector

De volgende secties bevatten details over eigenschappen waarmee entiteiten worden gedefinieerd die specifiek zijn voor een Snowflake-connector.

Eigenschappen van gekoppelde service

Deze algemene eigenschappen worden ondersteund voor de gekoppelde Snowflake-service:

Eigendom Beschrijving Vereist
soort De eigenschap type moet worden ingesteld op SnowflakeV2. Ja
Versie De versie die je opgeeft. U kunt het beste upgraden naar de nieuwste versie om te profiteren van de nieuwste verbeteringen. Ja voor versie 1.1 (preview)
accountIdentifier De naam van het account samen met de naam van de organisatie. Bijvoorbeeld myorg-account123. Ja
gegevensbank De standaarddatabase die wordt gebruikt voor de sessie nadat u verbinding hebt gemaakt. Ja
magazijn Het standaard virtuele magazijn dat wordt gebruikt voor de sessie nadat u verbinding hebt gemaakt. Ja
authenticatietype Type verificatie dat wordt gebruikt om verbinding te maken met de Snowflake-service. Toegestane waarden zijn: Basic (Standaard) en KeyPair. Raadpleeg de bijbehorende secties hieronder over respectievelijk meer eigenschappen en voorbeelden. Nee
rol De standaardbeveiligingsrol die wordt gebruikt voor de sessie nadat u verbinding hebt gemaakt. Nee
gastheer De hostnaam van het Snowflake-account. Voorbeeld: contoso.snowflakecomputing.com. .cn wordt ook ondersteund. Nee
connectVia De integratieruntime die wordt gebruikt om verbinding te maken met het gegevensarchief. U kunt de Azure Integration Runtime of een zelf-hostende Integration Runtime gebruiken (als uw gegevensarchief zich in een privénetwerk bevindt). Als dit niet is opgegeven, wordt de standaard Azure Integration Runtime gebruikt. Nee

Deze Snowflake-connector ondersteunt de volgende verificatietypen. Zie de bijbehorende secties voor meer informatie.

Basisverificatie

Als u basisverificatie wilt gebruiken, geeft u naast de algemene eigenschappen die in de vorige sectie worden beschreven, de volgende eigenschappen op:

Eigendom Beschrijving Vereist
Gebruiker Aanmeldingsnaam voor de Snowflake-gebruiker. Ja
wachtwoord Het wachtwoord voor de Snowflake-gebruiker. Markeer dit veld als een SecureString-type om het veilig op te slaan. U kunt ook verwijzen naar een geheim dat is opgeslagen in Azure Key Vault. Ja

Voorbeeld:

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

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

Verificatie van sleutelpaar

Als u sleutelpaarverificatie wilt gebruiken, moet u een verificatiegebruiker voor sleutelpaar configureren en maken in Snowflake door te verwijzen naar sleutelpaarverificatie en sleutelpaarrotatie. Noteer daarna de persoonlijke sleutel en de wachtwoordzin (optioneel), die u gebruikt om de gekoppelde service te definiëren.

Geef naast de algemene eigenschappen die in de vorige sectie worden beschreven, de volgende eigenschappen op:

Eigendom Beschrijving Vereist
Gebruiker Aanmeldingsnaam voor de Snowflake-gebruiker. Ja
privésleutel De persoonlijke sleutel die wordt gebruikt voor de verificatie van het sleutelpaar.

Om ervoor te zorgen dat de persoonlijke sleutel geldig is wanneer deze wordt verzonden naar Azure Data Factory en rekening houdend met het feit dat het privateKey-bestand newlinetekens (\n) bevat, is het essentieel om de privateKey-inhoud correct op te maken in de letterlijke vorm van de tekenreeks. Dit proces omvat het expliciet toevoegen van \n aan elke nieuwe regel.
Ja
privé-sleutelwachtwoord De wachtwoordzin die wordt gebruikt voor het ontsleutelen van de persoonlijke sleutel, als deze is versleuteld. Nee

Voorbeeld:

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

Notitie

Voor het in kaart brengen van gegevensstromen raden we aan een nieuwe RSA-privésleutel te genereren met behulp van de PKCS#8-standaard in PEM-indeling (.p8-bestand).

Eigenschappen van gegevensset

Zie het artikel Gegevenssets voor een volledige lijst met secties en eigenschappen die beschikbaar zijn voor het definiëren van gegevenssets .

De volgende eigenschappen worden ondersteund voor de Snowflake-gegevensset.

Eigendom Beschrijving Vereist
soort De typeeigenschap van de gegevensset moet worden ingesteld op SnowflakeV2Table. Ja
overzicht Naam van het schema. Houd er rekening mee dat de schemanaam hoofdlettergevoelig is. Nee voor bron, ja voor sink
tafel Naam van de tabel/weergave. Let op: de tabelnaam is hoofdlettergevoelig. Nee voor bron, ja voor sink

Voorbeeld:

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

Eigenschappen van de kopieeractiviteit

Zie het artikel Pijplijnen voor een volledige lijst met secties en eigenschappen die beschikbaar zijn voor het definiëren van activiteiten. Deze sectie bevat een lijst met eigenschappen die worden ondersteund door de Snowflake-bron en -sink.

Snowflake als bron

Snowflake-connector maakt gebruik van de opdracht COPY naar [location] van Snowflake om de beste prestaties te bereiken.

Als het gegevensarchief en de indeling van de sink door de Snowflake COPY-opdracht worden ondersteund, kunt u de kopieeractiviteit gebruiken om rechtstreeks vanuit Snowflake naar de sink te kopiëren. Zie Direct copy from Snowflake voor meer informatie. Gebruik in plaats daarvan de ingebouwde stapsgewijze kopie uit Snowflake.

Als u gegevens uit Snowflake wilt kopiëren, worden de volgende eigenschappen ondersteund in de kopieeractiviteit sectie bron.

Eigendom Beschrijving Vereist
soort De typeeigenschap van de Copy-activiteit bron moet worden ingesteld op SnowflakeV2Source. Ja
zoekopdracht Hiermee geeft u de SQL-query op voor het lezen van gegevens uit Snowflake. Als de namen van het schema, de tabel en de kolommen kleine letters bevatten, noemt u de object-id in de query, bijvoorbeeld select * from "schema"."myTable".
Het uitvoeren van een opgeslagen procedure wordt niet ondersteund.
Nee
exportinstellingen Geavanceerde instellingen die worden gebruikt om gegevens op te halen uit Snowflake. U kunt de opties configureren die worden ondersteund door het COPY-commando dat de service doorgeeft wanneer u de instructie aanroept. Ja
Onder exportSettings:
soort Het type exportopdracht, ingesteld op SnowflakeExportCopyCommand. Ja
opslagintegratie Geef de naam op van uw opslagintegratie die u in Snowflake hebt gemaakt. Zie Een Snowflake-opslagintegratie configureren voor de vereiste stappen voor het gebruik van de opslagintegratie. Nee
aanvullende kopieeropties Extra kopieeropties, aangeboden als een woordenlijst van sleutel-waardeparen. Voorbeelden: MAX_FILE_SIZE, OVERWRITE. Zie Snowflake Copy Options voor meer informatie. Nee
aanvullende opmaakopties Aanvullende bestandsindelingsopties die worden aangeboden aan de opdracht COPY als een woordenboek van sleutel-waardeparen. Voorbeelden: DATE_FORMAT, TIME_FORMAT, TIMESTAMP_FORMAT, NULL_IF. Voor meer informatie, zie Opties voor het Snowflake-indelingstype.

Wanneer u NULL_IF gebruikt, wordt de NULL-waarde in Snowflake geconverteerd naar de opgegeven waarde (die tussen aanhalingstekens moet staan) bij het opslaan in het tekstbestand met scheidingstekens in de faseringsopslag. Deze opgegeven waarde wordt behandeld als NULL bij het lezen van het faseringsbestand naar de sinkopslag. De standaardwaarde is 'NULL'.
Nee

Notitie

Zorg ervoor dat u gemachtigd bent om de volgende opdracht uit te voeren en toegang te krijgen tot het schema INFORMATION_SCHEMA en de tabelKOLOMMEN.

  • COPY INTO <location>

Directe kopie van Snowflake

Als uw sinkgegevensarchief en -indeling voldoen aan de criteria die in deze sectie worden beschreven, kunt u de Copy-activiteit gebruiken om rechtstreeks vanuit Snowflake naar sink te kopiëren. De service controleert de instellingen en laat de Copy-activiteit mislukken als niet aan het volgende criterium wordt voldaan.

  • Wanneer u storageIntegration in de bron opgeeft

    De sink-gegevensopslag is de Azure Blob Storage waarnaar u in de externe stage in Snowflake hebt verwezen. U moet de volgende stappen uitvoeren voordat u gegevens kopieert:

    1. Maak een gekoppelde Azure Blob Storage-service voor de sink Azure Blob Storage met ondersteunde verificatietypen.

    2. Ken ten minste de rol Storage Blob Data Bijdrager toe aan de Snowflake-service-principal in de doellocatie Azure Blob Storage Access Control (IAM).

  • Wanneer u storageIntegration niet specificeert in de bron:

    De gekoppelde doelservice is Azure Blob-opslag met Shared Access Signature-authenticatie. Als u gegevens rechtstreeks naar Azure Data Lake Storage Gen2 wilt kopiëren in de volgende ondersteunde indeling, kunt u een gekoppelde Azure Blob Storage-service met SAS-verificatie maken voor uw Azure Data Lake Storage Gen2-account om gefaseerde kopie uit Snowflake te voorkomen.

  • De sinkgegevensindeling is van Parquet, gescheiden tekst of JSON met de volgende configuraties:

    • Voor het Parquet-formaat is de compressiecodec Geen compressie, Snappy of Lzo.
    • Voor tekst met scheidingstekens :
      • rowDelimiter is \r\n of een willekeurig teken.
      • compression kan geen compressie, gzip, bzip2 of deflate zijn.
      • encodingName blijft standaard of wordt ingesteld op utf-8.
      • quoteChar is dubbele aanhalingstekens, enkele aanhalingstekens, of lege tekenreeks (geen aanhalingsteken).
    • Voor JSON-indeling ondersteunt direct kopiëren alleen het geval waarin de Snowflake-brontabel of het queryresultaat slechts één kolom heeft en het gegevenstype van deze kolom VARIANT, OBJECT of ARRAY is.
      • compression kan geen compressie, gzip, bzip2 of deflate zijn.
      • encodingName blijft standaard of wordt ingesteld op utf-8.
      • filePattern in de sink voor kopieeractiviteiten is standaard ingesteld of ingesteld op SetOfObjects.
  • In bron additionalColumns van kopieeractiviteit is niet opgegeven.

  • Kolomtoewijzing is niet opgegeven.

Voorbeeld:

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

Gefaseerde kopie van Snowflake

Wanneer uw sinkgegevensarchief of -indeling niet systeemeigen compatibel is met de opdracht Snowflake COPY, zoals aangegeven in de laatste sectie, moet u de ingebouwde gefaseerde kopie inschakelen met behulp van een tussentijdse Azure Blob Storage-instantie. De functie voor gefaseerde kopie biedt u ook een betere doorvoer. De service exporteert gegevens uit Snowflake naar faseringsopslag, kopieert de gegevens naar sink en schoont ten slotte uw tijdelijke gegevens op uit de faseringsopslag. Zie Gefaseerde kopie voor meer informatie over het kopiëren van gegevens met behulp van fasering.

Als u deze functie wilt gebruiken, maakt u een gekoppelde Azure Blob Storage-service die verwijst naar het Azure-opslagaccount als tijdelijke fasering. Geef vervolgens de enableStaging en stagingSettings eigenschappen op in de Copy-activiteit.

  • Wanneer u in de bron storageIntegration opgeeft, moet Azure Blob Storage voor tijdelijke opslag de tijdelijke opslag zijn waarnaar u in de externe fase in Snowflake hebt verwezen. Zorg ervoor dat u een gekoppelde Azure Blob Storage-service maakt met elke ondersteunde verificatie wanneer u de Azure Integration Runtime gebruikt, of met anonieme verificatie, accountsleutel, gedeelde toegangshandtekening of service-principal-verificatie wanneer u de zelf-gehoste Integration Runtime gebruikt. Bovendien moet u ten minste de rol Inzender voor opslagblobgegevens toekennen aan de Snowflake-service-principal in de staging Azure Blob Storage Access Control (IAM).

  • Wanneer u storageIntegration niet opgeeft in de bron, moet de gekoppelde Azure Blob Storage-service gebruikmaken van gedeelde toegangssignatuur-verificatie, zoals vereist door het Snowflake COPY-commando. Zorg ervoor dat u de juiste toegang verleent aan Snowflake in de stagingomgeving van Azure Blob Storage. Zie dit artikel voor meer informatie.

Voorbeeld:

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

Wanneer u een gefaseerde kopie uitvoert vanuit Snowflake, is het van cruciaal belang om het gedrag van sinkkopie in te stellen op Bestanden samenvoegen. Deze instelling zorgt ervoor dat alle gepartitioneerde bestanden correct worden verwerkt en samengevoegd, waardoor het probleem wordt voorkomen dat alleen het laatste gepartitioneerde bestand wordt gekopieerd.

Voorbeeldconfiguratie

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

Notitie

Als u het gedrag van de sinkkopie niet instelt om bestanden samen te voegen, kan dit ertoe leiden dat alleen het laatste gepartitioneerde bestand wordt gekopieerd.

Snowflake is de bestemming

De Snowflake-connector maakt gebruik van het COPY into [tabel] commando van Snowflake om optimale prestaties te bereiken. Het biedt ondersteuning voor het schrijven van gegevens naar Snowflake in Azure.

Als de brongegevensopslag en -indeling systeemeigen worden ondersteund door de opdracht Snowflake COPY, kunt u de Copy-activiteit gebruiken om rechtstreeks van de bron naar Snowflake te kopiëren. Zie Direct kopiëren naar Snowflake voor meer informatie. Gebruik anderszins de ingebouwde gefaseerde kopie naar Snowflake.

Als u gegevens naar Snowflake wilt kopiëren, worden de volgende eigenschappen ondersteund in de sectie Copy-activiteit sink.

Eigendom Beschrijving Vereist
soort De typeeigenschap van de Copy-activiteit sink, ingesteld op SnowflakeV2Sink. Ja
preCopyScript Geef in elke uitvoering een SQL-query op voor de Copy-activiteit die moet worden uitgevoerd voordat u gegevens in Snowflake schrijft. Gebruik deze eigenschap om de vooraf geladen gegevens op te schonen. Nee
importinstellingen Geavanceerde instellingen die worden gebruikt om gegevens naar Snowflake te schrijven. U kunt de opties configureren die worden ondersteund door het COPY-commando dat de service doorgeeft wanneer u de instructie aanroept. Ja
Onder importSettings:
soort Het type importopdracht, ingesteld op SnowflakeImportCopyCommand. Ja
opslagintegratie Geef de naam op van uw opslagintegratie die u in Snowflake hebt gemaakt. Zie Een Snowflake-opslagintegratie configureren voor de vereiste stappen voor het gebruik van de opslagintegratie. Nee
aanvullende kopieeropties Extra kopieeropties, aangeboden als een woordenlijst van sleutel-waardeparen. Voorbeelden: ON_ERROR, FORCE, LOAD_UNCERTAIN_FILES. Zie Snowflake Copy Options voor meer informatie. Nee
aanvullende opmaakopties Aanvullende bestandsindelingsopties die beschikbaar zijn voor de opdracht COPY, opgegeven als een woordenlijst van sleutel-waardeparen. Voorbeelden: DATE_FORMAT, TIME_FORMAT, TIMESTAMP_FORMAT. Voor meer informatie, zie Opties voor het Snowflake-indelingstype. Nee

Notitie

Zorg ervoor dat u gemachtigd bent om de volgende opdracht uit te voeren en toegang te krijgen tot het schema INFORMATION_SCHEMA en de tabelKOLOMMEN.

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

Directe kopie naar Snowflake

Als uw brongegevensarchief en -indeling voldoen aan de criteria die in deze sectie worden beschreven, kunt u de Copy-activiteit gebruiken om rechtstreeks van bron naar Snowflake te kopiëren. De service controleert de instellingen en laat de Copy-activiteit mislukken als niet aan het volgende criterium wordt voldaan.

  • Wanneer u storageIntegration opgeeft in de ontvanger:

    Het brongegevensarchief is de Azure Blob Storage waarnaar u in de externe fase in Snowflake hebt verwezen. U moet de volgende stappen uitvoeren voordat u gegevens kopieert:

    1. Maak een gekoppelde Azure Blob Storage-service voor de bron-Azure Blob Storage met ondersteunde verificatietypen.

    2. Wijs ten minste de rol Storage Blob Data Reader toe aan de Snowflake-service-principal in de bron Azure Blob Storage Toegangsbeheer (IAM).

  • Wanneer u storageIntegration niet specificeert in de gegevensbron:

    De gekoppelde bronservice is Azure Blob Storage met handtekeningverificatie voor gedeelde toegang. Als u gegevens rechtstreeks vanuit Azure Data Lake Storage Gen2 wilt kopiëren in de volgende ondersteunde indeling, kunt u een gekoppelde Azure Blob Storage-service met SAS-verificatie maken voor uw Azure Data Lake Storage Gen2-account om gefaseerde kopie naar Snowflake te voorkomen.

  • De bron gegevens indeling is Parquet, gescheiden tekst of JSON met de volgende configuraties:

    • Voor het Parquet-formaat is er geen compressiecodec, of wordt Snappy gebruikt.

    • Voor gescheiden tekst-formaat:

      • rowDelimiter is \r\n of een willekeurig teken. Als het scheidingsteken voor rijen niet '\r\n' is, firstRowAsHeader moet onwaar zijn en dat skipLineCount niet is opgegeven.
      • compression kan geen compressie, gzip, bzip2 of deflate zijn.
      • encodingName wordt standaard gelaten of ingesteld op "UTF-8", "UTF-16", "UTF-16BE", "UTF-32", "UTF-32BE", "BIG5", "EUC-JP", "EUC-KR", "GB18030", "ISO-2022-JP", "ISO-2022-KR", "ISO-8859-1", "ISO-8859-2", "ISO-8859-5", "ISO-8859-6", "ISO-8859-7", "ISO-8859-8", "ISO-8859-9", "WINDOWS-1250", "WINDOWS-1251", "WINDOWS-1252", "WINDOWS-1253", "WINDOWS-1254", "WINDOWS-1255".
      • quoteChar is dubbele aanhalingstekens, enkele aanhalingstekens, of lege tekenreeks (geen aanhalingsteken).
    • Voor JSON-indeling ondersteunt direct kopiëren alleen het geval dat de sink Snowflake-tabel slechts één kolom heeft en het gegevenstype van deze kolom VARIANT, OBJECT of ARRAY is.

      • compression kan geen compressie, gzip, bzip2 of deflate zijn.
      • encodingName blijft standaard of wordt ingesteld op utf-8.
      • Kolomtoewijzing is niet opgegeven.
  • In de bron van de Copy-activiteit:

    • additionalColumns is niet opgegeven.
    • Als uw bron een map is, is recursive ingesteld op waar.
    • prefix, modifiedDateTimeStart, modifiedDateTimeEnden enablePartitionDiscovery worden niet opgegeven.

Voorbeeld:

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

Gefaseerde kopie naar Snowflake

Wanneer uw brongegevensarchief of -indeling niet systeemeigen compatibel is met de opdracht Snowflake COPY, zoals vermeld in de laatste sectie, schakelt u de ingebouwde gefaseerde kopie in met behulp van een tussentijdse Instantie van Azure Blob Storage. De functie voor gefaseerde kopie biedt u ook een betere doorvoer. De service converteert de gegevens automatisch om te voldoen aan de vereisten voor gegevensindeling van Snowflake. Vervolgens wordt de opdracht COPY aangeroepen om gegevens in Snowflake te laden. Ten slotte worden uw tijdelijke gegevens uit de blobopslag verwijderd. Zie Gefaseerde kopie voor meer informatie over het kopiëren van gegevens met behulp van fasering.

Als u deze functie wilt gebruiken, maakt u een gekoppelde Azure Blob Storage-service die verwijst naar het Azure-opslagaccount als tijdelijke fasering. Geef vervolgens de enableStaging en stagingSettings eigenschappen op in de Copy-activiteit.

  • Wanneer u opgeeft storageIntegration in de sink, moet de tijdelijke fasering van Azure Blob Storage de tijdelijke fasering zijn die u in de externe fase in Snowflake hebt genoemd. Zorg ervoor dat u een gekoppelde Azure Blob Storage-service maakt met elke ondersteunde verificatie wanneer u de Azure Integration Runtime gebruikt, of met anonieme verificatie, accountsleutel, gedeelde toegangshandtekening of service-principal-verificatie wanneer u de zelf-gehoste Integration Runtime gebruikt. Bovendien verleent u ten minste de rol Storage Blob Data Reader aan de Snowflake-service-principal in de staging Azure Blob Storage Access Control (IAM).

  • Wanneer u storageIntegration niet in de sink opgeeft, moet de gekoppelde service voor fasering van Azure Blob Storage gebruikmaken van shared access signature-verificatie, zoals vereist door het Snowflake COPY-commando.

Voorbeeld:

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

Eigenschappen van gegevensstroommapping

Wanneer u gegevens transformeert in de toewijzingsgegevensstroom, kunt u lezen van en schrijven naar tabellen in Snowflake. Voor meer informatie, zie de brontransformatie en sinktransformatie in gegevensstromen in mapping. U kunt ervoor kiezen om een Snowflake-gegevensset of een inlinegegevensset te gebruiken als bron- en sinktype.

Brontransformatie

De onderstaande tabel bevat de eigenschappen die worden ondersteund door de Snowflake-bron. U kunt deze eigenschappen bewerken op het tabblad Bronopties. De connector maakt gebruik van interne gegevensoverdracht van Snowflake.

Naam Beschrijving Vereist Toegestane waarden Gegevensstroomscript-eigenschap
Tabel Als u Tabel als invoer selecteert, haalt de gegevensstroom alle gegevens op uit de tabel die is opgegeven in de Snowflake-gegevensset of in de bronopties wanneer u inlinegegevensset gebruikt. Nee Snaar / Touwtje (alleen voor inline dataset)
tabelnaam
schemanaam
Vraag Als u Query als invoer selecteert, voert u een query in om gegevens op te halen uit Snowflake. Met deze instelling wordt elke tabel die u in de gegevensset hebt gekozen, buiten werking gesteld.
Als de namen van het schema, de tabel en de kolommen kleine letters bevatten, noemt u de object-id in de query, bijvoorbeeld select * from "schema"."myTable".
Nee Snaar / Touwtje zoekopdracht
Incrementeel extraheren inschakelen (preview) Gebruik deze optie om ADF te laten weten dat alleen rijen moeten worden verwerkt die zijn gewijzigd sinds de laatste keer dat de pijplijn is uitgevoerd. Nee Booleaans enableCdc
Incrementele kolom Wanneer u de functie incrementeel extraheren gebruikt, moet u de datum/tijd/numerieke kolom kiezen die u als watermerk in de brontabel wilt gebruiken. Nee Snaar / Touwtje watermerkKolom
Snowflake-Wijzigingen bijhouden inschakelen (preview) Met deze optie kan ADF gebruikmaken van de technologie voor het vastleggen van wijzigingen in Snowflake om alleen de deltagegevens te verwerken sinds de vorige pijplijnuitvoering. Met deze optie worden de deltagegevens automatisch geladen door invoeg-, bijwerk- en verwijderbewerkingen van rijen, zonder dat een specifieke incrementele kolom vereist is. Nee Booleaans Schakel NativeCdc in
Nettowijzigingen Wanneer u de functie wijzigingstracering in Snowflake gebruikt, kunt u deze optie gebruiken om ontdubbelde gewijzigde rijen of volledige wijzigingen op te halen. Gededupliceerde veranderde rijen tonen alleen de meest recente versies van de rijen die sinds een bepaald tijdstip zijn gewijzigd, terwijl uitgebreide wijzigingen alle versies van elke rij tonen die zijn gewijzigd, inclusief de versies die zijn verwijderd of bijgewerkt. Als u bijvoorbeeld een rij bijwerkt, ziet u een verwijderversie en een invoegversie in volledige wijzigingen, maar alleen de invoegversie in de ontdubbelde gewijzigde rijen. Afhankelijk van uw gebruiksscenario kunt u de optie kiezen die bij uw behoeften past. De standaardoptie is onwaar, wat uitgebreide wijzigingen betekent. Nee Booleaans nettoveranderingen
Systeemkolommen opnemen Wanneer u Snowflake-wijzigingsbeheer gebruikt, kunt u de optie systemColumns gebruiken om te bepalen of de kolommen van de metagegevensstroom die door Snowflake worden geleverd, worden opgenomen of uitgesloten in de uitvoer van het wijzigingsbeheer. SystemColumns is standaard ingesteld op true, wat betekent dat de kolommen van de metagegevensstroom worden opgenomen. U kunt systemColumns instellen op false als u ze wilt uitsluiten. Nee Booleaans systeemkolommen
Beginnen met lezen vanaf het begin Als u deze optie instelt met incrementeel extraheren en bijhouden van wijzigingen, wordt ADF geïnstrueerd om alle rijen bij de eerste uitvoering van een pijplijn te lezen, waarbij incrementeel extract is ingeschakeld. Nee Booleaans startlaad overslaan

Voorbeelden van Snowflake-broncode

Wanneer u de Snowflake-gegevensset als brontype gebruikt, is het bijbehorende gegevensstroomscript:

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

Als u een inline dataset gebruikt, is het bijbehorende dataflowscript:

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

Systeemeigen Wijzigingen bijhouden

Azure Data Factory ondersteunt nu een systeemeigen functie in Snowflake, ook wel wijzigingen bijhouden genoemd, waarbij wijzigingen in de vorm van logboeken worden bijgehouden. Met deze functie van snowflake kunnen we de wijzigingen in de gegevens in de loop van de tijd bijhouden, waardoor het nuttig is voor het laden en controleren van incrementele gegevens. Als u deze functie wilt gebruiken, maken we, wanneer u Change data capture inschakelt en de Snowflake Change Tracking selecteert, een Stream-object voor de brontabel die het bijhouden van wijzigingen in de bron-Snowflake-tabel mogelijk maakt. Vervolgens gebruiken we de component CHANGES in onze query om alleen de nieuwe of bijgewerkte gegevens op te halen uit de brontabel. Het is ook raadzaam om een pijplijn te plannen, zodat wijzigingen worden gebruikt binnen het interval van de gegevensretentietijd die is ingesteld voor de snowflake-brontabel, anders kan de gebruiker inconsistent gedrag zien in vastgelegde wijzigingen.

Afvoertransformatie

De onderstaande tabel bevat de eigenschappen die worden ondersteund door snowflake-sink. U kunt deze eigenschappen bewerken op het tabblad Instellingen . Wanneer u een inlinegegevensset gebruikt, ziet u aanvullende instellingen, die hetzelfde zijn als de eigenschappen die worden beschreven in de sectie eigenschappen van de gegevensset. De connector maakt gebruik van interne gegevensoverdracht van Snowflake.

Naam Beschrijving Vereist Toegestane waarden Gegevensstroomscript-eigenschap
Update-methode Geef op welke bewerkingen zijn toegestaan op uw Snowflake-bestemming.
Als u rijen wilt bijwerken, toevoegen of verwijderen, is een Alter row-transformatie vereist om rijen voor deze acties te taggen.
Ja true of false te verwijderen
invoegbaar
kan worden bijgewerkt
voor upsert geschikt
Sleutelkolommen Voor updates, upserts en verwijderingen moet je een sleutelkolom of -kolommen instellen om te bepalen welke rij wordt aangepast. Nee Array sleutels
Tabelactie Bepaalt of alle rijen uit de doeltabel opnieuw moeten worden gemaakt of verwijderd voordat ze worden geschreven.
- Geen: Er wordt geen actie uitgevoerd met betrekking tot de tabel.
- Opnieuw maken: de tabel wordt verwijderd en opnieuw gemaakt. Vereist als u dynamisch een nieuwe tabel maakt.
- Trunceren: alle rijen uit de doelstellingstabel worden verwijderd.
Nee true of false recreëren
afkappen

Voorbeelden van Snowflake-sink-scripts

Wanneer u de Snowflake-gegevensset als sinktype gebruikt, is het bijbehorende gegevensstroomscript:

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

Als u een inline dataset gebruikt, is het bijbehorende dataflowscript:

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

Optimalisatie van query pushdown

Door het niveau van logboekregistratie van pijplijnen in te stellen op Geen, sluiten we de overdracht van metrische gegevens voor tussenliggende transformatie uit, waardoor potentiële belemmeringen voor Spark-optimalisaties worden voorkomen en querypushdownoptimalisatie mogelijk wordt gemaakt door Snowflake. Deze pushdown-optimalisatie maakt aanzienlijke prestatieverbeteringen mogelijk voor grote Snowflake-tabellen met uitgebreide gegevenssets.

Notitie

Tijdelijke tabellen in Snowflake worden niet ondersteund, omdat ze lokaal zijn voor de sessie of gebruiker die ze maakt, waardoor ze niet toegankelijk zijn voor andere sessies en gevoelig zijn voor overschreven als gewone tabellen door Snowflake. Hoewel Snowflake tijdelijke tabellen biedt als alternatief, dat wereldwijd toegankelijk is, moeten ze handmatig worden verwijderd, wat in strijd is met het primaire doel van het gebruik van Temp-tabellen. Dit is om verwijderbewerkingen in het bronschema te voorkomen.

Toewijzing van gegevenstypen voor Snowflake V2

Wanneer u gegevens kopieert uit Snowflake, worden de volgende toewijzingen gebruikt van Snowflake-gegevenstypen naar tussentijdse gegevenstypen binnen de service. Zie Schema- en gegevenstypetoewijzingen voor meer informatie over hoe de kopieeractiviteit het bronschema en het gegevenstype toewijst aan de sink.

Snowflake-gegevenstype Tussentijdse servicegegevenstype
GETAL (p,0) Decimaal
GETAL (p,s waar s > 0) Decimaal
Drijven Dubbel
VARCHAR Snaar / Touwtje
VERKOLEN Snaar / Touwtje
BINAIR Byte[]
Booleaans Booleaans
DATUM Datum/tijd
TIJD Tijdsduur
TIMESTAMP_LTZ DatumTijdOffset
TIMESTAMP_NTZ DatumTijdOffset
TIMESTAMP_TZ DatumTijdOffset
Variant Snaar / Touwtje
object Snaar / Touwtje
ARRAY Snaar / Touwtje

Eigenschappen van opzoekactiviteit

Zie Lookup-activiteit voor meer informatie over de eigenschappen.

Levenscyclus en upgrade van Snowflake-connector

In de volgende tabel ziet u de releasefase en wijzigingslogboeken voor verschillende versies van de Snowflake-connector:

Versie Releasefase Wijzigingslogboek
Snowflake V1 Einde van de ondersteuning aangekondigd /
Snowflake V2 (versie 1.0) GA-versie beschikbaar • Voeg ondersteuning toe voor verificatie van sleutelpaar.

• Voeg ondersteuning toe aan storageIntegration in de Copy-activiteit.

• De eigenschappen accountIdentifier, warehouse, database, schema en role worden gebruikt om een verbinding tot stand te brengen in plaats van de connectionstring eigenschap.

• Voeg ondersteuning toe voor Decimal in Lookup-activiteit. Het getaltype, zoals gedefinieerd in Snowflake, wordt weergegeven als een tekenreeks in de opzoekactiviteit. Als u het naar een numeriek type wilt converteren in V2, kunt u de pijplijnparameter gebruiken met de int-functie of de float-functie. Bijvoorbeeld, int(activity('lookup').output.firstRow.VALUE)float(activity('lookup').output.firstRow.VALUE)

• Het gegevenstype 'tijdstempel' in Snowflake wordt gelezen als 'DateTimeOffset' in de activiteiten Lookup en Script. Als u de datum/tijd-waarde nog steeds als parameter in uw pijplijn wilt gebruiken na een upgrade naar V2, kunt u het type DateTimeOffset converteren naar het type DateTime met behulp van de functie formatDateTime (aanbevolen) of een concat-functie. Bijvoorbeeld: formatDateTime(activity('lookup').output.firstRow.DATETIMETYPE), concat(substring(activity('lookup').output.firstRow.DATETIMETYPE, 0, 19), 'Z')

• GETAL (p,0) wordt gelezen als decimaal gegevenstype.

• TIMESTAMP_LTZ, TIMESTAMP_NTZ en TIMESTAMP_TZ wordt gelezen als het gegevenstype DateTimeOffset.

• Scriptparameters worden niet ondersteund in scriptactiviteit. Als alternatief kunt u dynamische expressies gebruiken voor scriptparameters. Zie Expressies en functies in Azure Data Factory en Azure Synapse Analytics voor meer informatie.

• Uitvoering van meerdere SQL-instructies in scriptactiviteit wordt niet ondersteund.
Snowflake V2 (versie 1.1) Preview-versie beschikbaar • Voeg ondersteuning toe voor scriptparameters.

• Voeg ondersteuning toe voor het uitvoeren van meerdere instructies in scriptactiviteit.

De Snowflake-connector upgraden van V1 naar V2

Als u de Snowflake-connector wilt upgraden van V1 naar V2, kunt u een parallelle upgrade of een upgrade ter plaatse uitvoeren.

Upgrade naast elkaar

Voer de volgende stappen uit om een parallelle upgrade uit te voeren:

  1. Maak een nieuwe gekoppelde Snowflake-service en configureer deze door te verwijzen naar de eigenschappen van de gekoppelde V2-service.
  2. Maak een gegevensset op basis van de zojuist gemaakte gekoppelde Snowflake-service.
  3. Vervang de nieuwe gekoppelde service en gegevensset door de bestaande services in de pijplijnen die gericht zijn op de V1-objecten.

Upgraden op locatie

Als u een in-place upgrade wilt uitvoeren, moet u de bestaande nettolading van de gekoppelde service bewerken en de gegevensset bijwerken om de nieuwe gekoppelde service te gebruiken.

  1. Werk het type van Snowflake bij naar SnowflakeV2.

  2. Wijzig de payload van de gekoppelde service van het V1-formaat naar V2. U kunt elk veld invullen vanuit de gebruikersinterface nadat u het hierboven genoemde type hebt gewijzigd of de nettolading rechtstreeks bijwerken via de JSON-editor. Raadpleeg de sectie Eigenschappen van de gekoppelde service in dit artikel voor de ondersteunde verbindingseigenschappen. In de volgende voorbeelden ziet u de verschillen in nettolading voor de gekoppelde V1- en V2 Snowflake-services:

    JSON-payload van de gekoppelde Snowflake V1-service:

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

    JSON-payload van de gekoppelde Snowflake V2-service:

     {
         "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. Werk de gegevensset bij om de nieuwe gekoppelde service te gebruiken. U kunt een nieuwe gegevensset maken op basis van de zojuist gemaakte gekoppelde service of de typeeigenschap van een bestaande gegevensset bijwerken van SnowflakeTable naar SnowflakeV2Table.

Notitie

Wanneer u overschakelt naar gekoppelde services, wordt in de sjabloonparametersectie mogelijk alleen de database-eigenschappen weergegeven. U kunt dit oplossen door de parameters handmatig te bewerken. Daarna worden de verbindingsreeksen weergegeven in de sectie Sjabloonparameters overschrijven .

De Snowflake V2-connector upgraden van versie 1.0 naar versie 1.1 (preview)

Selecteer op de pagina Gekoppelde service bewerken 1.1 voor versie. Zie Eigenschappen van gekoppelde service voor meer informatie.

Zie ondersteunde gegevensarchieven en -indelingen voor een lijst met gegevensarchieven die door Copy-activiteit worden ondersteund als bronnen en sinks.