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. Information om hur du kommer igång finns i Installera Azure PowerShell. 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 |
---|---|---|
Kopieringsaktivitet (källa/mottagare) | (1) (2) | √ Exkludera lagringskonto V1 |
Sökningsaktivitet | (1) (2) | √ 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 kopieringsaktiviteten med en pipeline kan du använda något av följande verktyg eller SDK:er:
- Verktyget Kopiera data
- Azure-portalen
- The .NET SDK
- The Python SDK
- Azure PowerShell
- REST-API:et
- Azure Resource Manager-mallen
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.
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:
Sök efter Azure Table och välj Anslutningsappen för Azure Table Storage.
Konfigurera tjänstinformationen, testa anslutningen och skapa den nya länkade tjänsten.
Konfigurationsinformation för anslutningsprogram
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
Den här Azure Table Storage-anslutningsappen stöder följande autentiseringstyper. Mer information finns i motsvarande avsnitt.
- Kontonyckelautentisering
- Signaturautentisering för delad åtkomst
- Systemtilldelad autentisering av hanterad identitet
- Användartilldelad hanterad identitetsautentisering
Kontonyckelautentisering
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 niska veze. 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"
}
}
}
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>&st=<start time>&se=<expire time>&sr=<resource>&sp=<permissions>&sip=<ip range>&spr=<protocol>&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.
Systemtilldelad autentisering av hanterad identitet
En datafabrik eller Synapse-pipeline kan associeras med en systemtilldelad hanterad identitet för Azure-resurser, som representerar resursen för autentisering till andra Azure-tjänster. Du kan använda den här systemtilldelade hanterade identiteten för Azure Table Storage-autentisering. Mer information om hanterade identiteter för Azure-resurser finns i Hanterade identiteter för Azure-resurser
Följ dessa steg om du vill använda systemtilldelad hanterad identitetsautentisering:
Hämta systemtilldelad hanterad identitetsinformation genom att kopiera värdet för det systemtilldelade objekt-ID för hanterad identitet som genererats tillsammans med din fabrik eller Synapse-arbetsyta.
Ge den hanterade identiteten behörighet i Azure Table Storage. Mer information om rollerna finns i den här artikeln.
- Som källa i Åtkomstkontroll (IAM) beviljar du minst rollen Lagringstabelldataläsare .
- I Åtkomstkontroll (IAM) som mottagare beviljar du minst rollen Storage Table Data Contributor.
Dessa egenskaper stöds för en länkad Azure Table Storage-tjänst:
Property | Beskrivning | Obligatoriskt |
---|---|---|
type | Typegenskapen måste anges till AzureTableStorage. | Ja |
serviceEndpoint | Ange tjänstslutpunkten för Azure Table Storage med mönstret https://<accountName>.table.core.windows.net/ . |
Ja |
connectVia | Den integrationskörning som ska användas för att ansluta till datalagret. Du kan använda Azure Integration Runtime. Om den inte anges använder den standardkörningen för Azure-integrering. | Nej |
Kommentar
Systemtilldelad hanterad identitetsautentisering stöds endast av Azure Integration Runtime.
Exempel:
{
"name": "AzureTableStorageLinkedService",
"properties": {
"type": "AzureTableStorage",
"typeProperties": {
"serviceEndpoint": "https://<accountName>.table.core.windows.net/"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Användartilldelad hanterad identitetsautentisering
En datafabrik kan tilldelas en eller flera användartilldelade hanterade identiteter. Du kan använda den här användartilldelade hanterade identiteten för Azure Table Storage-autentisering, vilket gör det möjligt att komma åt och kopiera data från eller till Azure Table Storage. Mer information om hanterade identiteter för Azure-resurser finns i Hanterade identiteter för Azure-resurser
Följ dessa steg om du vill använda användartilldelad hanterad identitetsautentisering:
Skapa en eller flera användartilldelade hanterade identiteter och bevilja behörighet i Azure Table Storage. Mer information om rollerna finns i den här artikeln.
- Som källa i Åtkomstkontroll (IAM) beviljar du minst rollen Lagringstabelldataläsare .
- I Åtkomstkontroll (IAM) som mottagare beviljar du minst rollen Storage Table Data Contributor.
Tilldela en eller flera användartilldelade hanterade identiteter till din datafabrik och skapa autentiseringsuppgifter för varje användartilldelad hanterad identitet.
Dessa egenskaper stöds för en länkad Azure Table Storage-tjänst:
Property | Beskrivning | Obligatoriskt |
---|---|---|
type | Typegenskapen måste anges till AzureTableStorage. | Ja |
serviceEndpoint | Ange tjänstslutpunkten för Azure Table Storage med mönstret https://<accountName>.table.core.windows.net/ . |
Ja |
autentiseringsuppgifter | Ange den användartilldelade hanterade identiteten som autentiseringsobjekt. | 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 |
Exempel:
{
"name": "AzureTableStorageLinkedService",
"properties": {
"type": "AzureTableStorage",
"typeProperties": {
"serviceEndpoint": "https://<accountName>.table.core.windows.net/",
"credential": {
"referenceName": "credential1",
"type": "CredentialReference"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
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) |
maxConcurrentConnections | 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.
Relaterat innehåll
En lista över datalager som stöds som källor och mottagare av kopieringsaktiviteten finns i Datalager som stöds.