当使用列表时,googleclouddatalab中的WHERE语句失败。

2024-06-16 09:32:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是googleclouddatalab,我试图根据列表中的匹配从表中选择数据。你知道吗

首先,我使用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的,但我不确定如何在cloud data lab上正确地执行此操作。我在搜索时发现的大多数python结果都使用python来编写整个sql命令,我只想添加到列表中。你知道吗

谢谢。你知道吗


Tags: infromtest列表sqlchejwhere