×
Россия +7 (495) 139-20-33

Как использовать Google BigQuery с помощью Python

Россия +7 (495) 139-20-33
Шрифт:
0 11413

Google BigQuery — это безсерверное масштабируемое хранилище данных. Использование безсерверного (облачного) решения — хорошая идея, если у вас нет серьезного бэкграунда в администрировании баз данных. Такой подход позволяет сосредоточиться только на анализе данных и не думать об инфраструктуре хранения данных (шардировании, индексации, компрессии). BigQuery поддерживает стандартный диалект SQL, так что любой, кто когда-либо пользовался SQLными СУБД, с легкостью может начать им пользоваться.

Начало работы с Google BigQuery и создание ключа для сервисного аккаунта

Я не буду подробно объяснять, как начать работу с Google Cloud Platform и завести первый проект, об этом хорошо написано в статье Алексея Селезнева в блоге Netpeak. Когда у нас уже есть проект в Cloud Platform с подключенным API BigQuery, следующим шагом нужно добавить учетные данные.

1. Переходим в раздел «API и сервисы > Учетные данные»:

Как использовать Google BigQuery с помощью Python

2. Нажимаем «Создать учетные данные» > «Ключ сервисного аккаунта»:

Как использовать Google BigQuery с помощью Python

3. Заполняем параметры: пишем название сервисного аккаунта; выбираем роль (как показано на скриншоте ниже, но роль может зависеть от уровня доступов, которые вы хотите предоставить сервисному аккаунту); выбираем тип ключа JSON; нажимаем «Создать»:

Как использовать Google BigQuery с помощью Python

4. Переходим в раздел «IAM и администрирование» > «Сервисные аккаунты»

Как использовать Google BigQuery с помощью Python

5. В колонке «Действия» для созданного нами сервисного аккаунта выбираем «Создать ключ»:

Как использовать Google BigQuery с помощью Python

6. Выбираем формат ключа «JSON» и нажимаем «Создать», после чего будет скачан JSON-файл, содержащий авторизационные данные для аккаунта:

Как использовать Google BigQuery с помощью Python

Полученный JSON с ключом нам понадобится в дальнейшем. Так что не теряем.

Использование pandas-gbq для импорта данных из Google BiqQuery

Первый способ, с помощью которого можно загружать данные из BigQuery в Pandas-датафрейм, — библиотека pandas-gbq. Эта библиотека представляет собой обертку над API Google BigQuery, упрощающую работу с данными BigQuery через датафреймы.
Сначала нужно поставить библиотеку pandas-gbq. Это можно сделать через pip или conda:

Я решил рассмотреть основы работы с Google BigQuery с помощью Python на примере публичных датасетов. В качестве интересного примера возьмем датасет с данными о вопросах на сервисе Stackoverflow.

Как использовать Google BigQuery с помощью Python

Дальше немного поиграем с обработкой данных. Выделим из даты месяц и год.

Как использовать Google BigQuery с помощью Python

Cгруппируем данные по годам и месяцам и запишем полученные данные в датафрейм stats.

Как использовать Google BigQuery с помощью Python

Посчитаем суммарное количество вопросов в год, а также среднее количество запросов в месяц для каждого года, начиная с января 2013 и по август 2018 (последний полный месяц, который был в датасете на момент написания статьи). Запишем полученные данные в новый датафрейм year_stats

Как использовать Google BigQuery с помощью Python

Так как 2018 год в наших данных неполный, то мы можем посчитать оценочное количество вопросов, которое ожидается в 2018 году.

Как использовать Google BigQuery с помощью Python

На основе данных от 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 появятся наши данные:

Как использовать Google BigQuery с помощью Python

Итак, мы рассмотрели импорт и экспорт данных в BiqQuery из Pandas’овского датафрейма с помощью pandas-gbq. Но pandas-gbq разрабатывается сообществом энтузиастов, в то время как существует официальная библиотека для работы с Google BigQuery с помощью Python. Основные сравнения pandas-gbq и официальной библиотеки можно посмотреть тут.

Использование официальной библиотеки для импорта данных из Google BiqQuery

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

Как использовать Google BigQuery с помощью Python

Как видно, по простоте синтаксиса, официальная библиотека мало чем отличается от использования pandas-gbq. При этом я заметил, что некоторые функции (например, date_trunc) не работают через pandas-gbq. Так что я предпочитаю использовать официальное Python SDK для Google BigQuery.

Чтобы импортировать данные из датафрейма в BigQuery, нужно установить pyarrow. Эта библиотека обеспечит унификацию данных в памяти, чтобы dataframe соответствовал структуре данных, нужных для загрузки в BigQuery.

