Saltar al contenido

Crear una tabla a partir de los resultados de la consulta en Google BigQuery

Revisamos completamente cada artículos de nuestro sitio web con el objetivo de mostrarte siempre información más veraz y certera.

Solución:

Puede hacerlo especificando una tabla de destino en la consulta. Tendrías que usar el Jobs.insert API en lugar de la Jobs.query llamar, y debe especificar writeDisposition=WRITE_APPEND y complete la tabla de destino.

Así es como se vería la configuración, si estuviera usando la API sin procesar. Si está utilizando Python, el cliente de Python debería dar acceso a estos mismos campos:

"configuration": 
  "query": 
    "query": "select count(*) from foo.bar",
    "destinationTable": 
      "projectId": "my_project",
      "datasetId": "my_dataset",
      "tableId": "my_table"
    ,
    "createDisposition": "CREATE_IF_NEEDED",
    "writeDisposition": "WRITE_APPEND",
  

La respuesta aceptada es correcta, pero no proporciona código de Python para realizar la tarea. Aquí hay un ejemplo, refactorizado a partir de una pequeña clase de cliente personalizada que acabo de escribir. No maneja excepciones, y la consulta codificada debe personalizarse para hacer algo más interesante que solo SELECT *

import time

from google.cloud import bigquery
from google.cloud.bigquery.table import Table
from google.cloud.bigquery.dataset import Dataset


class Client(object):

    def __init__(self, origin_project, origin_dataset, origin_table,
                 destination_dataset, destination_table):
        """
        A Client that performs a hardcoded SELECT and INSERTS the results in a
        user-specified location.

        All init args are strings. Note that the destination project is the
        default project from your Google Cloud configuration.
        """
        self.project = origin_project
        self.dataset = origin_dataset
        self.table = origin_table
        self.dest_dataset = destination_dataset
        self.dest_table_name = destination_table
        self.client = bigquery.Client()

    def run(self):
        query = ("SELECT * FROM `project.dataset.table`;".format(
            project=self.project, dataset=self.dataset, table=self.table))

        job_config = bigquery.QueryJobConfig()

        # Set configuration.query.destinationTable
        destination_dataset = self.client.dataset(self.dest_dataset)
        destination_table = destination_dataset.table(self.dest_table_name)
        job_config.destination = destination_table

        # Set configuration.query.createDisposition
        job_config.create_disposition = 'CREATE_IF_NEEDED'

        # Set configuration.query.writeDisposition
        job_config.write_disposition = 'WRITE_APPEND'

        # Start the query
        job = self.client.query(query, job_config=job_config)

        # Wait for the query to finish
        job.result()

Te mostramos las comentarios y valoraciones de los lectores

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *