我有数千个脚本,其中包括循环数据集并使用变量进行累积。例如:
// assuming that 'ids' is populated from some BQ table
ids = [1, 2, 3, 4, 5]
var1 = "v1" //initialize variable
var2 = "v2" //initialize variable
for id in ids
var1 = var2
if (id > 2)
var2 = var1 + "-" + item
else
var2 = id
print(id, var1, var2)
这将产生以下输出:
1,v2,1
2,1,2
3,2,2-3
4,2-3,2-3-4
5,2-3-4,2-3-4-5
其他一些需要考虑的事情:
- 脚本可以涉及 n 个变量。
- 变量可以充当
累加器或者可以简单地有文字。
- 循环中的条件可以是
更复杂,多重嵌套
if
/ else
状况。
- 脚本也可以有嵌套循环,它会循环 n 次或直到不满足某些条件。
BigQuery SQL 是否可以支持它?我也对 BigQuery UDF 持开放态度,但 UDF 不支持可变状态。
另外,由于有数千个这样的脚本,我不想手动执行,而是想自动转换。解析这些脚本对我来说不是问题,我只需要将其转换为等效的 BigQuery SQL。让我知道如何解决这个问题。
Edit:虽然我更倾向于仅使用 SQL 方法但是BigQuery 脚本 https://cloud.google.com/blog/products/data-analytics/command-and-control-now-easier-in-bigquery-with-scripting-and-stored-procedures似乎也是有前途的选择。