字符串转义不一致 Snowflake 与 dbt

问题描述 投票:0回答:1

我正在清理一个类似数组的字符串,以便它是具有正确引用的正确数组类型。

输入示例:

['Home & Kitchen / Kitchen & Dining / Dining & Entertaining / Glassware & Drinkware'  'Home & Kitchen / Kitchen & Dining / Dining & Entertaining / Novelty / Drinkware / Coffee Mugs']

当前代码:

array_remove(array_remove(split(replace(replace(categories, '['), ']'), '\''), ''::variant), '\n '::variant)

输出:

[
  "Home & Kitchen / Kitchen & Dining / Dining & Entertaining / Glassware & Drinkware",
  "Home & Kitchen / Kitchen & Dining / Dining & Entertaining / Novelty / Drinkware / Coffee Mugs"
]

尽管字符串转义,但当我应用于 dbt 中的模型时,该解决方案并不适用。我收到下一列“意外”的语法错误。

我发现这个问题与外部替换处理单引号直接相关,即

'\"'
已经旨在安全地处理替换单引号,但显然不在 dbt 中。

欢迎任何想法/建议!

sql string snowflake-cloud-data-platform dbt
1个回答
0
投票

以下方法应适用于您提供的数据:

select 
  ['Home & Kitchen / Kitchen & Dining / Dining & Entertaining / Glassware & Drinkware','Home & Kitchen / Kitchen & Dining / Dining & Entertaining / Novelty / Drinkware / Coffee Mugs']::variant 
    as my_variant,
  array_distinct(strtok_to_array(array_to_string(my_variant, '/'), '/'));

返回:

[   "Home & Kitchen ",   " Kitchen & Dining ",   " Dining & Entertaining ",   " Glassware & Drinkware",   " Novelty ",   " Drinkware ",   " Coffee Mugs" ]
© www.soinside.com 2019 - 2024. All rights reserved.