Снежинка не распознает функцию CAST или TO_VARCHAR по ключу соединения - PullRequest
1 голос
/ 31 октября 2019

Я пытаюсь выполнить объединение трех таблиц. Это исходный код, который работает, но возвращает все NULL для описания продукта. Я подумал, что это потому, что в первых двух таблицах, к которым я присоединяюсь, ключ присоединения - это тип varchar, а в другой - INT. Ключ int - это analytics.dbt_lcasucci.product_category.product ID (последнее присоединение).

SELECT raw.stitch_heroku.spree_line_items.variant_id
       , raw.stitch_heroku.spree_variants.SKU
       , raw.stitch_heroku.spree_line_items.price
       , raw.stitch_heroku.spree_line_items.cost_price
       , pc.product_description
FROM raw.stitch_heroku.spree_line_items 
LEFT OUTER JOIN raw.stitch_heroku.spree_variants 
ON raw.stitch_heroku.spree_line_items.variant_id = raw.stitch_heroku.spree_variants.id
LEFT JOIN analytics.dbt_lcasucci.product_category as pc ON pc.product_ID = raw.stitch_heroku.spree_variants.id
GROUP BY raw.stitch_heroku.spree_line_items.variant_id
      , raw.stitch_heroku.spree_variants.SKU
      , raw.stitch_heroku.spree_line_items.price
      , raw.stitch_heroku.spree_line_items.cost_price
      , pc.product_description

Далее я попытался использовать некоторую функцию снежинки для преобразования идентификатора analytics.dbt_lcasucci.product_category.product ID в varchar.

Это то, что я пытался:

LEFT JOIN (
   SELECT analytics.dbt_lcasucci.product_category.product_description
          , T0_VARCHAR(analytics.dbt_lcasucci.product_category.product_ID) 
   FROM analytics.dbt_lcasucci.product_category) as pc
   ON pc.product_ID= sv.id

или

LEFT JOIN (
   SELECT analytics.dbt_lcasucci.product_category.product_description
   , TRY_CAST(analytics.dbt_lcasucci.product_category.product_ID as VARCHAR(10) 
   FROM analytics.dbt_lcasucci.product_category) as pc
   ON pc.product_ID= sv.id

Я получаю ошибку: Неверный идентификатор T0_VARCHAR или функцию TRY_CAST нельзя использовать с аргументамитипов NUMBER (38,0) и VARCHAR (10)

Я не уверен, есть ли способ исправить это, выполнив это, или мне просто нужно повторно загрузить этот файл, изменив тип в источнике.

Заранее спасибо !!!!

1 Ответ

2 голосов
/ 31 октября 2019

Когда я смотрю на ваш код, я должен заметить следующее:

T0_VARCHAR(analytics.dbt_lcasucci.product_category.product_ID) FROM

В этой части кода кажется, что вы использовали TO_VARCHAR с нулевым числом 0 ине с буквой О? Пожалуйста, проверьте.

И для вашей второй попытки я вижу здесь: https://docs.snowflake.net/manuals/sql-reference/functions/try_cast.html, что вам нужно отправить строку в качестве аргумента для вашей TRY_CAST функции.

...