Kopiera data till och från Azure Table Storage med hjälp av Azure Data Factory eller Synapse Analytics

GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics

Dricks

Prova Data Factory i Microsoft Fabric, en allt-i-ett-analyslösning för företag. Microsoft Fabric omfattar allt från dataflytt till datavetenskap, realtidsanalys, business intelligence och rapportering. Lär dig hur du startar en ny utvärderingsversion kostnadsfritt!

Den här artikeln beskriver hur du använder kopieringsaktivitet i Azure Data Factory- och Synapse Analytics-pipelines för att kopiera data till och från Azure Table Storage. Den bygger på översiktsartikeln Kopieringsaktivitet som visar en allmän översikt över kopieringsaktivitet.

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Funktioner som stöds

Den här Azure Table Storage-anslutningsappen stöds för följande funktioner:

Funktioner som stöds IR Hanterad privat slutpunkt
aktiviteten Kopiera (källa/mottagare) ① ② √ Exkludera lagringskonto V1
Sökningsaktivitet ① ② √ Exkludera lagringskonto V1

(1) Azure Integration Runtime (2) Lokalt installerad integrationskörning

Du kan kopiera data från valfritt källdatalager som stöds till Table Storage. Du kan också kopiera data från Table Storage till valfritt mottagardatalager som stöds. En lista över datalager som stöds som källor eller mottagare av kopieringsaktiviteten finns i tabellen Datalager som stöds.

Mer specifikt stöder den här Azure Table-anslutningsappen kopiering av data med hjälp av kontonyckeln och signaturautentiseringar för tjänstdelade åtkomster.

Kom igång

Om du vill utföra aktiviteten Kopiera med en pipeline kan du använda något av följande verktyg eller SDK:er:

Skapa en länkad Azure Table Storage-tjänst med hjälp av användargränssnittet

Använd följande steg för att skapa en länkad Azure Table Storage-tjänst i azure-portalens användargränssnitt.

  1. Bläddra till fliken Hantera i Din Azure Data Factory- eller Synapse-arbetsyta och välj Länkade tjänster och klicka sedan på Ny:

  2. Sök efter Azure Table och välj Anslutningsappen för Azure Table Storage.

    Screenshot of the Azure Table storage connector.

  3. Konfigurera tjänstinformationen, testa anslutningen och skapa den nya länkade tjänsten.

    Screenshot of configuration for an Azure Table storage linked service.

Anslut eller konfigurationsinformation

Följande avsnitt innehåller information om egenskaper som används för att definiera entiteter som är specifika för Azure Table Storage.

Länkade tjänstegenskaper

Använda en kontonyckel

Du kan skapa en länkad Azure Storage-tjänst med hjälp av kontonyckeln. Tjänsten har global åtkomst till Storage. Följande egenskaper stöds.

Property Beskrivning Obligatoriskt
type Typegenskapen måste anges till AzureTableStorage. Ja
Connectionstring Ange den information som behövs för att ansluta till Storage för egenskapen connectionString.
Du kan också placera kontonyckeln i Azure Key Vault och hämta konfigurationen accountKey från anslutningssträng. Mer information finns i följande exempel och artikeln Lagra autentiseringsuppgifter i Azure Key Vault .
Ja
connectVia Den integrationskörning som ska användas för att ansluta till datalagret. Du kan använda Azure Integration Runtime eller lokalt installerad integrationskörning (om ditt datalager finns i ett privat nätverk). Om den inte anges använder den standardkörningen för Azure-integrering. Nej

Kommentar

Om du använder den länkade tjänsten "AzureStorage" stöds den fortfarande som den är, medan du rekommenderas att använda den här nya länkade tjänsttypen "AzureTableStorage" framöver.

Exempel:

