【问题标题】:Azure Data Factory Expression Query for Copy activity复制活动的 Azure 数据工厂表达式查询
【发布时间】:2019-11-20 20:48:30
【问题描述】:

我正在尝试将数据从表存储复制到另一个存储帐户的另一个表存储,为此,我正在使用 Azure 数据工厂中的复制活动。

我想筛选要复制到接收器表存储的行,因为 Azure 数据工厂提供了一个定义查询的选项。 我想对数据类型为字符串但包含数值的分区键应用过滤器。 我正在查看此文档: https://docs.microsoft.com/en-us/azure/devops/pipelines/process/expressions?view=azure-devops 那里说类型转换对于“eq”、“le”、“ge”等比较运算符是隐式的

所以如果我的查询是“PartitionKey eq 0”它会失败并给出这个错误:

A storage operation failed with the following error 'The remote server returned an error: (400) Bad Request.'.. Activity ID:edf8e608-d25e

但如果我将查询定义为“PartitionKey eq '0'”,它会起作用。

我想获取特定数字范围内的行,我需要将分区键转换为数值,我该怎么做?

startsWith”和“endsWith”也不起作用 例如,此查询 PartitionKey startsWith '10' 给出与上述相同的错误。

看起来像这样: 提前致谢。

【问题讨论】:

    标签: azure copy azure-table-storage azure-data-factory azure-data-factory-2


    【解决方案1】:

    首先,为了确保您的查询有效 - 您可以使用 Azure 门户中的 Storage Explorer(预览版)Query Builder 模式下构建查询:

    然后切换到文本编辑器

    现在,您确定您的查询正确
    让我们将此查询应用于 ADF。没有动态内容 - 这将是完全相同的查询:

    为了创建动态查询 - 我们需要添加变量或参数来定义边界:

    然后,在查询字段中创建一个动态内容,替换查询:

    PartitionKey ge '0' and PartitionKey le '1'
    

    使用concat函数的形式如下:

    @concat('PartitionKey ge ''0'' and PartitionKey lt ''1''')
    

    请注意,我必须通过添加额外的一个 ('') 来引用单引号 (')。
    最后 - 我们只需要用之前定义的参数替换硬编码值:

    @concat('PartitionKey ge ''',pipeline().parameters.PartitionStart,''' and PartitionKey lt ''',pipeline().parameters.PartitionEnd,'''')
    

    就是这样。我希望我能解释如何通过在 Azure 数据工厂中构建动态内容(查询)来实现这一点。

    【讨论】:

      猜你喜欢
      • 2022-01-04
      • 1970-01-01
      • 2020-09-10
      • 2020-09-15
      • 2022-11-18
      • 2021-12-17
      • 2022-11-11
      • 2021-06-10
      • 1970-01-01
      相关资源
      最近更新 更多