Я выполняю конвейер на основе триггера для копирования данных из хранилища BLOB-объектов в базу данных SQL. В каждом файле большого двоичного объекта есть множество JSON, из которых мне нужно скопировать лишь несколько из них, и я могу различать их на основе пары ключ-значение, присутствующей в каждом JSON.
Итак, как отфильтровать те JSON, содержащие это значение, соответствующее общему ключу?
Один файл Blob выглядит так. Теперь, когда происходит копирование, данные должны фильтроваться в соответствии с именем события: "...".
Фабрика данных, как правило, только перемещает данные, но не изменяет их. То, что вы пытаетесь сделать, может быть выполнено с помощью промежуточной таблицы в приемнике sql.
Сначала вы должны загрузить значения json как есть из хранилища больших двоичных объектов в промежуточную таблицу, а затем скопировать их из промежуточной таблицы в реальную таблицу, где они вам нужны, применяя свою логику для фильтрации в команде sql, используемой для ее извлечения.
Помните, что базы данных sql имеют встроенные функции для обработки значений json: https://docs.microsoft.com/en-us/sql/relational-databases/json/json-data-sql-server?view=sql-server-2017
Надеюсь, это помогло!
Как я уже сказал, фабрика данных не изменяет и не фильтрует данные самостоятельно. Вы можете сделать это сейчас с потоками данных, но для этого требуется кластер блоков данных, и это будет намного дороже, чем то, что я предлагаю. Если вы найдете более дешевый способ, чем я сказал, пожалуйста, скажите мне! :)
Хорошо спасибо. Поэтому я пошел по дорогому пути блоков данных, но поток данных не поддерживает JSON (мой формат данных). Как теперь его преобразовать? с помощью питона? если да, то не могли бы вы немного рассказать мне о процессе?
В настоящее время у нас нет возможности для действия копирования для фильтрации содержимого (за исключением исходного кода sql). В вашем сценарии похоже, что вы уже знаете, какие значения нужно опустить, по пути будет иметь действие «Хранимая процедура», после действия копирования, которое будет просто удалять значения, которые вам не нужны из таблицы, это должно быть легко реализовать, но в зависимости от объема данных это может привести к проблемам с производительностью. Другим вариантом является очистка файла JSON на стороне хранилища перед его приемом.
Спасибо за вашу помощь !. Ты прав. Итак, дело в том, что мы экспортируем данные из APP Center в Application Insights, а затем непрерывно экспортируем в учетную запись хранения. Знаете ли вы, есть ли выход в этом цикле, чтобы отфильтровать данные. Или у вас есть другая идея использовать, возможно, другое хранилище для экспорта информации о приложении, чтобы мы могли контролировать изменение данных.
Спасибо за вашу помощь.! Я понимаю вашу точку зрения, и, возможно, это могло бы помочь мне тоже. Но главное заключается в том, что вместо использования промежуточной таблицы я могу напрямую загружать все в таблицу SQL, а затем перемещать ее дальше, изменяя ее. Суть в том, что в любом случае я буду платить, пока данные записываются в промежуточную таблицу из хранилища BLOB-объектов, поэтому я плачу за запись целых данных. Вместо этого я просто хочу скопировать определенные выбранные данные, чтобы снизить стоимость копирования. Или вы имеете в виду что-то другое?