使用 tableau 计算字段和正则表达式可以实现所需的输出,但它太脆弱了,如果您的数据具有比示例中更灵活/嵌套的结构,则它的可扩展性不那么强。
REGEXP_EXTRACT([C1],'((name)=[aA-zZ0-9 ]+)')
+ ' and '
+ REGEXP_EXTRACT([C1],'((description)=[aA-zZ0-9 ]+)')
+ ' , '
+ REGEXP_EXTRACT_NTH([C1],'(\,\W+\{)([aA-zZ0-9 \n\/"=:.,]+)(name=[aA-zZ0-9 ]+)',3)
+ ' and '
+ REGEXP_EXTRACT_NTH([C1],'(\,\W+\{)([aA-zZ0-9 \n\/"=:.,]+)(description=[aA-zZ0-9 ]+)',3)
您的数据来源是什么?如果您可以打包成有效的 JSON,您可以使用 Redshift JSON_EXTRACT_ARRAY_ELEMENT_TEXT 和 JSON_EXTRACT_PATH_TEXT 函数在提供数据之前准备数据。
更新
有了足够的IFs 并在正则表达式中重复,您几乎可以实现任何目标但要付出什么代价
REGEXP_EXTRACT([C1],'((name)=[aA-zZ0-9 \-]+)')
+ ' and '
+ REGEXP_EXTRACT([C1],'((description)=[aA-zZ0-9 \-]+)')
+
IF ISNULL(REGEXP_EXTRACT_NTH([C1],'(\,\W+\{)([aA-zZ0-9 \n\/"=:.,]+)(name=[aA-zZ0-9 \-]+)',3))
THEN ''
ELSE ' , '
+ REGEXP_EXTRACT_NTH([C1],'(\,\W+\{)([aA-zZ0-9 \n\/"=:.,]+)(name=[aA-zZ0-9 \-]+)',3)
+ ' and '
+ REGEXP_EXTRACT_NTH([C1],'(\,\W+\{)([aA-zZ0-9 \n\/"=:.,]+)(description=[aA-zZ0-9 \-]+)',3)
END
+
IF ISNULL(REGEXP_EXTRACT_NTH([C1], '(\,\W+\{[aA-zZ0-9 \n\/"=:.,\}]+\,\W+\{[aA-zZ0-9 \n\/"=:.,]+)(description=[aA-zZ0-9 \-]+)', 2))
THEN ''
ELSE ', ' + REGEXP_EXTRACT_NTH([C1], '(\,\W+\{[aA-zZ0-9 \n\/"=:.,\}]+\,\W+\{[aA-zZ0-9 \n\/"=:.,]+)(name=[aA-zZ0-9 \-]+)', 2)
+ ' and ' + REGEXP_EXTRACT_NTH([C1], '(\,\W+\{[aA-zZ0-9 \n\/"=:.,\}]+\,\W+\{[aA-zZ0-9 \n\/"=:.,]+)(description=[aA-zZ0-9 \-]+)', 2)
END
+
IF ISNULL(REGEXP_EXTRACT_NTH([C1], '(\,\W+\{[aA-zZ0-9 \n\/"=:.,\}]+\,\W+\{[aA-zZ0-9 \n\/"=:.,]+)(\W+\{[aA-zZ0-9 \n\/"=:.,]+)(description=[aA-zZ0-9 \-]+)', 3))
THEN ''
ELSE ', ' + REGEXP_EXTRACT_NTH([C1], '(\,\W+\{[aA-zZ0-9 \n\/"=:.,\}]+\,\W+\{[aA-zZ0-9 \n\/"=:.,]+)(\W+\{[aA-zZ0-9 \n\/"=:.,]+)(name=[aA-zZ0-9 \-]+)', 3)
+ ' and ' + REGEXP_EXTRACT_NTH([C1], '(\,\W+\{[aA-zZ0-9 \n\/"=:.,\}]+\,\W+\{[aA-zZ0-9 \n\/"=:.,]+)(\W+\{[aA-zZ0-9 \n\/"=:.,]+)(description=[aA-zZ0-9 \-]+)', 3)
END
+
IF ISNULL(REGEXP_EXTRACT_NTH([C1], '(\,\W+\{[aA-zZ0-9 \n\/"=:.,\}]+\,\W+\{[aA-zZ0-9 \n\/"=:.,]+)(\W+\{[aA-zZ0-9 \n\/"=:.,\}]+\,\W+\{[aA-zZ0-9 \n\/"=:.,]+)(description=[aA-zZ0-9 \-]+)', 3))
THEN ''
ELSE ', ' + REGEXP_EXTRACT_NTH([C1], '(\,\W+\{[aA-zZ0-9 \n\/"=:.,\}]+\,\W+\{[aA-zZ0-9 \n\/"=:.,]+)(\W+\{[aA-zZ0-9 \n\/"=:.,\}]+\,\W+\{[aA-zZ0-9 \n\/"=:.,]+)(name=[aA-zZ0-9 \-]+)', 3)
+ ' and ' + REGEXP_EXTRACT_NTH([C1], '(\,\W+\{[aA-zZ0-9 \n\/"=:.,\}]+\,\W+\{[aA-zZ0-9 \n\/"=:.,]+)(\W+\{[aA-zZ0-9 \n\/"=:.,\}]+\,\W+\{[aA-zZ0-9 \n\/"=:.,]+)(description=[aA-zZ0-9 \-]+)', 3)
END