0

我正在使用 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 命令,我只想添加到列表中。

谢谢。

4

1 回答 1

1

此功能是在 2016 年 2 月 8 日的版本中添加的。

于 2016-03-04T00:59:54.980 回答