在DataFactory Activity中将DateTime更改为Unix时间戳

时间:2017-05-16 09:12:10

标签: azure-storage azure-table-storage azure-data-factory date-conversion

我正在尝试将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以外还有其他翻译吗?我在网上找不到任何信息。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望在复制数据期间将列值从一个存储表更改为另一个具有DataFactory的存储表。根据我的经验,目前DataFactory Copy Activity不支持它。

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