打印以查看 BigQuery 查询的结果

print to view result of BigQuery query

我在一个函数中有一个 BigQuery 查询,如下所示:

def get_data_from_bigquery():
    """query bigquery to get data to import to PSQL"""
    app_id = get_app_id()
    bq = bigquery.Client(project=app_id)
    query = """SELECT * FROM `Backup.Prod_UserUserMetadata`"""
    query_job = bq.query(query)
    data = query_job.result()
    rows = list(data)
    print(rows)
    return rows

我的路线如下:

@app.route('/azure-import-data')
def print_data():
    return 'This is the data:\n \n'

函数 get_data_from_bigquery() 正在我的 get() 函数中被调用 class:

class AzureImportProcess(Resource):
    def get(self):
        get_data_from_bigquery()
...
api.add_resource(AzureImportProcess, '/azure-import-data')

print(rows) 函数似乎不起作用,因为它既没有在 Cloud Console 上也没有在浏览器中打印出来。有没有其他方法可以打印数据以查看其格式?

首先,您不需要 get_data_from_bigquery 函数中的 print 语句。其次,get 函数需要有一个 return 语句才能显示某些内容。

编辑函数定义如下:

def get_data_from_bigquery():
    """query bigquery to get data to import to PSQL"""
    app_id = get_app_id()
    bq = bigquery.Client(project=app_id)
    query = """SELECT * FROM `Backup.Prod_UserUserMetadata`"""
    query_job = bq.query(query)
    data = query_job.result()
    rows = list(data)
    return rows

编辑 Resource class 定义如下:

class AzureImportProcess(Resource):
    def get(self):
        bq_data = get_data_from_bigquery()
        return 'This is the data:\n \n{}'.format(bq_data)

现在您可以将资源添加到 API 对象:

api.add_resource(AzureImportProcess, '/azure-import-data')

你不需要在这里定义print_data函数,除非你处理的是更复杂的API。

希望对您有所帮助。