google 云数据实验室中的 WHERE 语句在使用列表时失败。
WHERE statement in google cloud datalab failing when using a list.
我正在使用 google 云数据实验室,我正在尝试根据列表中的匹配项 select 来自 table 的数据。
首先我使用 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 命令,我只想添加到列表中。
谢谢。
2016 年 2 月 8 日的版本中添加了此功能。
我正在使用 google 云数据实验室,我正在尝试根据列表中的匹配项 select 来自 table 的数据。
首先我使用 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 命令,我只想添加到列表中。
谢谢。
2016 年 2 月 8 日的版本中添加了此功能。