>

pandas.read_gbq 를 사용하여 Bigquery의 테이블에서 열 A와 B를 선택하려고합니다.  목록에있는 경우 C 열의 값을 기반으로합니다. 그러나 format 를 사용할 때  내 쿼리 문자열에 목록을 삽입하려면 목록의 내용이 [] 로 둘러싸입니다.  대괄호. 이로 인해 쿼리가 중단됩니다.

replace 를 사용했습니다  대괄호를 수동으로 제거하려면 검색어 문자열에 추가하십시오.

values_in_list = ['a', 'b', 'c']
query = """
SELECT
  column_A,
  column_B
FROM
  my_table
WHERE
 column_C IN ({})
""".format(values_in_list).replace('[', '').replace(']', '')
query_df = pandas.read_gbq(query, project_id='some-project', dialect='standard')

이 작업을 완료합니다. 나는 그것을 강제하는 것보다 더 우아한 해결책이 있는지 궁금합니다.


  • 답변 # 1

    pandas.read_gbq 인지 확실하지 않습니다   ArrayQueryParameters 지원   query_config 에서  키워드 인수 내 해결 방법은 다음과 같습니다.

    from google.cloud import bigquery
    client = bigquery.Client()
    values_in_list = ['a', 'b', 'c']
    query = """
    SELECT
      column_A,
      column_B
    FROM
      my_table
    WHERE
     column_C IN UNNEST(@col_c_vals)
    """
    query_params = [bigquery.ArrayQueryParameter('col_c_vals', 'STRING', values_in_list)]
    job_config = bigquery.QueryJobConfig()
    job_config.query_parameters = query_params
    query_df = client.query(query, job_config=job_config).to_dataframe()
    
    

관련 자료

  • 이전 elisp - emacs에서 글꼴 크기를 평가 된 값으로 설정하는 방법은 무엇입니까?
  • 다음 Emacs에서 현재 줄을 어떻게 삭제합니까?