Как использовать Google BigQuery с помощью Python
Google BigQuery — сие безсерверное масштабируемое хранилище данных. Использование безсерверного (облачного) решения — хорошая помысел, если у вас нет серьезного бэкграунда в администрировании баз данных. Экий подход позволяет сосредоточиться только на анализе данных и неважный (=маловажный) думать об инфраструктуре хранения данных (шардировании, индексации, компрессии). BigQuery поддерживает стереотипный диалект SQL, так что любой, кто когда-либо пользовался SQLными СУБД, с легкостью может инициализировать им пользоваться.
Начало работы с Google BigQuery и основание ключа для сервисного аккаунта
Я не буду до малейших подробностей объяснять, как начать работу с Google Cloud Platform и взбудоражить первый проект, об этом хорошо написано в статье Алексея Селезнева в блоге Netpeak. Идеже у нас уже есть проект в Cloud Platform с подключенным API BigQuery, следующим медленно нужно добавить учетные данные.
1. Переходим в раздел «API и сервисы > Учетные данные»:
2. Нажимаем «Создать учетные данные» > «Ключ сервисного аккаунта»:
3. Заполняем объем: пишем название сервисного аккаунта; выбираем роль (ни дать ни взять показано на скриншоте ниже, но роль может быть обусловленным от уровня доступов, которые вы хотите обеспечить сервисному аккаунту); выбираем тип ключа JSON; нажимаем «Создать»:
4. Переходим в раздел «IAM и администрирование» > «Сервисные аккаунты»
5. В колонке «Действия» в (видах созданного нами сервисного аккаунта выбираем «Создать ключ»:
6. Выбираем параметры ключа «JSON» и нажимаем «Создать», после чего перестань скачан JSON-файл, содержащий авторизационные данные пользу кого аккаунта:
Полученный JSON с ключом нам понадобится в дальнейшем. В среднем что не теряем.
Использование pandas-gbq для импорта данных с Google BiqQuery
Первый способ, с помощью которого допускается загружать данные из BigQuery в Pandas-датафрейм, — библиотечка pandas-gbq. Эта библиотека представляет собой обертку по-над API Google BigQuery, упрощающую работу с данными BigQuery от датафреймы.
Сначала нужно поставить библиотеку pandas-gbq. Сие можно сделать через pip или conda:
Я решил посмотреть основы работы с Google BigQuery с помощью Python в примере публичных датасетов. В качестве интересного примера возьмем датасет с данными о вопросах для сервисе Stackoverflow.
Дальше немного поиграем с обработкой данных. Выделим с даты месяц и год.
Cгруппируем данные по годам и месяцам и запишем полученные эмпирика в датафрейм stats.
Посчитаем суммарное количество вопросов в время, а также среднее количество запросов в месяц для каждого лета, начиная с января 2013 и по август 2018 (задний полный месяц, который был в датасете на фаза написания статьи). Запишем полученные данные в новый датафрейм year_stats
Приблизительно как 2018 год в наших данных неполный, ведь мы можем посчитать оценочное количество вопросов, которое предвидится в 2018 году.
На основе данных от StackOverflow разрешено сказать, что популярность pandas из года в годик растет хорошими темпами 🙂
Запись данных из dataframe в Google BigQuery
Следующим медленный я хотел бы показать, как записывать свои цифирь в BigQuery из датафрейма с помощью pandas_gbq.
В датафрейме year_stats получился multiindex изо-за того, что мы применили две агрегирующие функции (mean и sum). Чтоб нормально записать такой датафрейм в BQ надо убрать multiindex. С целью этого просто присвоим dataframe новые колонки.
Затем этого применим к датафрейму year_stats функцию to_gbq. Параметр if_exists = ’fail’ означает, точно при существовании таблицы с таким именем передача никак не выполнится. Также в значении этого параметра можно обратить append и тогда к существующим данным в таблице будут добавлены новые. В параметре private_key указываем конец к ключу сервисного аккаунта.
После выполнения функции в BigQuery появятся наши документация:
Итак, мы рассмотрели импорт и экспорт данных в BiqQuery с Pandas’овского датафрейма с помощью pandas-gbq. Но pandas-gbq разрабатывается сообществом энтузиастов, в ведь время как существует официальная библиотека для работы с Google BigQuery с через Python. Основные сравнения pandas-gbq и официальной библиотеки разрешается посмотреть тут.
Использование официальной библиотеки для импорта данных изо Google BiqQuery
Прежде всего стоит поблагодарить Google ради то, что их документация содержит множество понятных примеров, в часть числе на языке Python. Поэтому я бы рекомендовал войти в курс дела с документацией в первую очередь.
Ниже рассмотрим как востребовать данные с помощью официальной библиотеки и передать их в dataframe.
На правах видно, по простоте синтаксиса, официальная библиотека один-два чем отличается от использования pandas-gbq. При этом я заметил, как некоторые функции (например, date_trunc) не работают насквозь pandas-gbq. Так что я предпочитаю использовать официальное Python SDK про Google BigQuery.
Чтобы импортировать данные из датафрейма в BigQuery, нужно назначить pyarrow. Эта библиотека обеспечит унификацию данных в памяти, чтоб dataframe соответствовал структуре данных, нужных для загрузки в BigQuery.
Проверим, а наш датафрейм загрузился в BigQuery:
Прелесть использования нативного SDK смену) pandas_gbq в том, что можно управлять сущностями в BigQuery, (пред)положим, создавать датасеты, редактировать таблицы (схемы, описания), пописывать новые view и т. д. В общем, если pandas_gbq — это шевелись про чтение и запись dataframe, то нативное SDK позволяет регулировать всей внутренней кухней
Ниже привожу простой экземпляр, как можно изменить описание таблицы:
Также с через нативного Python-SDK можно вывести все поля с схемы таблицы, отобразить количество строк в таблице
Иначе) будет то таблица уже создана, то в результате новой передачи датафрейма в существующую таблицу будут добавлены строки
Охват
Вот так с помощью несложных скриптов можно вручать и получать данные из Google BigQuery, а также быть во главе различными сущностями (датасетами, таблицами) внутри BigQuery.
Успехов!
Куролесник
Источник:
Новости
-
Нормативные документы по повышению квалификации
1. Узаконение Совета Министров Республики Беларусь через 22 июня 2011...
- Опубликован 8 января, 2024
- 0
-
Как сократить количество отказов от «Корзины»
Возможно, каждый владелец интернет-магазина считает, что «Корзиночка» – это очень...
- Опубликован 19 августа, 2019
- 0
-
#SEOnews14: мы празднуем – вы получаете подарки!
У SEOnews сегодняшнее день рождения! Уже 14 лет SEOnews по...
- Опубликован 19 августа, 2019
- 0
-
5 книг от эксперта: Андрей Калинин (Mail.ru Group)
А ваша милость любите читать? Если да, то наша часть...
- Опубликован 19 августа, 2019
- 0
-
Планы на неделю: покорение ТОПа выдачи и 8 часов разборов кейсов
Каждое воскресенье чтение SEOnews публикует подборку образовательных мероприятий на ближайшие...
- Опубликован 18 августа, 2019
- 0
-
Типичные ошибки при запуске рекламы в Яндекс.Директ: как сделать сразу правильно, чтобы не слить бюджет
Контекстная раскручивание — уникальный канал привлечения целевой аудитории получи и...
- Опубликован 18 августа, 2019
- 0
-
7 способов перевода аудио и видео в текст
Давайте начистоту. (у)потреблять люди, которые ненавидят голосовые сообщения. Есть челядь,...
- Опубликован 18 августа, 2019
- 0
нет комментариев