Почему Snowflake не поддерживает объем CTE (обходной путь?) - PullRequest
4 голосов
/ 02 декабря 2019

Я консультант по бизнес-аналитике (BI) и столкнулся с проблемой, когда Snowflake не поддерживает область действия CTE.

В BI невероятно полезно переопределять биты SQL. Тем не менее, если я определю CTE с именем yield_calculations, а затем добавлю что-то новое в предложение where и повторно объявлю в качестве нового CTE в качестве нового CTE ниже в сценарии (или вложенном в другое объявление CTE), Snowflake только один раз считывает Вычисления выручки и используетпервое объявление CTE по всему сценарию.

Большинство других баз данных (например, Bigquery) и языков программирования имеют область действия для объектов. Есть ли обходной путь к этому? Будет ли это меняться?

*** Обновлен, чтобы включить пример кода

with cte_in_question as (select 1),
cte2 as (
    with cte_in_question as (select 2)
    select * from cte_in_question
)
SELECT * FROM cte2

Snowflake оценивает это значение как 1, а BQ - как 2. 2 мне кажется намного более правильным. Мысли?

...