Как загрузить данные из Google BigQuery, возвращая фрейм данных?

Google BigQuery — это бессерверное хранилище данных, полностью управляемое Google. Он поддерживает хранение и доступ к огромным данным, а также позволяет легко запрашивать данные.
Мы можем получить доступ к Google BigQuery из Google Cloud Console, в которой размещено множество полезных API и других сервисов для создания, развертывания и масштабирования наших приложений. Одним из таких полезных сервисов Google Cloud Console является API для очистки данных Youtube.
Обратитесь к этой статье, чтобы узнать, как использовать Google Cloud Console для очистки данных Youtube.
С Google BigQuery вы можете буквально делать все по-крупному! Вы можете хранить файлы на своем диске Google здесь, создавать свои собственные наборы данных и проекты, а также использовать уже существующие и обновленные наборы данных для запросов. Поскольку он использует ANSI SQL внутри, он поддерживает запросы как на платформе, так и за ее пределами.
Это подводит нас к главному вопросу; мы можем загрузить данные с этой платформы во фрейм данных? Мы точно можем! Библиотека pandas поддерживает методы буквально для любого обмена данными, и у нее есть специальный метод для чтения данных из bigquery.
Узнайте больше о библиотеке Pandas здесь
Прежде чем мы перейдем к запросу данных во фрейм данных, необходимо выполнить некоторые предварительные условия для выполнения этой задачи.
Предварительные условия для использования Google BigQuery
Теперь, прежде чем мы продолжим, убедитесь, что у вас есть учетная запись Google для использования.
Откройте браузер и посетите Облачная консоль Google. Вы увидите значок с надписью Create Project
. Нам нужен проект на платформе, чтобы иметь доступ к наборам данных платформы bigquery.

Дайте подходящее имя проекту, чтобы его было легко найти. Вы должны выбрать проект, который вы создали, из выпадающего списка. Обязательно скопируйте идентификатор проекта вашего текущего проекта и сохраните его в безопасном месте. После создания проекта нам необходимо создать учетную запись службы в текущем проекте. В левом меню навигации найдите IAM и admin.

Вы найдете значок создания учетной записи службы в верхней части страницы. Создайте учетную запись службы.

После того, как вы нажмете «Создать», вам будет предложено назвать учетную запись. Дайте подходящее имя и описание. В качестве разрешений выберите BigQuery Data Viewer и BigQuery User.

После создания служебной учетной записи вы увидите сведения об учетной записи на странице. Нажмите на три точки и перейдите к клавишам управления. в ADD KEY
выпадающий раздел, выберите Create new key
.


Убедитесь, что тип ключа — JSON. Затем файл json будет загружен в вашу систему. Сохраните его в надежном месте, потому что он понадобится нам позже.
Это все, что касается предпосылок. Обязательно сохраните идентификатор проекта и ключ json.
Наборы данных
Давайте посмотрим, как мы можем получить доступ к наборам данных и таблицам из Google BigQuery.
На странице приветствия облачной консоли (убедитесь, что вы находитесь в созданном вами проекте). Перейдите к BigQuery
раздел меню навигации.

После того, как вы войдете в раздел bigquery, нажмите на View Dataset
. Повторите шаг на странице сведений о продукте.

После того, как вы нажмете на просмотр набора данных, вы сможете увидеть загрузку нового набора данных в левой части страницы. Это общедоступный набор данных, и он содержит множество таблиц внутри m = тысяч наборов данных. Вы можете выбрать любой набор данных и таблицу из него.

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

