我正在尝试将 Azure 表从一个存储帐户复制到另一个存储帐户。但是在执行此复制时,我想将列的日期时间值更改为 Unix 时间戳。
我正在使用 Azure 数据工厂复制活动。如果我在输出数据集中将列类型指定为 Int64 InitialDate
则会收到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
,还有其他翻译吗?我在网络上找不到任何信息。
理解正确,您希望在使用 DataFactory 将数据从一个存储表复制到另一个存储表期间更改列值。根据我的经验,数据工厂复制活动目前不支持它。
在我的选择中,有一个解决方法是我们可以使用 Azure 计划的 Web 作业来执行此操作。在 Web 作业中,可以使用 Azure 存储 SDK 复制表记录和更改列值,然后插入到另一个表中。