Всем привет! Меня зовут Елена Боброва, и мы в команде CloudReports работаем над проектом, с помощью которого пользователи облачных систем могут начать легко и просто работать со своими данными.  В последнее время всё большее число компаний внедряют в свою работу различные облачные сервисы, такие как CRM системы, системы управления складом, автоматизация записи клиентов и др. Рано или поздно любой бизнес сталкивается с необходимостью анализировать данные. Облачные системы в большинстве случаев имеют ряд готовых отчетов. Но если требуется более детальный анализ, то данные, как правило, можно забрать с помощью  API и поместить во внешнюю базу (хранилище данных), с которым уже удобно работать аналитикам. Но при получении данных может возникнуть ряд проблем. Вот несколько:  Если данные изменились, например, добавилось какое-то новое поле в API, необходимо перестраивать структуру таблицы в хранилище. Загруженные ранее данные могут меняться, и их нужно как-то обновлять, это может быть достаточно проблематично. Большинство существующих коннекторов к облачным системам работают по устоявшейся парадигме  ETL (Extract, Transform, Load) - забрать, преобразовать, загрузить. Т.е. подключились к API, получили данные, сформировали таблицы и в этом виде загрузили в место назначения.  Но не так давно эта парадигма начала меняться. Ей на смену приходит другой подход EL(T). Идея в том, чтобы забрать данные, загрузить и при необходимости преобразовать уже в конечном месте. При таком подходе есть четкое разделение между перемещением и обработкой данных.    Почему подход поменялся? Потому что появились такие облачные хранилища, как BigQuery, ClickHouse, и данные стало хранить очень дешево. BigQuery - это облачная БД от компании Google с неограниченным хранилищем и высокой скоростью обработки больших массивов данных. А ClickHouse -  это такое же онлайн-хранилище данных от компании Яндекс, можно сказать, что это в какой-то мере российский аналог BigQuery. Основная задача таких сервисов - выполнять аналитические запросы в режиме реального времени на больших данных.  Мы в CloudReports регулярно решаем задачи по загрузке данных из различных облачных систем. Для удобства часть процессов, относящихся непосредственно к загрузке данных в хранилища, мы перенесли в отдельную библиотеку Python и решили открыть к ней публичный доступ.  Библиотека помогает загружать данные из API облачных систем в BigQuery или ClickHouse, используя именно этот новый современный подход - EL(T). Мы сначала загружаем в BigQuery или ClickHouse данные в том виде, в котором их отдает API - JSON, и потом уже работаем с данными, преобразуем и анализируем. В нашем решении мы также решили проблемы, описанные выше. Наш алгоритм забирает json-словари с данными и формирует структуру представлений по сущностям. При этом, если потом появляется новое поле, таблицы перестраиваются автоматически. Покажу на примере, как можно использовать нашу библиотеку. Установка: Подключаем библиотеки.   Будем загружать данные в датасет BigQuery.  Что такое BigQuery, можно подробно прочитать в  статье. Заполняем названия проекта и датасета и указываем путь к ключу сервисного аккаунта Google. Где взять ключ. Инициализируем объекты классов. Для примера загрузим в BiqQuery данные о космических объектах из API NASA -  https://api.nasa.gov/. Будем использовать функцию client.load_json_data. Она принимает json словарь и отправляет данные в хранилище. Мы загружаем два разных типа сущностей: NeoWs и DONKI. Информацию по каждому из них мы в итоге получим в виде таблицы. На этом этапе в нашем датасете были созданы таблицы, куда загружаются все данные в исходном виде и на основе которых дальше будут собираться представления по сущностям. Далее вызываем функцию db.update_tables, чтобы сформировать представления в датасете для новых сущностей.  В датасете BigQuery появилось 2 новых представления, по одному для каждой сущности.  Но в каждом представлении свои поля, в зависимости от того, что было в словаре json. Точно так же данные можно загрузить в ClickHouse. Для этого нужно поменять этап инициализации объектов классов - вместо класса BigQuery инициализируем класс ClickHouse в модуле database. Где взять ключ. В остальном коде ничего не меняем, запускаем и смотрим результат в нашей базе данных в ClickHouse. Как и в прошлом примере, появились 2 таблицы и 2 представления. И загрузились такие же данные, например, вот представление brv_NeoWs:   Далее можно соединять таблицы, строить отчеты и аналитику, используя SQL, Python и BI Инструменты (Google DataStudio, PowerBI, Tableau, DataLens).  Загрузка данных из облачных систем для бизнеса позволяет нам быстро и просто строить вот такие дашборды:   Попробуйте нашу библиотеку на своих данных и пишите комментарии. Будем рады обратной связи.   Разработчик