我正在尝试将Azure表从一个存储帐户复制到另一个存储帐户。但是在执行此复制时,我想将列的日期时间值更改为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 :(得分:0)
如果我理解正确,您希望在复制数据期间将列值从一个存储表更改为另一个具有DataFactory的存储表。根据我的经验,目前DataFactory Copy Activity不支持它。
在我的选项中,有一种解决方法是我们可以使用Azure scheduled webjob来做到这一点。在WebJob中,可以使用Azure storage SDK 复制表记录和更改列值,然后插入另一个表。