Невозможно получить скалярное значение запроса в базе данных космоса в фабрике данных azure - PullRequest
2 голосов
/ 11 апреля 2020

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

Я использовал запрос SELECT VALUE count(1) from c

Когда я пытаюсь просмотреть данные после вставки этого запроса, я получаю сообщение об ошибке:

One or more errors occurred. Unable to cast object of type  
 'Newtonsoft.Json.Linq.JValue' to type 'Newtonsoft.Json.Linq.JObject'

, как показано на рисунке ниже: снимок моих azure настроек активности поиска

Может ли кто-нибудь помочь мне в устранении этой ошибки, и если это ограничение azure фабрики данных, как я могу получить счетчик всех строк документа cosmos db, используя другие способы внутри azure фабрики данных?

1 Ответ

1 голос
/ 12 апреля 2020

Я точно воспроизвожу вашу проблему на моей стороне.

enter image description here

Я думаю, что результат подсчета не может быть отображен как обычный JsonObject. В качестве обходного пути, я думаю, вы можете просто использовать Azure Функциональное действие (внутри Azure Функциональный метод, вы можете использовать SDK для выполнения любого sql, как вы хотите) для вывода желаемого результата: {"number":10}. Затем связать Azure Функция Activity с другими действиями в ADF.


Здесь есть противоречие:

Запрос sql выводит скалярный массив, а не другие вещи, такие как jsonObject или даже jsonstring .

enter image description here

Однако ADF Look Up Activity принимает только JObject, но не JValue. Я не могу использовать никакую встроенную функцию преобразования, потому что запрос sql должен быть выполнен с правильным синтаксисом в любом случае. Я уже отправил тикет в службу поддержки MS, но мне не повезло с этим ограничением.

enter image description here

Я также попробовал select count(1) as num from c, который работает в космосе ДБ портал. Но у него все еще есть ограничение, потому что sql пересекает разделы.

enter image description here

Итак, все, что я могу здесь сделать, это попытаться объяснить причину root проблемы, но не может изменить поведение продукта.

2 грубых идеи:

1. Попробуйте выполнить сборку без разделов для выполнения выше sql, чтобы получить json вывод.

2. Если число не велико, попробуйте запросить столбцы из db и l oop результат с помощью ForEach Activity.

...