{
    "name": "AzureTableStorageLinkedService",
    "properties": {
        "type": "AzureTableStorage",
        "typeProperties": {
            "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Exempel: Lagra kontonyckel i Azure Key Vault

{
    "name": "AzureTableStorageLinkedService",
    "properties": {
        "type": "AzureTableStorage",
        "typeProperties": {
            "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;",
            "accountKey": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Använda signaturautentisering för delad åtkomst

Du kan också skapa en länkad lagringstjänst med hjälp av en signatur för delad åtkomst. Tjänsten har begränsad/tidsbunden åtkomst till alla/specifika resurser i lagringen.

En signatur för delad åtkomst ger delegerad åtkomst till resurser i ditt lagringskonto. Du kan använda den för att bevilja en klient begränsad behörighet till objekt i ditt lagringskonto under en angiven tid och med en angiven uppsättning behörigheter. Du behöver inte dela dina kontoåtkomstnycklar. Signaturen för delad åtkomst är en URI som i sina frågeparametrar innehåller all information som krävs för autentiserad åtkomst till en lagringsresurs. För att få åtkomst till lagringsresurser med signaturen för delad åtkomst behöver klienten bara skicka in signaturen för delad åtkomst till lämplig konstruktor eller metod. Mer information om signaturer för delad åtkomst finns i Signaturer för delad åtkomst: Förstå signaturmodellen för delad åtkomst.

Kommentar

Både signaturer för delad åtkomst och signaturer för delad åtkomst för konton stöds nu. Mer information om signaturer för delad åtkomst finns i Bevilja begränsad åtkomst till Azure Storage-resurser med hjälp av signaturer för delad åtkomst (SAS).

Dricks

Om du vill generera en signatur för delad åtkomst för din tjänst för ditt lagringskonto kan du köra följande PowerShell-kommandon. Ersätt platshållarna och bevilja nödvändig behörighet. $context = New-AzStorageContext -StorageAccountName <accountName> -StorageAccountKey <accountKey> New-AzStorageContainerSASToken -Name <containerName> -Context $context -Permission rwdl -StartTime <startTime> -ExpiryTime <endTime> -FullUri

Om du vill använda signaturautentisering för delad åtkomst stöds följande egenskaper.

Property Beskrivning Obligatoriskt
type Typegenskapen måste anges till AzureTableStorage. Ja
sasUri Ange SAS-URI för signatur-URI för delad åtkomst till tabellen.
Markera det här fältet som en SecureString för att lagra det på ett säkert sätt. Du kan också placera SAS-token i Azure Key Vault för att utnyttja automatisk rotation och ta bort tokendelen. Mer information finns i följande exempel och artikeln Lagra autentiseringsuppgifter i Azure Key Vault .
Ja
connectVia Den integrationskörning som ska användas för att ansluta till datalagret. Du kan använda Azure Integration Runtime eller Integration Runtime med egen värd (om ditt datalager finns i ett privat nätverk). Om den inte anges använder den standardkörningen för Azure-integrering. Nej

Kommentar

Om du använder den länkade tjänsten "AzureStorage" stöds den fortfarande som den är, medan du rekommenderas att använda den här nya länkade tjänsttypen "AzureTableStorage" framöver.

Exempel:

{
    "name": "AzureTableStorageLinkedService",
    "properties": {
        "type": "AzureTableStorage",
        "typeProperties": {
            "sasUri": {
                "type": "SecureString",
                "value": "<SAS URI of the Azure Storage resource e.g. https://<account>.table.core.windows.net/<table>?sv=<storage version>&amp;st=<start time>&amp;se=<expire time>&amp;sr=<resource>&amp;sp=<permissions>&amp;sip=<ip range>&amp;spr=<protocol>&amp;sig=<signature>>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Exempel: Lagra kontonyckel i Azure Key Vault

{
    "name": "AzureTableStorageLinkedService",
    "properties": {
        "type": "AzureTableStorage",
        "typeProperties": {
            "sasUri": {
                "type": "SecureString",
                "value": "<SAS URI of the Azure Storage resource without token e.g. https://<account>.table.core.windows.net/<table>>"
            },
            "sasToken": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

När du skapar en signatur-URI för delad åtkomst bör du tänka på följande:

  • Ange lämpliga läs-/skrivbehörigheter för objekt baserat på hur den länkade tjänsten (läsa, skriva, läsa/skriva) används.
  • Ange förfallotid på rätt sätt. Kontrollera att åtkomsten till Lagringsobjekt inte upphör att gälla inom den aktiva perioden för pipelinen.
  • URI:n ska skapas på rätt tabellnivå baserat på behovet.

Egenskaper för datauppsättning

En fullständig lista över avsnitt och egenskaper som är tillgängliga för att definiera datauppsättningar finns i artikeln Datauppsättningar . Det här avsnittet innehåller en lista över egenskaper som stöds av Azure Table-datauppsättningen.

Om du vill kopiera data till och från Azure Table anger du datauppsättningens typegenskap till AzureTable. Följande egenskaper stöds.

Property Beskrivning Obligatoriskt
type Datamängdens typegenskap måste anges till AzureTable. Ja
tableName Namnet på tabellen i tabelllagringsdatabasinstansen som den länkade tjänsten refererar till. Ja

Exempel:

{
    "name": "AzureTableDataset",
    "properties":
    {
        "type": "AzureTable",
        "typeProperties": {
            "tableName": "MyTable"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<Azure Table storage linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Tjänstens schemainferens

För schemafria datalager som Azure Table härleder tjänsten schemat på något av följande sätt:

  • Om du anger kolumnmappningen i kopieringsaktiviteten använder tjänsten kolumnlistan på källsidan för att hämta data. Om en rad i det här fallet inte innehåller något värde för en kolumn anges ett null-värde för den.
  • Om du inte anger kolumnmappningen i kopieringsaktiviteten härleder tjänsten schemat med hjälp av den första raden i data. I det här fallet, om den första raden inte innehåller det fullständiga schemat (t.ex. att vissa kolumner har null-värde), missas vissa kolumner i resultatet av kopieringsåtgärden.

Kopiera egenskaper för aktivitet

En fullständig lista över avsnitt och egenskaper som är tillgängliga för att definiera aktiviteter finns i artikeln Pipelines . Det här avsnittet innehåller en lista över egenskaper som stöds av Azure Table-källan och mottagare.

Azure Table som källtyp

Om du vill kopiera data från Azure Table anger du källtypen i kopieringsaktiviteten till AzureTableSource. Följande egenskaper stöds i avsnittet kopieringsaktivitetskälla.

Property Beskrivning Obligatoriskt
type Typegenskapen för kopieringsaktivitetskällan måste anges till AzureTableSource. Ja
azureTableSourceQuery Använd den anpassade tabelllagringsfrågan för att läsa data.
Källfrågan är en direktkarta från frågealternativet $filter som stöds av Azure Table Storage, läs mer om syntaxen i det här dokumentet och se exemplen i följande azureTableSourceQuery-exempelavsnitt.
Nej
azureTableSourceIgnoreTableNotFound Anger om du vill tillåta att undantaget för tabellen inte finns.
Tillåtna värden är True och False (standard).
Nej

azureTableSourceQuery-exempel

Kommentar

Azure Table-frågeåtgärden överskrider tidsgränsen på 30 sekunder som tillämpas av Azure Table Service. Lär dig hur du optimerar frågan från artikeln Design för frågor .

Om du vill filtrera data mot en datetime-typkolumn läser du det här exemplet:

"azureTableSourceQuery": "LastModifiedTime gt datetime'2017-10-01T00:00:00' and LastModifiedTime le datetime'2017-10-02T00:00:00'"

Om du vill filtrera data mot en strängtypskolumn läser du det här exemplet:

"azureTableSourceQuery": "LastModifiedTime ge '201710010000_0000' and LastModifiedTime le '201710010000_9999'"

Om du använder pipelineparametern omvandlar du datetime-värdet till rätt format enligt föregående exempel.

Azure Table som mottagartyp

Om du vill kopiera data till Azure Table anger du mottagartypen i kopieringsaktiviteten till AzureTableSink. Följande egenskaper stöds i avsnittet kopieringsaktivitetsmottagare.

Property Beskrivning Obligatoriskt
type Typegenskapen för kopieringsaktivitetsmottagaren måste anges till AzureTableSink. Ja
azureTableDefaultPartitionKeyValue Standardvärdet för partitionsnyckeln som kan användas av mottagaren. Nej
azureTablePartitionKeyName Ange namnet på kolumnen vars värden används som partitionsnycklar. Om det inte anges används "AzureTableDefaultPartitionKeyValue" som partitionsnyckel. Nej
azureTableRowKeyName Ange namnet på kolumnen vars kolumnvärden används som radnyckel. Om det inte anges använder du ett GUID för varje rad. Nej
azureTableInsertType Läget för att infoga data i Azure Table. Den här egenskapen styr om befintliga rader i utdatatabellen med matchande partitions- och radnycklar får sina värden ersatta eller sammanfogade.

Tillåtna värden sammanfogas (standard) och ersätts.

Den här inställningen gäller på radnivå, inte på tabellnivå. Inget av alternativen tar bort rader i utdatatabellen som inte finns i indata. Mer information om hur inställningarna för sammanfogning och ersättning fungerar finns i Infoga eller sammanfoga entitet och Infoga eller ersätt entitet.
Nej
writeBatchSize Infogar data i Azure Table när writeBatchSize eller writeBatchTimeout uppnås.
Tillåtna värden är heltal (antal rader).
Nej (standardvärdet är 10 000)
writeBatchTimeout Infogar data i Azure Table när writeBatchSize eller writeBatchTimeout uppnås.
Tillåtna värden är tidsintervall. Ett exempel är "00:20:00" (20 minuter).
Nej (standardvärdet är 90 sekunder, lagringsklientens standardtimeout)
 maxConcurrent Anslut ions Den övre gränsen för samtidiga anslutningar som upprättats till datalagret under aktivitetskörningen. Ange endast ett värde när du vill begränsa samtidiga anslutningar.  Nej

Exempel:

"activities":[
    {
        "name": "CopyToAzureTable",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Azure Table output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "AzureTableSink",
                "azureTablePartitionKeyName": "<column name>",
                "azureTableRowKeyName": "<column name>"
            }
        }
    }
]

azureTablePartitionKeyName

Mappa en källkolumn till en målkolumn med hjälp av egenskapen "translator" innan du kan använda målkolumnen som azureTablePartitionKeyName.

I följande exempel mappas källkolumnen DivisionID till målkolumnen DivisionID:

"translator": {
    "type": "TabularTranslator",
    "columnMappings": "DivisionID: DivisionID, FirstName: FirstName, LastName: LastName"
}

"DivisionID" anges som partitionsnyckel.

"sink": {
    "type": "AzureTableSink",
    "azureTablePartitionKeyName": "DivisionID"
}

Datatypsmappning för Azure Table

När du kopierar data från och till Azure Table används följande mappningar från Azure Table-datatyper till mellanliggande datatyper som används internt i tjänsten. Information om hur kopieringsaktiviteten mappar källschemat och datatypen till mottagaren finns i Mappningar av schema- och datatyper.

När du flyttar data till och från Azure Table används följande mappningar som definierats av Azure Table från Azure Table OData-typer till .NET-typ och vice versa.

Datatyp för Azure Table Datatyp för interimstjänst Details
Edm.Binary byte[] En matris med byte upp till 64 KB.
Edm.Boolean bool Ett booleskt värde.
Edm.DateTime Datum/tid Ett 64-bitars värde uttryckt som Coordinated Universal Time (UTC). DateTime-intervallet som stöds börjar midnatt den 1 januari 1601 e.D. (C.E.), UTC. Intervallet slutar 31 december 9999.
Edm.Double dubbel Ett 64-bitars flyttalsvärde.
Edm.Guid GUID En 128-bitars globalt unik identifierare.
Edm.Int32 Int32 Ett 32-bitars heltal.
Edm.Int64 Int64 Ett 64-bitars heltal.
Edm.String String Ett UTF-16-kodat värde. Strängvärden kan vara upp till 64 KB.

Egenskaper för uppslagsaktivitet

Mer information om egenskaperna finns i Sökningsaktivitet.

En lista över datalager som stöds som källor och mottagare av kopieringsaktiviteten finns i Datalager som stöds.