Заявление Snowflake CASE с использованием формата файла? - PullRequest
0 голосов
/ 26 мая 2020

Ниже приведен оператор case Teradata, который преобразует значение false, False, F, f to 0 и true, True, T, t to 1 else my_col_. Я хотел бы сделать то же самое, используя формат файла Snowflake .

CASE WHEN my_col ='\N' THEN NULL
 WHEN my_col = 'false'  OR my_col = 'False' OR my_col = 'F' OR my_col = 'f' THEN '0'
 WHEN my_col = 'true'  OR my_col = 'True' OR my_col = 'T' OR my_col = 't' THEN '1'
 ELSE my_col END as "my_col_"

Ответы [ 3 ]

1 голос
/ 26 мая 2020

Я бы на самом деле изменил ваш оператор на что-то вроде этого, если это возможно:

CASE WHEN TRY_TO_BOOLEAN(my_col) = True THEN '1'
     WHEN TRY_TO_BOOLEAN(my_col) = False THEN '0'
     ELSE NULL END

Если ваша целевая таблица уже является полем BOOLEAN, тогда это также сделает это без необходимости в операторе CASE:

TRY_TO_BOOLEAN(my_col)

И, как сказал Симеон в комментариях, при необходимости это можно сделать прямо в операторе COPY INTO, но это не имеет ничего общего с ФОРМАТОМ ФАЙЛА. Кроме того, я бы рекомендовал вам загружать необработанные данные, а затем вместо этого преобразовывать данные внутри Snowflake. Так он будет работать лучше.

0 голосов
/ 26 мая 2020

Надежда на «формат файла снежинки» означает, что вам просто нужен эквивалентный запрос Snowflake для вышеуказанного кода tearadata, и вы действительно не имеете в виду те 6 различных форматов файлов, которые поддерживает Snowflake. в этом случае:

Учитывая, что my_col содержит строковые данные, тот же код тераданных должен работать нормально. Маленькая компактная версия вышеприведенного кода может быть следующей:

 CASE WHEN my_col ='\N' THEN NULL
 WHEN my_col IN ('false','False','F' ,'f') THEN '0'
 WHEN my_col IN ('true' , 'True' ,'T' ,'t') THEN '1'
 ELSE my_col END as "my_col_"
0 голосов
/ 26 мая 2020

если это оператор case, его можно упростить как:

CASE WHEN my_col = '\ N' THEN NULL WHEN my_col IN ('false', 'False', 'F', 'f') ТОГДА '0' КОГДА my_col in ('true', 'True', 'T', 't') ТОГДА '1' ELSE my_col END как "my_col _"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...