Изучение метода read_gbq
Метод read_gbq позволяет нам взаимодействовать с Google Cloud Console и запрашивать таблицы. Давайте посмотрим на метод и его аргументы.
pandas.read_gbq(query, project_id=None, index_col=None, col_order=None, reauth=False, auth_local_webserver=True, dialect=None, location=None, configuration=None, credentials=None, use_bqstorage_api=None, max_results=None, progress_bar_type=None)
Давайте посмотрим на важные параметры этого метода.
query
– Этот аргумент используется для хранения запроса, который вы пишете для загрузки данных.
project_id
– В этом аргументе хранится идентификатор проекта, который вы используете для запросов.
dialect
– Определяет диалект, который мы используем для запросов. Варианты legacy
и standard
.
credentials
– Этот аргумент хранит учетные данные авторизации Google.
Как запросить таблицу и вернуть фрейм данных?
Перед запуском нам нужно установить один пакет.
Поскольку мы используем Совместная работа Google, нам не нужно устанавливать пакет вручную. Он уже установлен. Но если мы используем другие ноутбуки или среды, нам необходимо установить его.
Давайте импортируем библиотеки и пакеты.
import pandas as pd
from google.cloud import bigquery
from google.oauth2 import service_account
Библиотека pandas импортируется для создания фрейма данных. Пакет bigquery импортируется из облака Google. Мы также импортируем библиотеку авторизации для авторизации ключа.
Сохраните путь к файлу json, который вы скачали ранее, в переменной с именем credspath.
credspath="path_to_jsonfile"
Далее мы собираемся авторизовать учетные данные и сохранить их в переменной под названием Creds.
creds = service_account.Credentials.from_service_account_file(credspath)
Давайте перенесем идентификатор проекта в нашу среду.
projid = 'your_project_id'
Давайте начнем запрос прямо сейчас!
Мы увидим два примера. В первом примере мы собираемся загрузить всю таблицу во фрейм данных. Во втором примере мы собираемся выбрать только несколько строк из фрейма данных по условию.
Загрузка всей таблицы Во фрейм данных
Набор данных, который мы использовали для этого метода, называется набором геномных данных. Он был выпущен в 2016 году и содержит информацию о видах каннабиса.
В этом наборе данных есть имена столбцов, называемые reference_name
,start
,end
и так далее.
Запрос для загрузки всех данных:
query = """
SELECT *
FROM `bigquery-public-data.genomics_cannabis.MNPR01_201703`
LIMIT 100
"""
В переменной query хранится запрос, который мы пишем для загрузки данных.
SELECT *
это оператор, используемый для выбора всех строк таблицы.
Предложение FROM используется для ссылки на таблицу, к которой мы обращаемся. bigquery-public-data
имя набора данных и genomics_cannabis.MNPR01_201703
это имя таблицы.
LIMIT 100 гарантирует, что количество отображаемых строк равно 100.
df = pd.read_gbq(query, project_id=projid, credentials=creds)
print(df)
Только что написанный нами запрос, идентификатор проекта и учетные данные передаются в качестве аргументов методу read_gbq, который возвращает фрейм данных с именем df.

Запрос столбца на основе условия
Набор данных, который мы использовали для этого метода, представляет собой анализ случаев заболевания ковидом в Индии. Он имеет такие столбцы, как states
, confirmed
,deaths
и так далее.
Мы собираемся отобразить штаты, число подтвержденных случаев которых составляет от 45 до 176 235.
query = """
SELECT state
FROM `bigquery-public-data.dataflix_covid.india_covid`
WHERE confirmed BETWEEN 45 AND 176235
LIMIT 100
"""
Мы выбираем столбец состояния из таблицы dataflix_covid.india_covid
. Предложение WHERE используется для выбора штатов, число подтвержденных случаев которых составляет от 45 до 176 235. Количество строк ограничено 100.

Заключение
В заключение урока мы узнали о неблагоприятном использовании Google BigQuery. Обычно он используется для хранения и обработки данных с помощью запросов.
Мы рассмотрели пошаговый подход к созданию учетной записи службы, доступу к учетным данным и просмотру наборов данных.
Мы рассмотрели два метода загрузки данных большого запроса во фрейм данных. Первый загружает всю таблицу во фрейм данных. Во втором методе мы запросили загрузку столбца таблицы на основе определенного условия.
Рекомендации
Узнайте больше об этом методе из официальной документации pandas.
Ссылка на источник