Google bigquery 没有变量的BigQuery查询创建?

Google bigquery 没有变量的BigQuery查询创建?,google-bigquery,Google Bigquery,来自SQL Server和一点MySQL,我不确定如何继续使用google的BigQuery web浏览器查询工具 似乎没有任何方法可以创建、使用或设置/声明变量。人们是如何解决这个问题的?或者我在说明中遗漏了一些明显的东西,或者BigQuery的本质?Java API?目前无法在BigQuery中设置/声明变量。如果需要变量,则需要将它们剪切并粘贴到需要的位置。请随意将此作为功能请求提交。这并不优雅,也很痛苦,但是 我们处理它的方法是使用python脚本替换查询中的变量占位符,然后通过API发

来自SQL Server和一点MySQL,我不确定如何继续使用google的BigQuery web浏览器查询工具


似乎没有任何方法可以创建、使用或设置/声明变量。人们是如何解决这个问题的?或者我在说明中遗漏了一些明显的东西,或者BigQuery的本质?Java API?

目前无法在BigQuery中设置/声明变量。如果需要变量,则需要将它们剪切并粘贴到需要的位置。请随意将此作为功能请求提交。

这并不优雅,也很痛苦,但是

我们处理它的方法是使用python脚本替换查询中的变量占位符,然后通过API发送修改后的查询


我打开了一个要求动态SQL功能的功能请求。

现在可以使用SQL声明和设置变量。有关详细信息,请参见,但以下是一个示例:

-声明一个变量以将名称作为数组保存。 声明top_名称数组; -构建2017年前100名的名单。 机顶盒名称= 选择数组\u AGGname ORDER BY number DESC LIMIT 100 来自“bigquery公共数据”。美国名称。美国1910\u当前 其中年份=2017年 ; -在莎士比亚的戏剧中,哪些名字以文字形式出现? 选择 莎士比亚的名字 从UNNESTtop_名称作为名称 名字在哪里 选择单词 来自“bigquery公共数据”。samples.shakespeare ;
如果您想避免使用BQ脚本,有时可以使用使用WITH和CROSS-JOIN的习惯用法

在以下示例中:

events表包含一些时间戳事件 报表表包含事件的偶然聚合值 目标是编写一个只生成增量非重复聚合行的查询 这是通过以下方式实现的:

引入一个状态临时表,用于查看目标表以获得聚合结果 确定实际查询的参数参数的步骤 参数与实际查询相匹配 允许使用参数行的列来约束查询 此查询将重复返回相同的结果 直到结果本身附加到报表表中 WTIH状态为 选择 -最新报告的结束时间是什么时候? 合并 从“x.y.reports”中选择MAXreport\u end\ts, 时间:2019-01-01 根据最新的报告, ... , 参数AS 选择 -查找自上次报告结束以来的事件 最新的事件报告, -直到现在 当前\u时间戳作为\u ts之前的事件\u 选择 我的事件作为报告开始, 最大事件作为报告结束 COUNT1作为事件计数, 将错误汇总为错误总数 从'x.y.events` 交叉连接参数 其中事件>事件之后的事件 和event_ts这种方法对查询非常有用。

我知道我不能在查询开始时定义一个值,但是您能将变量用作查询的一部分吗?i、 e.从[MyData.table1]D中选择@Total_Item_Baskets=COUNTUNQ_ID_NBR,其中D.SKU_Item_KEY=455023我知道它不喜欢@,但在使用/不使用它的情况下似乎也不起作用。从[MyData.table1]D中选择COUNTUNQ_ID_NBR作为Total_Item_Baskets,其中D.SKU Item_KEY=455023如何。这是您想要的吗?让查询在没有变量的情况下运行不是问题。问题是这个查询将返回一个数字,我想在下一部分的查询中在多个位置使用该数字。在这种情况下,我所知道的不使用剪切和粘贴的唯一其他方法是使用交叉连接。谢谢。虽然我喜欢postgresql/workbench接口,但红移似乎也不支持变量。一定有一个原因,他们是这样构造的,所以我不会屏住呼吸等待功能被添加。我们已经考虑过使用API,但这并不是我们想要立即探索的。至少他们的谜团解决了——变量不起作用是因为它们不受支持。这是一种更优雅、更强大的方法。但有时您可能希望避免编写脚本,例如,当您希望将一个简单的SQL查询插入到BQ查询调度中时。对于这些情况,请考虑