2017-11-25 23 views
0

의 BigQuery 쿼리의 결과를 볼 수 있습니다 :인쇄는 다음과 같이 내가 함수 내부의 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 

다음과 같이 내 경로가 : 기능 get_data_from_bigquery()는 내부

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

를 호출되고 내 다음 클래스 내부 get() 기능 :

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

클라우드 콘솔이나 브라우저에서 인쇄되지 않아 기능이 작동하지 않는 것 같습니다. 데이터를 인쇄하여 포맷 방법을 확인할 수있는 다른 방법이 있습니까?

+0

라우팅 기능에서'get_data_from_bigquery' 함수를 호출하는 것처럼 보이지 않습니다. 네가하려는 것은 무엇인가? – Abdou

+0

게시물 업데이트 @Abdou – codeninja

+0

제 대답을 참조하십시오. – Abdou

답변

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') 

을 정의 할 필요가 없습니다. 좀 더 복잡한 API를 다루지 않는다면 여기에서함수를 사용하십시오.

이 정보가 도움이되기를 바랍니다.

+0

아마도 데이터 (총 52k 행)를 인쇄하려하지만 다음과 같은 예외가 발생합니다 :'128 메가 바이트의 소프트 개인 메모리 한계를 초과하고 총 0 개의 요청을 처리 한 후 268MB를 초과했습니다. – codeninja

+0

그건 'Flask'도 아니고 flask_restful도 아닙니다. 오류. 그것은'App Engine'과 관련이 있습니다. 쿼리를 "" "SELECT * FROM Backup.Prod_UserUserMetadata LIMIT 100" ""'과 같이 줄이면 대답이 실제로 작동하는지 확인할 수 있습니다. 작동하는지 확인한 후 메모리 문제를 처리하는 방법을 알아낼 수 있습니다. – Abdou