Фабрика данных 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')
- Когда я отлаживаю конвейер, мы получаем желаемый результат: