Россия+7 (495) 960-65-87

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

Россия+7 (495) 960-65-87
Шрифт:
0 8760

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.

Успехов!

Оригинал

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

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


Новые 
Новые
Лучшие
Старые
Сообщество
Подписаться 
Подписаться на дискуссию:
E-mail:
ОК
Вы подписаны на комментарии
Ошибка. Пожалуйста, попробуйте ещё раз.
Отправить отзыв
    ПОПУЛЯРНЫЕ ОБСУЖДЕНИЯ НА SEONEWS
    Google Data Studio: делаем красивые отчеты по контекстной рекламе для клиентов
    Светлана Зубрицкая
    1
    комментарий
    0
    читателей
    Полный профиль
    Светлана Зубрицкая - Нужно убрать пробелы между строк и заменить кавычки на вот такие "
    #SEOnews14: мы празднуем – вы получаете подарки!
    Rizat Sundetov
    1
    комментарий
    0
    читателей
    Полный профиль
    Rizat Sundetov - 14
    Как ускорить сайт на WordPress, чтобы получить 100/100 в Google PageSpeed Insights
    Георгий
    1
    комментарий
    0
    читателей
    Полный профиль
    Георгий - Все что рекомендуется в этой статье есть у w.tools. Ни разу не пожалел что подключился. Своя CDN сеть, кеш статики и динамики, минификация js\css и кешируемого html, оптимизация всех типов картинок и еще куча всего полезного. Сайт летает и я не знаю проблем. Могу рекомендовать от души.
    Война с дубликатами. Как нужно и как не нужно канонизировать URL
    Ann Yaroshenko
    5
    комментариев
    0
    читателей
    Полный профиль
    Ann Yaroshenko - Дмитрий, добрый день! Если вы проставили на странице с автозапчастями rel=canonical ( а я вижу в коде, что не проставили) или в HTTP хедере, то бот, как правило: выберит ту страницу главной, которую вы указали в rel=canonical ссылке. Eсли же вы этого не сделали, то бот сам выберит оригинал (алгоритмы, по которым бот это делает, скрыты Googl-ом)
    BDD 2019: Как перестать убивать время на сбор и обработку тонны данных для SEO-аудита
    Feth
    1
    комментарий
    0
    читателей
    Полный профиль
    Feth - Тот момент, когда от статьи в интернете получаешь больше полезных знаний и навыков, чем от своего начальства. По статьям нетпиковцев можно учебник про SEO уже сшивать, ребята молодцы. Спасибо, что делитесь информацией.
    «Аудит, чтобы ты заплакала…», или Что делать, когда получил сторонний аудит сайта
    TehotdelSamara@gmail.com
    4
    комментария
    0
    читателей
    Полный профиль
    TehotdelSamara@gmail.com - Артур! Задели своим комментарием "за живое") Абсолютно,... целиком.... и полностью согласны с вами! А именно, с тем, что продажи клиента зависят в первую очередь от клиента, перечисленных вами выше и других факторов! А ещё с тем, что чистое SEO в классическом его понимании зачастую уже не даёт результата в виде роста продаж. Если хотим увеличить продажи - нужно бить по всем фронтам, SEO - только один из них, об этом клиент должен знать и быть предупреждён... Касательно нашей рекомендации смотреть на эффективность по тому, увеличилось ли число и качество заказов или нет - в контексте данной статьи говорится о том, что SEO бывает разное. По большому счёту, результат SEO — это именно привлекаемый поисковый трафик. И этот трафик может быть качественным, целевым или нет. Кроме того, трафик должен расти. Мы говорим о том, что если специалист хорошо проработал семантику, изучил бизнес клиента, исключил фразы с околонулевым спросом и проч., то трафик должен быть целевым, растущим, что значит рост обращений в отдел продаж клиента !при условии! , что само предложение и сайт располагают к тому, чтобы обратиться в отдел продаж клиента. Действительно, современное SEO предполагает учёт значительного количества факторов, в том числе и коммерческих. Без этого и трафика зачастую не будет. Нужно доносить всё это до клиента, включать подобные работы в стоимость по SEO или отдельно. А с "хочу все подряд за 25к в месяц" мы сталкиваемся тоже. Тут только пояснять и подсказывать, давать рекомендации заранее, чтобы клиент заранее был предупреждён о том, что ему требуется сделать параллельно с нашими работами по SEO. И в итоге вся эта деятельность должна привести к росту целевого трафика как на сайт, так и в отдел продаж.
    Как построить качественный ссылочный профиль на основе конкурентов
    Ирина
    7
    комментариев
    0
    читателей
    Полный профиль
    Ирина - Давно сотрудничаю с megaindex.com и считаю данный сервис одним из лучших в сео сегменте рунета да и не только рунета. Пользуюсь их инструментами для аналитики своих работ и выявлению своих и чужих ошибок. Да и ссылочный профиль, как и говорится в данной статье сделать гораздо проще и правильней при помощи как раз мегаиндекса. Добавлю еще что инструмент для поиска конкурентов у мегаиндекса очень удобный и простой в применении.
    10 элементов сайта, которые гарантированно отпугнут посетителей
    Андрей
    2
    комментария
    0
    читателей
    Полный профиль
    Андрей - Ну типа потому что клиентское seo больше для коммерции предназначено. Типа контентники и сами знают что делать. В коммерции можно тысячу причин найти чтобы поработать с сайтом, а с контентными такие фокусы уже не прокатят, поэтому и не пишут. Всё продвижение для контентников сеошники описывают в трех словах: скорость, качество, систематичность. А, ну ещё конечно же СЯ, как же я про него забыл (фундамент жеть!).
    Как вывести сайт в ТОП 10 Google в 2019 году
    Анна Макарова
    356
    комментариев
    0
    читателей
    Полный профиль
    Анна Макарова - Сергей, в нашей отрасли много заимствований из английского, иногда с ними быстрее, проще .Но будем стараться ))
    Как улучшить репутацию сайта недвижимости с помощью крауд-маркетинга
    Евгений
    2
    комментария
    0
    читателей
    Полный профиль
    Евгений - а у вас какое впечатление от статьи?
    ТОП КОММЕНТАТОРОВ
    Комментариев
    910
    Комментариев
    834
    Комментариев
    554
    Комментариев
    540
    Комментариев
    483
    Комментариев
    373
    Комментариев
    356
    Комментариев
    262
    Комментариев
    249
    Комментариев
    171
    Комментариев
    156
    Комментариев
    137
    Комментариев
    121
    Комментариев
    105
    Комментариев
    97
    Комментариев
    97
    Комментариев
    96
    Комментариев
    80
    Комментариев
    77
    Комментариев
    71
    Комментариев
    67
    Комментариев
    60
    Комментариев
    59
    Комментариев
    57
    Комментариев
    55

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