bigquery-bigframes
Навык BigFrames описывает работу с BigQuery DataFrames — Python-библиотекой, которая предоставляет знакомый pandas- и scikit-learn-подобный API поверх вычислений BigQuery. Он рассчитан на написание кода для датафреймов, очистки, преобразования, анализа и ML в ноутбуке, когда вычисления выгодно оставить в облаке. Основная идея источника — использовать операции BigFrames и распределённую обработку BigQuery, а не без необходимости скачивать весь набор данных в память клиента. Карточка не предназначена для SQL-first задач или прямого использования google-cloud-bigquery client library: для них исходный frontmatter рекомендует отдельный bigquery-basics. После импорта источником рекомендуется включить partial ordering mode. Он ослабляет требования к строгому порядку строк и может ускорить обработку, но меняет ожидания от операций, зависящих от порядка. Для быстрого просмотра данных источник предлагает peek(n): он возвращает случайную выборку и подходит для первичной проверки. head(n) сохраняет строгий порядок и в partial ordering mode требует предварительной явной сортировки. Это важная практическая граница: просмотр небольшого сэмпла не равен полному сканированию и не должен использоваться как доказательство свойств всех строк. Схему промежуточных результатов тоже нельзя угадывать; её нужно проверять через dtypes и осматривать примеры через display и peek. Источник отдельно предупреждает о to_pandas(). Этот вызов материализует данные в памяти клиента, обходит распределённое выполнение BigQuery и может привести к Out Of Memory. Локализация допустима только для небольшого набора, который безопасно помещается в память, или когда её прямо требует сообщение об ошибке. Если ту же задачу можно выразить методом DataFrame или Series, предпочтительнее DataFrame API, а не сырой read_gbq() с SQL: так сохраняются ленивое выполнение и pandas-подобная абстракция. Для преобразований строк и дат следует использовать встроенные accessors, например str и dt, вместо удалённых UDF. Лямбды в Series.map() и DataFrame.apply() источник не рекомендует: для таких функций нужны специальные udf или remote_function decorators. Для визуализации BigFrames предлагает строить графики непосредственно из DataFrame или Series, включая совместимость с Matplotlib и Seaborn, а при необходимости использовать plot accessor. Когда набор слишком велик для визуализации, его сначала нужно агрегировать или сэмплировать и только потом переносить уменьшенный результат в pandas. В ML рекомендуется пакет bigframes.bigquery.ml, который делегирует обучение масштабируемому ML-движку BigQuery, а не стандартный Scikit-learn, требующий доставки данных в локальную память. Исходник содержит ссылки на примеры линейной и логистической регрессии; это ориентиры для конкретного кода, а не обещание одинаковой поддержки всех моделей. В карточке сохранены отдельные ограничения legacy-пакета bigframes.ml. Использовать его следует только по явному запросу; импорт идёт из bigframes.ml, predict() возвращает DataFrame с предсказаниями и признаками, random_state не поддерживается, а OneHotEncoder и StandardScaler не нужны без отдельного требования, поскольку масштабирование обрабатывается автоматически. Для настройки гиперпараметров готовых GridSearchCV и RandomizedSearchCV нет — нужен собственный цикл. Для ARIMA Plus требуется хронологическая сортировка, разбиение по временной точке и горизонт прогноза не больше обучающего. У PCA отсутствует transform(), поэтому используется predict(). Сохранение модели выполняется через model.to_gbq(), загрузка — через bpd.read_gbq_model(). Эти ограничения делают навык полезным для аккуратного выбора API, но не заменяют проверку версии BigFrames, размера данных, схемы и прав доступа к BigQuery.
Для чего подходит
- Подготовка BigFrames-кода для notebook
- Pandas-подобная обработка данных в BigQuery
- Масштабирование scikit-learn-подобного ML в BigQuery
Установка
Сначала прочитайте SKILL.md и scripts в исходном репозитории. Затем выполните команду в каталоге проекта:
npx skills add https://github.com/google/skills/tree/main/skills/cloud/bigquery-bigframes