Snowflake 无法识别 CAST 或 TO_VARCHAR 连接键上的函数
Snowflake not recognizing a CAST or to TO_VARCHAR function over a join key
我正在尝试对三个表执行联接。
这是初始代码,有效但 returns 产品描述全部为 NULL。我认为这是因为在我加入的前 2 个表中,连接键是 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)
类型的参数一起使用
我不确定是否有办法通过这样做来修复它,或者我是否应该重新上传该文件,更改其来源的类型。
提前致谢!!!
当我查看您的代码时,我必须注意到这一点:
T0_VARCHAR(analytics.dbt_lcasucci.product_category.product_ID) FROM
在这部分代码中,您似乎使用了数字零 0 而不是字母 O 的 TO_VARCHAR
?请检查。
对于你的第二次尝试,我在这里看到:https://docs.snowflake.net/manuals/sql-reference/functions/try_cast.html 你必须发送一个字符串作为你的 TRY_CAST
函数的参数。
我正在尝试对三个表执行联接。 这是初始代码,有效但 returns 产品描述全部为 NULL。我认为这是因为在我加入的前 2 个表中,连接键是 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)
类型的参数一起使用我不确定是否有办法通过这样做来修复它,或者我是否应该重新上传该文件,更改其来源的类型。
提前致谢!!!
当我查看您的代码时,我必须注意到这一点:
T0_VARCHAR(analytics.dbt_lcasucci.product_category.product_ID) FROM
在这部分代码中,您似乎使用了数字零 0 而不是字母 O 的 TO_VARCHAR
?请检查。
对于你的第二次尝试,我在这里看到:https://docs.snowflake.net/manuals/sql-reference/functions/try_cast.html 你必须发送一个字符串作为你的 TRY_CAST
函数的参数。