Example #1
0
    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)
Example #2
0
    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)