def execute(self, query, destination_table, write_disposition="WRITE_TRUNCATE", allow_large_results=True): """ :param query_file: query file path :param destination_table: target table :param write_disposition: default is to replace existing table. To append: WRITE_APPEND :param allow_large_results: default to True :return: """ query_configuration = QueryJobConfig() query_configuration.use_legacy_sql = False if destination_table: ref = TableReferenceBuilder(destination_table, self._dataset, self._project) query_configuration.write_disposition = write_disposition query_configuration.default_dataset = ref.dataset_reference query_configuration.destination = ref.table_reference query_configuration.allow_large_results = allow_large_results sql_query = self.__get_query(query) if not self._quiet: print("-- #### {}\n{}\n".format(destination_table or "", sql_query)) self._query_job = bigquery.Client(project=self._project).query( sql_query, job_config=query_configuration) if self._query_job.errors: raise Exception(self._query_job.errors)
def execute(self, query, tbl_ref=None, append=False, preview=True): sql_query = self.__get_query(query) if tbl_ref: print("-- ## " + str(tbl_ref)) print("{}{}".format("-- preview: \n" if preview else "", sql_query)) if preview: return job_conf = QueryJobConfig() job_conf.use_legacy_sql = False if tbl_ref: job_conf.write_disposition = "WRITE_APPEND" if append else "WRITE_TRUNCATE" job_conf.default_dataset = tbl_ref.dataset_ref job_conf.destination = tbl_ref.table_ref job_conf.allow_large_results = True query_job = self.connect(tbl_ref.project if tbl_ref else None).query( sql_query, job_config=job_conf) if query_job.errors: raise Exception(query_job.errors)