【问题标题】:print to view result of BigQuery query打印以查看 BigQuery 查询的结果
【发布时间】:2017-11-25 21:43:36
【问题描述】:

我在函数中有一个 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 AzureImportProcess(Resource):
    def get(self):
        get_data_from_bigquery()
...
api.add_resource(AzureImportProcess, '/azure-import-data')

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

【问题讨论】:

  • 您似乎没有在路由函数中调用函数get_data_from_bigquery。你想做什么?
  • 发布更新@Abdou
  • 请看我的回答。

标签: python flask google-bigquery flask-restful


【解决方案1】:

首先,您不需要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 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。

我希望这会有所帮助。

【讨论】:

  • 它可能正在尝试打印数据(总共 52k 行),但它会引发以下异常:Exceeded soft private memory limit of 128 MB with 268 MB after servicing 0 requests total
  • 这既不是 Flask 也不是 flask_restful 错误。它与App Engine 有关。减少类似"""SELECT * FROM Backup.Prod_UserUserMetadata LIMIT 100""" 的查询,以确保答案确实有效。一旦你确定它有效,你就可以弄清楚如何处理你的记忆问题。
猜你喜欢
  • 1970-01-01
  • 2016-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
相关资源
最近更新 更多