【问题标题】:Change DateTime to Unix timestamp in DataFactory Activity在 DataFactory Activity 中将 DateTime 更改为 Unix 时间戳
【发布时间】:2017-10-15 06:41:45
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢 该表已拥有超过十亿个实体,复制操作需要 10 多个小时。所以我想使用 Datafactory 的 Parallel Copies、DMU 和监视器功能。因此,不能选择带有 Storage SDK 的 WebJobs。无论如何我可以用自定义活动(IDotNetActivity)来做吗?
    • 根据document,它提到我们可以使用自定义活动转换/处理数据。
    • 酷。但是文档没有提到任何关于并行处理的内容。虽然我们可以在 JSON 中指定该属性,但不确定它如何与自定义活动中的代码逻辑一起使用。
    • 根据注释:*Concurrency** is set to **2** so that two slices are processed in parallel by 2 VMs in the Azure Batch pool,看来并行处理是可行的。
    猜你喜欢
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 2014-10-26
    • 2015-04-13
    • 2020-10-09
    • 2013-04-22
    • 2010-11-19
    • 2018-01-04
    相关资源
    最近更新 更多