0

我试图将Azure表从一个存储帐户复制到另一个存储帐户。但是,在做这个副本时,我想将列的日期时间值更改为Unix时间戳。在DataFactory活动中将DateTime更改为Unix时间戳

我正在使用Azure DataFactory复制活动。如果我在输出数据集中指定InitialDate列类型为Int64,那么我得到的错误是cannot convert datetimeoffset to Int64

"activities": [ 
      { 
       "type": "Copy", 
       "typeProperties": { 
        "source": { 
         "type": "AzureTableSource" 
        }, 
        "sink": { 
         "type": "AzureTableSink", 
         "azureTablePartitionKeyName": "PartitionKey", 
         "azureTableRowKeyName": "RowKey", 
         "writeBatchSize": 0, 
         "writeBatchTimeout": "00:00:00" 
        }, 
        "translator": { 
         "type": "TabularTranslator", 
         "columnMappings": "PartitionKey:PartitionKey,RowKey:RowKey,Timestamp:Timestamp,InitialDate" 
        }, 
        "parallelCopies": 32, 
        "cloudDataMovementUnits": 32 
       }, 
       "inputs": [ 
        { 
         "name": "InputDataset-3tk" 
        } 
       ], 
       "outputs": [ 
        { 
         "name": "OutputDataset-3tk" 
        } 
       ], 
       "policy": { 
        "timeout": "1.00:00:00", 
        "concurrency": 1, 
        "executionPriorityOrder": "NewestFirst", 
        "style": "StartOfInterval", 
        "retry": 3, 
        "longRetry": 0, 
        "longRetryInterval": "00:00:00" 
       }, 
       "scheduler": { 
        "frequency": "Day", 
        "interval": 1 
       }, 
       "name": "Activity-0-Test->Test" 
      } 
     ] 

反正同时复制到输出数据集,我可以改变InitialDate列值UnixTimestamp (Int64)

是否有比其他TabularTranslator任何其他翻译?我无法在网上找到任何信息。

回答

0

如果我理解正确的,你想从一个存储表中复制数据来改变列的值与另一个的DataFactory存储表。根据我的经验,目前DataFactory Copy Activity不支持它。

在我的选择,有一个解决方法是,我们可以使用Azure scheduled webjob做到这一点。在WebJob可以使用Azure storage SDK复制表记录和更改列值,然后插入到另一个表中。

+0

谢谢该表已获得超过10亿个实体,复制操作需要超过10个小时。所以我想使用Datafactory的并行副本,DMU和监视功能。所以带有Storage SDK的WebJobs不是一种选择。无论如何,我可以用自定义活动(IDotNetActivity)来做到这一点吗? – Venky

+0

根据[文档](https://docs.microsoft.com/zh-cn/azure/data-factory/data-factory-use-custom-activities#walkthrough-create-a-custom-activity),它提到我们可以用自定义活动来转换/处理数据。 –

+0

很酷。但文件没有提及任何有关并行处理的内容。虽然我们可以在JSON中指定该属性,但不知道如何在定制活动中使用代码逻辑。 – Venky

相关问题