Проверим, что наш датафрейм загрузился в BigQuery:

Как использовать Google BigQuery с помощью Python

Прелесть использования нативного SDK вместо pandas_gbq в том, что можно управлять сущностями в BigQuery, например, создавать датасеты, редактировать таблицы (схемы, описания), создавать новые view и т. д. В общем, если pandas_gbq — это скорее про чтение и запись dataframe, то нативное SDK позволяет управлять всей внутренней кухней

Ниже привожу простой пример, как можно изменить описание таблицы:

Также с помощью нативного Python-SDK можно вывести все поля из схемы таблицы, отобразить количество строк в таблице

Как использовать Google BigQuery с помощью Python

Если таблица уже создана, то в результате новой передачи датафрейма в существующую таблицу будут добавлены строки

Как использовать Google BigQuery с помощью Python

Заключение

Вот так с помощью несложных скриптов можно передавать и получать данные из Google BigQuery, а также управлять различными сущностями (датасетами, таблицами) внутри BigQuery.

Успехов!

Оригинал

(Голосов: 3, Рейтинг: 5)
Читайте нас в Telegram - digital_bar

Есть о чем рассказать? Тогда присылайте свои материалы Ане Макаровой


Новые 
Новые
Лучшие
Старые
Сообщество
Подписаться 
Подписаться на дискуссию:
E-mail:
ОК
Вы подписаны на комментарии
Ошибка. Пожалуйста, попробуйте ещё раз.
Отправить отзыв
ПОПУЛЯРНЫЕ ОБСУЖДЕНИЯ НА SEONEWS
Что скрывает «Прогноз бюджета Яндекс.Директ»?
Михаил Мухин
15
комментариев
0
читателей
Полный профиль
Михаил Мухин - Здравствуйте! 1-2. Считает стенд. Ссылка на него дана, но могу повторить: online.p-c-l.ru/competition/task/card/id/106. Нажмите на кнопку "Начать" и заранее приготовьте прогноз бюджета Яндекс. Суть расчета: перебор комбинаций всех ставок на всех фразах, построение бюджетных когорт - бюджетов с одинаковым СРС, отбор в каждой когорте бюджета с максимальным количеством кликов и ..., да упорядочивание этих бюджетов по мере возрастания СРС, причем берем не все, а с фиксированным шагом. 3. Гугл считается через поправочные коэффициенты. Мы перевариваем океан данных и представляем их. На удивление, получается не менее, хотя и не более точно, как и прогноз Яндекс. Конечно, нужно понимать, что это очень примерные прикидки, фактически перевод неточного прогноза Яндекс в удобочитаемую форму, не больше. Самое интересное начинается, когда применяешь метод бюджетных когорт к измерению показателей фраз на реальной рекламной кампании в режиме 48х7. Первые результаты очень хорошие. Если хотите присоединиться к бесплатному тестированию, напишите Эльвире r-support@r-broker.ru. В теме укажите "хочу присоединиться к тестам Умного управления рекламой"
Ссылочное продвижение локальных сайтов: ТОП худших SEO-методов
demimurych
8
комментариев
0
читателей
Полный профиль
demimurych - о господи. это для регионального сайта? в яндексе? где у сайта по региону конкурентов меньше чем выдачи на двух страницах из которых перваш это реклама москвы? потешно ей богу. ктото чего то не понеимает.
Зачем подменять контент на сайте: разбираем инструмент и развенчиваем мифы
Дмитрий Сульман
4
комментария
0
читателей
Полный профиль
Дмитрий Сульман - Все верно, об этом я и говорю. У крупных компаний есть много данных и они имеют доступ к дорогим технологиям и решениям для персонализации контента. Топовые западные сервисы для персонализации, такие как RichRelevance или Dynamic Yield, стоят от нескольких тысяч до десятков тысяч долларов в месяц. Понятно, что малый бизнес не может себе этого позволить. Да даже если бы чисто теоретически и мог, то это вряд ли бы имело хоть какой-то смысл. Во-первых, у малого бизнеса недостаточно данных, чтобы подобные алгоритмы персонализации начали эффективно работать, а во-вторых, тот профит, который МСБ получит от персонализации, никогда не покроет таких расходов. Мы же предлагаем решение, доступное как раз для малого и среднего бизнеса. При этом наше решение комплексное: МультиЧат - это одновременно и инструмент для персонализации, и для коммуникации.
От мечты стать юристом к собственному SMM-агентству. Как найти себя в современном цифровом мире
Виктор Брухис
5
комментариев
0
читателей
Полный профиль
Виктор Брухис - Статья выглядит так, как пожелали редакторы и интервьюер) Вопросы к интервью подбирал не я)) Хотя, в целом я согласен с вашим видением. А за пожелание удачи большое спасибо!
Монетизируйте свой сайт вместе с VIZTROM
VIZTROM
3
комментария
0
читателей
Полный профиль
VIZTROM - Добрый день! Так как мы сейчас работаем в приватном режиме, Вы врятли можете объективно оценить нашу рекламную площадку. У нас будет официальный запуск 3 марта для вебмастеров. Приглашаем Вас присоединиться к нам и лично посмотреть наш функционал.
Digital-разговор: Михаил Шакин про SEO, Google и заработок в интернете
Анна Макарова
368
комментариев
0
читателей
Полный профиль
Анна Макарова - Подготовим ) Пока предлагаю почитать интервью с Денисом Нарижным из той же серии. Там стенограмма =) www.seonews.ru/interviews/digital-razgovor-denis-narizhnyy-pro-ukhod-iz-seo-i-zarabotok-na-partnerkakh/
Как удвоить выручку за счет продвижения в поиске. Кейс coffee-butik.ru
Максим Боровой
3
комментария
0
читателей
Полный профиль
Максим Боровой - Последний вопрос (извиняюсь за количество) - почему на "В корзину" стоит Nofollow. Осознанно для распределение весов?
Автоматические SEO-аудиты: как напугать некорректными выводами
SEOquick
38
комментариев
0
читателей
Полный профиль
SEOquick - Парсинг сайтов – это самый лучший способ автоматизировать процесс сбора и сохранения информации. Конкурентов всегда нужно мониторить, а не сравнивать свой сайт через автоматический аудит анализатора.
Почему вы торгуетесь за показы, даже если платите за клики
Константин Требунских
3
комментария
0
читателей
Полный профиль
Константин Требунских - Дмитрий, спасибо за комментарий, хорошие замечания!) 1. "Какая-то подмена понятий. CPM у “Original Works” взлетает не от того, что у них РАВНАЯ цена клика, а оттого, что вы "с потолка" поставили ему CPC в 2 раза выше, чем был. Логично, что и CPM в 2 раза увеличился (см. формулу выше). Если бы вместо 5 вы всем решили поставить 2 или 1.5, то он бы наоборот уменьшился." Вы правы, что CPM уменьшился бы. В первой и второй табличке берем одинаковое количество показов (именно за них мы платим сначала) и считаем данные, в том числе CPC. Мы поставили рекламодателей в одинаковые условия и посмотрели их эффективность в разрезе цены клика при одинаковом количестве показов. А затем изменился аукцион, и, взяв получившиеся данные по кликам и CTR, мы поставили рекламодателей тоже в одинаковое положение, но уже по цене клика, ведь мы теперь за него платим. Посчитали эффективность в разрезе уже CPM. Тут если и есть подмена понятий, то она точно не моя, а рекламных систем, потому и обозначена, как "ход конем" :) 2. "Ок, смотрим таблички "как оно было" и "как оно стало". Было: система суммарно за 2 000 денег показала рекламу 4 000 раз. Стало: система суммарно за 2 000 денег показала рекламу 13 500 раз. Сомнительный профит для системы." Вы правы, именно поэтому для рекламодателей с низким CTR ставка будет выше, чем для рекламодателей с высоким CTR. Просто чтобы система окупилась. Потому что, системе выгодно продавать показы тем, у кого кликов будет больше (ведь они платят за клик). По факту реальные цены за клик в аукционе будут как в таблице 2. Но ранжирование системы проводят по таблице 5.
Где SEO-специалист может углубить свои навыки в области поискового продвижения
Ирина Полинина
1
комментарий
0
читателей
Полный профиль
Ирина Полинина - Полезно! Спасибо
ТОП КОММЕНТАТОРОВ
Комментариев
910
Комментариев
834
Комментариев
554
Комментариев
540
Комментариев
483
Комментариев
373
Комментариев
368
Комментариев
262
Комментариев
249
Комментариев
171
Комментариев
156
Комментариев
139
Комментариев
121
Комментариев
108
Комментариев
97
Комментариев
97
Комментариев
96
Комментариев
85
Комментариев
80
Комментариев
77
Комментариев
67
Комментариев
60
Комментариев
59
Комментариев
57
Комментариев
55

Отправьте отзыв!
Отправьте отзыв!