Как создать секционированную таблицу дат при использовании loadjob в Google Bigquery? - PullRequest
0 голосов
/ 10 апреля 2020

Может ли кто-нибудь объяснить, как создать таблицу с разбивкой по датам при использовании loadjob в Google Bigquery с помощью JobConfig.

https://cloud.google.com/bigquery/docs/creating-column-partitions#creating_a_partitioned_table_when_loading_data

Я не мог понять документацию, если бы кто-то мог объяснить с помощью примера, это было бы очень полезно.

Отредактировано: Итак, я думал, что я понял объект благодаря @irvifa, но я все еще не могу создать таблицу с разделением по времени, вот код, который я пытаюсь использовать.

import pandas
from google.cloud import bigquery


def load_df(self, df):
  project_id="ProjectID"
  dataset_id="Dataset"
  table_id="TableName"
  table_ref=project_id+"."+dataset_id+"."+table_id
  time_partitioning = bigquery.table.TimePartitioning(field="PartitionColumn")
  job_config = bigquery.LoadJobConfig(
                         schema="Schema",
                         destinationTable=table_ref
                         write_disposition="WRITE_TRUNCATE",
                         timePartitioning=time_partitioning
                         )
  Job = Client.load_table_from_dataframe(df, table_ref, 
                                         job_config=job_config)
  Job.result()

Ответы [ 2 ]

2 голосов
/ 10 апреля 2020

Я не знаю, поможет ли это, но вы можете использовать следующий пример для загрузки работы с разделом:

from datetime import datetime, time
from concurrent import futures
import math
from pathlib import Path
from google.cloud import bigquery

def run_query(self, query_job_config):
  time_partitioning = bigquery.table.TimePartitioning(field="partition_date")
  job_config = bigquery.QueryJobConfig()
  job_config.destination = query_job_config['destination_dataset_table']
  job_config.time_partitioning = time_partitioning
  job_config.use_legacy_sql = False
  job_config.allow_large_results = True
  job_config.write_disposition = 'WRITE_APPEND'
  sql = query_job_config['sql']
  query_job = self.client.query(sql, job_config=job_config)
  query_job.result()
0 голосов
/ 11 апреля 2020

Благодаря irvifa.

Я пытался загрузить фрейм данных и искал LoadJobConfig, но это было очень похоже.

Я бы опубликовал свой ответ на тот случай, если кому-то понадобится пример для LoadJob.

import pandas
from google.cloud import bigquery


def load_df(self, df):
  project_id="ProjectID"
  dataset_id="Dataset"
  table_id="TableName"
  table_ref=project_id+"."+dataset_id+"."+table_id
  time_partitioning = bigquery.table.TimePartitioning(field="PartitionColumn")
  job_config = bigquery.LoadJobConfig(
                         schema="Schema",
                         write_disposition="WRITE_TRUNCATE",
                         time_partitioning=time_partitioning
                         )
  Job = Client.load_table_from_dataframe(df, table_ref, 
                                         job_config=job_config)
  Job.result()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...