首页 > 解决方案 > 'int' 是原语,不支持嵌套属性:Azure 数据工厂 v2

问题描述

我试图在 ADF 中找到一个字符串的子字符串作为活动的一部分。'de'例如,我想从 string中提取 subsctring 'abcde'。我努力了:

@substring(variables('target_folder_name'), 3, (int(variables('target_folder_name_length'))-3))

其中int(variables('target_folder_name_length'))值为 5 且variables('target_folder_name')值为'abcde'

但它给了我:Unrecognized expression: (int(variables('target_folder_name_length'))-3)

另一方面,如果我尝试这个:@substring(variables('target_folder_name'), 2, int(variables('target_folder_name_length'))-3)

这给了我:'int' is a primitive and doesn't support nested properties

我哪里错了?

标签: azure-data-factoryazure-data-factory-2

解决方案


由于您前面的值是静态的,您可以使用下面的动态表达式根据您的要求来实现子字符串值。

@substring(variables('varInputFolderName'), 3, sub(length(variables('varInputFolderName')), 3))

根据此示例,其中 varInputFolderName = String = abcde。

这是此示例的管道 JSON 有效负载。您可以使用它进行进一步测试。

{
    "name": "pipeline_FindSubstring",
    "properties": {
        "activities": [
            {
                "name": "setSubstringValue",
                "type": "SetVariable",
                "dependsOn": [],
                "userProperties": [],
                "typeProperties": {
                    "variableName": "varSubstringOutput",
                    "value": {
                        "value": "@substring(variables('varInputFolderName'), 3, sub(length(variables('varInputFolderName')), 3))",
                        "type": "Expression"
                    }
                }
            }
        ],
        "variables": {
            "varInputFolderName": {
                "type": "String",
                "defaultValue": "abcde"
            },
            "varSubstringOutput": {
                "type": "String"
            }
        },
        "annotations": []
    }
}

推荐阅读