Как использовать Google BigQuery с помощью Python
Лёня Макаров
Product analyst CoMagic
Автор Telegram-канала Datalytics
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
нет комментариев