Фабрика данных Azure, динамическое содержимое

У меня есть следующий вывод из веб-активности.

      {
    "value": [
        {
            "id": "/subscriptions/xy_csv",
            "name": "xy_csv",
            "type": "Microsoft.code",
            "etag": "6200",
            "properties": {
                "folder": {
                    "name": "samplecodes"
                },
                "content": {
                    "query": "select * from table 1",
                    "metadata": {
                        "language": "sql"
                    },
                    "currentConnection": {
                        "databaseName": "demo",
                        "poolName": "Built-in"
                    },
                    "resultLimit": 5000
                },
                "type": "SqlQuery"
            }
        },
        {
            "id": "/subscriptions/ab_csv",
            "name": "ab_csv",
            "type": "Microsoft.code",
            "etag": "6200",
            "properties": {
                "folder": {
                    "name": "livecode"
                },
                "content": {
                    "query": "select * from table 2",
                    "metadata": {
                        "language": "sql"
                    },
                    "currentConnection": {
                        "databaseName": "demo",
                        "poolName": "Built-in"
                    },
                    "resultLimit": 5000
                },
                "type": "SqlQuery"
            }
        }
]

Я хотел бы создать активность фильтра после веб-активности, чтобы отфильтровать элементы, сохраненные под именем папки «livecode».

В поле элемента действия фильтра у меня есть - @activity('Web1').output.value

В поле условия у меня есть -- @startswith(item().properties.folder.name,'livecode')

Веб-активность выполнена успешно, но активность фильтра не удалась из-за этой ошибки.

      {
    "errorCode": "InvalidTemplate",
    "message": "The execution of template action 'FilterFilter1' failed: The evaluation of 'query' action 'where' expression '@startswith(item().properties.folder.name,'sql')' failed: 'The expression 'startswith(item().properties.folder.name,'sql')' cannot be evaluated because property 'folder' doesn't exist, available properties are 'content, type'.",
    "failureType": "UserError",
    "target": "Filter1",
    "details": ""
}

такое ощущение, что я ошибаюсь в том, как я написал фильтр динамического содержимого условия для перехода к properties.folder.name. Я не уверен, чего не хватает в моем состоянии. Кто-нибудь может помочь? спасибо Большое спасибо.

1 ответ

Ошибка связана с тем, что объект вывода веб-активности может не содержать иногда.

  • Я взял следующий json и получил ту же ошибку:
      {
   "value":[
      {
         "id":"/subscriptions/xy_csv",
         "name":"xy_csv",
         "type":"Microsoft.code",
         "etag":"6200",
         "properties":{
            "content":{
               "query":"select * from table 1",
               "metadata":{
                  "language":"sql"
               },
               "currentConnection":{
                  "databaseName":"demo",
                  "poolName":"Built-in"
               },
               "resultLimit":5000
            },
            "type":"SqlQuery"
         }
      },
      {
         "id":"/subscriptions/ab_csv",
         "name":"ab_csv",
         "type":"Microsoft.code",
         "etag":"6200",
         "properties":{
            "folder":{
               "name":"livecode"
            },
            "content":{
               "query":"select * from table 2",
               "metadata":{
                  "language":"sql"
               },
               "currentConnection":{
                  "databaseName":"demo",
                  "poolName":"Built-in"
               },
               "resultLimit":5000
            },
            "type":"SqlQuery"
         }
      }
   ]
}

введите описание изображения здесь

  • Итак, вам нужно изменить условие фильтра, чтобы проверить, содержит ли онfolderключ или не использовать следующий динамический контент. Я взял вывод вашей веб-активности в качестве значения параметра и вынул ключ папки изpropertiesобъект:
      @startswith(if(contains(item().properties,'folder'),item().properties.folder.name,''),'livecode')

введите описание изображения здесь

  • Когда я отлаживаю конвейер, мы получаем желаемый результат:

введите описание изображения здесь

Другие вопросы по тегам