2017-07-25 2 views
2

Ich portiere SQL Server Integration Services-Pakete nach Azure Data Factory.7 Spaltentabelle in 6 Spaltentabelle kopieren

Ich habe zwei Tabellen (Tabelle 1 und Tabelle 2), die auf verschiedenen Servern leben. Einer hat sieben Säulen, die anderen sechs. I folgte dem Beispiel bei https://docs.microsoft.com/en-us/azure/data-factory/data-factory-map-columns

Tabelle 1 DDL:

CREATE TABLE dbo.Table1 
(
    zonename nvarchar(max), 
    propertyname nvarchar(max), 
    basePropertyid int, 
    dfp_ad_unit_id bigint, 
    MomentType nvarchar(200), 
    OperatingSystemName nvarchar(50) 
) 

Tabelle 2 DDL

CREATE TABLE dbo.Table2 
(
    ZoneID int IDENTITY, 
    ZoneName nvarchar(max), 
    propertyName nvarchar(max), 
    BasePropertyID int, 
    dfp_ad_unit_id bigint, 
    MomentType nvarchar(200), 
    OperatingSystemName nvarchar(50) 
) 

In ADF definiere ich Tabelle 1:

{ 
    "$schema": "http://datafactories.schema.management.azure.com/schemas/2015-09-01/Microsoft.DataFactory.Table.json", 
    "name": "Table1", 
    "properties": { 
    "type": "AzureSqlTable", 
    "linkedServiceName": "PlatformX", 
    "structure": [ 
     { "name": "zonename" }, 
     { "name": "propertyname" }, 
     { "name": "basePropertyid" }, 
     { "name": "dfp_ad_unit_id" }, 
     { "name": "MomentType" }, 
     { "name": "OperatingSystemName" } 
    ], 
    "external": true, 
    "typeProperties": { 
     "tableName": "Platform.Zone" 
    }, 
    "availability": { 
     "frequency": "Day", 
     "interval": 1 
    } 
    } 
} 

In ADF I Definieren Sie Tabelle 2 als:

Wie Sie sehen können, Table2 hat eine Identitätsspalte, die automatisch ausgefüllt werden.

Dies sollte eine einfache Kopie Aktivität sein:

{ 
    "$schema": "http://datafactories.schema.management.azure.com/schemas/2015-09-01/Microsoft.DataFactory.Pipeline.json", 
    "name": "Copy_Table1_to_Table2", 
    "properties": { 
    "description": "Copy_Table1_to_Table2", 
    "activities": [ 
     { 
     "name": "Copy_Table1_to_Table2", 
     "type": "Copy", 
     "inputs": [ 
      { "name": "Table1" } 
     ], 
     "outputs": [ 
      { 
      "name": "Table2" 
      } 
     ], 
     "typeProperties": { 
      "source": { 
      "type": "SqlSource", 
      "sqlReaderQuery": "select * from dbo.Table1" 
      }, 
      "sink": { 
      "type": "SqlSink" 
      }, 
      "translator": { 
      "type": "TabularTranslator", 
      "columnMappings": "zonename: ZoneName, propertyname: propertyName, basePropertyid: BasePropertyID, dfp_ad_unit_id: dfp_ad_unit_id, MomentType: MomentType, OperatingSystemName: OperatingSystemName" 
      } 
     }, 
     "policy": { 
      "concurrency": 1, 
      "executionPriorityOrder": "OldestFirst", 
      "retry": 3, 
      "timeout": "01:00:00" 
     }, 
     "scheduler": { 
      "frequency": "Day", 
      "interval": 1 
     } 
     } 
    ], 
    "start": "2017-07-23T00:00:00Z", 
    "end": "2020-07-19T00:00:00Z" 
    } 
} 

Ich dachte, durch nicht ZoneID Mapping, wäre es einfach ignoriert werden. Aber ADF gibt mir den folgenden Fehler.

Kopieren Aktivität aufgetreten einen Benutzerfehler: GatewayNodeName = APP1250S, Error-Code = UserErrorInvalidColumnMappingColumnCountMismatch, 'Type = Microsoft.DataTransfer.Common.Shared.HybridDeliveryException, Message = Ungültige Spaltenzuordnung bereitgestellt Aktivität zu kopieren:' Zonenname: Zonenname, Eigenschaftsname: property , basePropertyid: BasePropertyID, dfp_ad_unit_id: dfp_ad_unit_id, MomentType: MomentType, OperatingSystemName: OperatingSystemName‘, detaillierte Meldung: Verschiedene Spaltenanzahl zwischen Zielstruktur und Spaltenzuordnung. Anzahl der Zielspalten: 7, Anzahl der Spaltenzuordnungen: 6. Überprüfen Sie die Spaltenzuordnung in der Tabellendefinition., Quelle = Microsoft.DataTransfer.Common, '

Kurz gesagt, ich versuche, eine 7-Spalten-Tabelle in eine 6-Spalten-Tabelle zu kopieren und Data Factory mag es nicht. Wie kann ich diese Aufgabe erfüllen?

Antwort

0

Eine Möglichkeit wäre, einen Blick über die 7-Spalte-Tabelle zu erstellen, die nicht die Identitätsspalte enthält und in dieser Ansicht einzufügen.

CREATE VIEW bulkLoad.Table2 
AS 
SELECT 
    ZoneName, 
    propertyName, 
    BasePropertyID, 
    dfp_ad_unit_id, 
    MomentType, 
    OperatingSystemName 
GO 

Ich kann einige graben und sehen, ob einige Trick mit der Spaltenzuordnung möglich ist, aber das sollte Sie entsperren.

HTH

0

ich von MSFT Unterstützung gerade gesagt wurde, die Identität Spalte aus der Tabellendefinition zu entfernen. Es scheint zu funktionieren.

+0

Wollen Sie aus der 'structure' Komponente des JSON? Es ist nicht klar. – wBob

Verwandte Themen