使用列表时,Google云数据库中的WHERE语句失败。

时间:2015-12-04 21:24:30

标签: python google-bigquery google-cloud-datalab

我正在使用谷歌云数据库,我试图根据列表中的匹配从表中选择数据。

首先我使用python单元格来定义我的列表

import gcp.bigquery as bq
samples = ['TCGA-CH-5751-01A', 'TCGA-EJ-5496-01A']

然后我用我的SQL查询创建一个单元格

%%sql --module test
SELECT 
    ParticipantBarcode, 
    SampleBarcode, 
FROM 
    [isb-cgc:tcga_201510_alpha.mRNA_UNC_HiSeq_RSEM]
WHERE SampleBarcode IN $samples
LIMIT 100

然后我会用另一个python单元格来调用它

results = bq.Query(test, samples=samples).results().to_dataframe()

由于WHERE语句不正确,因此失败。

invalidQuery: Encountered " "IN" "IN ""

如果我将要再次匹配的名称硬编码到sql语句中,则可以正常工作。

%%sql --module test2
SELECT 
    ParticipantBarcode, 
    SampleBarcode, 
FROM 
    [isb-cgc:tcga_201510_alpha.mRNA_UNC_HiSeq_RSEM]
WHERE SampleBarcode IN  ('TCGA-CH-5751-01A', 'TCGA-EJ-5496-01A')
LIMIT 100

我认为这是因为我将我的列表中的内容传递给sql,但我不确定如何在云数据实验室中正确执行此操作。我在搜索时发现的大多数python结果使用python来编写整个sql命令,我只想在列表中添加。

感谢。

1 个答案:

答案 0 :(得分:1)

此功能已于2016年2月8日发布。