int является примитивом и не поддерживает вложенные свойства: Azure Data Factory v2 - PullRequest
0 голосов
/ 09 марта 2020

Я пытаюсь найти подстроку строки как часть действия в ADF. Например, я хочу извлечь подстроку 'de' из строки '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

Куда я иду не так?

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

Так как ваши предыдущие значения - stati c, вы можете использовать выражение ниже Dynami c, чтобы получить значение подстроки согласно вашему требованию.

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

Где varInputFolderName = String = abcde согласно этому sample.

Вот конвейер 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": []
    }
}
0 голосов
/ 09 марта 2020

Используйте indexof . См. Мой пример ниже:

@substring(variables('testString'), indexof(variables('testString'), variables('de')), length(variables('de')))

enter image description here

Вывод переменной 'result':

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...