是否可以在后面的模块中引用前面 %%sql 模块中定义的查询?
is it possible to refer to queries defined in a previous %%sql module in a later module?
上周我刚刚开始使用新的 Google Cloud Datalab 和 IPython(尽管我已经使用 BigQuery 几个月了)。 github 中的教程和示例非常有用,但随着我的脚本和查询变得越来越复杂,我想知道一些事情。第一个是这样的:我可以在后面的 %%sql 模块中引用一个 %%sql 模块中定义的查询吗?另一个有点相关的问题是,我能否以某种方式存储来自一个 %%sql 模块的结果,然后将该信息放入类似 IN 子句的后续 %%sql 模块中?
这里有一些可以尝试的东西,看看它们是否满足您的需求。如果他们不这样做,我欢迎您在 github 中提出问题,因为我认为您的两种情况都是我们想要确保正常工作的事情。
首先,它需要 sql 个单元格和代码单元格的组合 [暂时]
单元格 1
%%sql --module m1
DEFINE QUERY q1
SELECT ...
单元格 2
%%sql --module m2
DEFINE QUERY q2
SELECT ... FROM $src ...
单元格 3
import gcp.bigquery as bq
compositequery = bq.Query(m2.q2, src = m1.q1)
本质上,%%sql 模块在幕后变成了 auto-imported python 模块。
我曾经自己将查询拆分为每个 %%sql 单元格,但自从引入模块后,我也根据场景,在一个模块中定义多个查询,您不需要一些 python 代码拼接在一起。看你的场景,哪个更好
对于你的第二个问题,如果查询跨单元格拆分,你需要在中间添加一些 python 胶水。执行一个查询,获取其结果,并将其用作下一个查询的参数。这适用于一般标量值,但对于 IN 子句和 tuples/lists 值,我们有需要解决的问题:https://github.com/GoogleCloudPlatform/datalab/issues/615
有关如何在 BigQuery 中使用 JOIN 在一个查询中生成标量结果并在下一个查询中使用的更多想法,您还可以在标题为 [=36= 的 BigQuery 教程笔记本中查看第 3 步下的查询].
希望对您有所帮助。
如前所述,如果您遇到特定问题,其中某些内容未按预期工作,请提交问题,我们可以看看是否需要解决,您或其他人甚至可能会加强做出贡献。 :)
上周我刚刚开始使用新的 Google Cloud Datalab 和 IPython(尽管我已经使用 BigQuery 几个月了)。 github 中的教程和示例非常有用,但随着我的脚本和查询变得越来越复杂,我想知道一些事情。第一个是这样的:我可以在后面的 %%sql 模块中引用一个 %%sql 模块中定义的查询吗?另一个有点相关的问题是,我能否以某种方式存储来自一个 %%sql 模块的结果,然后将该信息放入类似 IN 子句的后续 %%sql 模块中?
这里有一些可以尝试的东西,看看它们是否满足您的需求。如果他们不这样做,我欢迎您在 github 中提出问题,因为我认为您的两种情况都是我们想要确保正常工作的事情。
首先,它需要 sql 个单元格和代码单元格的组合 [暂时]
单元格 1
%%sql --module m1
DEFINE QUERY q1
SELECT ...
单元格 2
%%sql --module m2
DEFINE QUERY q2
SELECT ... FROM $src ...
单元格 3
import gcp.bigquery as bq
compositequery = bq.Query(m2.q2, src = m1.q1)
本质上,%%sql 模块在幕后变成了 auto-imported python 模块。
我曾经自己将查询拆分为每个 %%sql 单元格,但自从引入模块后,我也根据场景,在一个模块中定义多个查询,您不需要一些 python 代码拼接在一起。看你的场景,哪个更好
对于你的第二个问题,如果查询跨单元格拆分,你需要在中间添加一些 python 胶水。执行一个查询,获取其结果,并将其用作下一个查询的参数。这适用于一般标量值,但对于 IN 子句和 tuples/lists 值,我们有需要解决的问题:https://github.com/GoogleCloudPlatform/datalab/issues/615
有关如何在 BigQuery 中使用 JOIN 在一个查询中生成标量结果并在下一个查询中使用的更多想法,您还可以在标题为 [=36= 的 BigQuery 教程笔记本中查看第 3 步下的查询].
希望对您有所帮助。
如前所述,如果您遇到特定问题,其中某些内容未按预期工作,请提交问题,我们可以看看是否需要解决,您或其他人甚至可能会加强做出贡献。 :)