Один из общедоступных наборов данных, которые я нашел в 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 дает возможность еще больше поиграть с результатами. Мы можем создать несколько графиков для визуализации результатов. Мы также можем объединить эти данные с другими.

использованная литература