Шаблон DotLiquid для вывода SQL-запроса на выполнение приложений логики Azure

#azure #azure-logic-apps #dotliquid #azure-logic-app-standard

Вопрос:

Действие SQL-запроса выполнения приложений логики Azure возвращает вывод JSON следующим образом:

 [
  [
    {
      "ProductID": 7000,
      "ProductName": "Some name"
    },
    ...
  ]
]
 

Какой синтаксис было бы правильно использовать с DotLiquid в действии преобразования JSON в JSON приложений логики Azure для итерации по этим вложенным массивам, чтобы избавиться от вложенности, например, для создания чего-то подобного:

 {
  "products": [
    {
      "productId": 7000,
      "productName": "Some name"
    },
    ...
  ]
}
 

Ответ №1:

Поскольку вы все равно собираетесь использовать учетную запись интеграции, это преобразование можно легко выполнить с помощью действия Выполнить код JavaScript в приложении логики со следующим кодом:

 var input_array = workflowContext.actions.Compose.outputs;
var output = { "products": [] };

for (let i = 0; i < input_array.length; i  ) {
  for (let j = 0; j < input_array[i].length; j  ) {
    output.products.push(input_array[i][j]);
  }
}

return output;
 

Результат:

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

Комментарии:

1. Спасибо! Я понимаю, почему вы предполагаете, что я использую учетную запись интеграции, но на самом деле это не так в данном случае. Сервер SQL, к которому я обращаюсь, представляет собой базу данных SQL Azure с относительно широкими правилами брандмауэра.

2. @SvenAelterman, как вы можете не использовать учетную запись интеграции, если в своем вопросе вы упомянули «Действие преобразования JSON в JSON», которое работает только с учетной записью интеграции? docs.microsoft.com/en-us/azure/logic-apps/…

3. Интересный улов в документах. Я использую стандартное приложение логики, которое также позволяет использовать эти преобразования. Однако приложения логики плана потребления не обладают этими функциями.

Ответ №2:

После продолжительных проб и ошибок я пришел к этому решению:

 {
    "products": [
        {% for product in content[0] %}
        {
            "productId": {{ product.ProductID }}
        }{% unless forloop.last %},{% endunless %}
        {% endfor %}
    ]
}