У меня есть тысячи сценариев, которые включают l oop поверх набора данных и используют переменные для накопления. Например:
// 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 переменных.
- Переменные могут действовать как аккумуляторы или могут просто иметь литералы.
- Условие в l oop может быть более сложным, множественные вложенные
if
/ else
условия. - Скрипт может также иметь вложенный l oop, который будет l oop для n раз или до тех пор, пока не будет выполнено определенное условие.
Возможно ли его поддержка в BigQuery SQL? Я также открыт для BigQuery UDF, но UDF не поддерживает изменяемое состояние.
Кроме того, поскольку существуют тысячи таких сценариев, вместо того, чтобы делать это вручную, я хочу автоматизировать преобразование. Парсинг этих скриптов не проблема для меня, мне нужно только конвертировать это в эквивалент BigQuery SQL. Дайте мне знать, как я могу решить эту проблему.
Редактировать: Хотя я более склонен использовать SQL подход, но Сценарий BigQuery также кажется многообещающим вариантом .