簡體   English   中英

如果列表中存在,則根據另一列的值選擇列

[英]Select columns based on values of another column if present in a list

我試圖根據列中的C列值使用pandas.read_gbq從Bigquery的表中選擇A列和B列(如果存在於列表中)。 但是,當我使用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')

這樣就完成了工作。 我想知道是否有比強行強制解決方案更優雅的解決方案。

我不確定pandas.read_gbq ArrayQueryParametersquery_config關鍵字arg中支持ArrayQueryParameters 這是我的解決方法:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM