Один из общедоступных наборов данных, которые я нашел в Google BigQuery, - это данные Википедии. Он предоставляет таблицы для годового подсчета просмотров страниц. Эти таблицы могут использоваться для расчета сводки этих просмотров страниц на основе заголовка, года и вики, которые указываются в зависимости от языка.
Это общедоступные данные, и мы можем использовать учетные данные учетной записи разработчика Google для доступа к ним. После настройки учетных данных мы можем использовать облачный пакет Python google для получения результатов запроса. Интерфейс Google BiqQuery поддерживает запросы SQL, поэтому мы можем предоставить различные критерии фильтрации и функции агрегирования, чтобы получить сводку наших результатов. В настоящем анализе я обобщу результат расчета общего количества просмотров заголовков. Мы отфильтруем результаты на основе вики-сайтов для конкретных языков. Меня особенно интересуют английский и хинди.
Люди, не интересующиеся техническими деталями, могут сразу перейти к нижним разделам.
Шаг 1
Настроить учетные данные приложения google
Вам понадобится учетная запись разработчика Google, и выполните действия по созданию ключей и настройке учетных данных. Подробности можно найти здесь:
- https://cloud.google.com/bigquery/docs/quickstarts/quickstart-cloud-console
import os os.environ['GOOGLE_APPLICATION_CREDENTIALS'] =\ r'/Users/pankaj/PycharmProjects/google/credentianls/travel-planner-196103-ac0eba51cb51.json'
Шаг 2
Создать большой клиент запросов
Мы можем использовать облачную библиотеку Google для взаимодействия с BigQuery.
from google.cloud import bigquery
from google.auth.credentials import Credentials
import pandas as pd
client = bigquery.Client()
Шаг 3
Получить результаты запроса
Нам нужно сформировать запрос, который мы можем запустить на платформе Google BigQuery. Я выполняю запрос, который возвращает все записи с 1 января 2021 года по настоящее время для всех вики, которые начинаются с en. Это будет включать результаты всех английских вики из разных регионов. Я просто отбираю 20 лучших результатов.
query_job = client.query(
"""
SELECT wiki , title , sum(views) as view_counts
FROM `bigquery-public-data.wikipedia.pageviews_2021`
where datehour >= '2021-01-01 00:00:00'
and datehour < '2021-12-31 00:00:00'
and wiki like 'en%'
group by wiki , title
order by view_counts desc limit 20
"""
)
results = list(query_job.result() )
Мы создадим фрейм данных из результатов, который мы сможем использовать для отображения и визуализации.
results_df = pd.DataFrame([ raw.values() for raw in results] , columns = results[0].keys())
Шаг 4
Изучите результаты
Ниже приведен список лучших результатов, полученных с разных вики. Wiki de - это немецкая вики, а fr - французская. Некоторые результаты тривиальны и очевидны, например, Main_Page и Search. Мы можем исключить их из результатов нашего запроса.
results_df
Затем мы определим функцию, которая выполняет все четыре предыдущих шага и возвращает нам результат запроса на основе аргумента запроса. Он также показывает гистограмму для запроса.
def get_query_results(query):
query_job = client.query(query)
results = list(query_job.result() )
results_df = pd.DataFrame([ raw.values() for raw in results] , columns = results[0].keys());
#results_df.plot.barh(x='title', y= 'view_counts', figsize= (12,12));
return results_df;
Теперь мы можем использовать указанную выше функцию, чтобы получить более конкретные результаты. Мы можем попытаться запросить все результаты английской Википедии за 2021 год. Для этой цели я использую следующий запрос.
query = """
SELECT wiki , title , sum(views) as view_counts
FROM `bigquery-public-data.wikipedia.pageviews_2021`
where datehour >= '2021-01-01 00:00:00'
and datehour < '2021-12-31 00:00:00'
and wiki like 'en%' and title not in ( 'Main_Page','Special:Search', '-' )
group by wiki , title
order by view_counts desc limit 20
"""
get_query_results(query)
Затем мы можем повторить вышеуказанный запрос для другого языка. На этот раз выберем хинди
query = """
SELECT wiki , title , sum(views) as view_counts
FROM `bigquery-public-data.wikipedia.pageviews_2021`
where datehour >= '2021-01-01 00:00:00'
and datehour < '2021-12-31 00:00:00'
and wiki like 'hi%' and title not in ('-','मुखपृष्ठ','विशेष:खोज' )
group by wiki , title
order by view_counts desc limit 20
"""
get_query_results(query)
Заключение
Google BigQuery легко запрашивать и работать с ним. Использование общедоступных данных Википедии - отличный способ научиться с ними взаимодействовать и получить интересные результаты. Мы можем сделать еще несколько настроек, создав разные SQL-запросы. Интерфейс Python дает возможность еще больше поиграть с результатами. Мы можем создать несколько графиков для визуализации результатов. Мы также можем объединить эти данные с другими.