如何从 SQL Redshift 中的嵌套 json 中删除所有 \?
How to remove all \ from nested json in SQL Redshift?
我在从列中的嵌套 json 值中提取值时遇到了一些问题。
我有一列数据,其值看起来几乎像嵌套的 json,但一些 jsons 在值之间有 \,我需要清理它们。
JSON 看起来像这样:
{"mopub_json":
"{\"currency\":\"USD\",
\"country\":\"US\",
\"publisher_revenue\":0.01824}
"}
我需要将货币和发布商收入作为不同的列,然后试试这个:
SET json_serialization_enable TO true;
SET json_serialization_parse_nested_strings TO true;
SELECT
JSON_EXTRACT_PATH_TEXT(column_name, 'mopub_json', 'publisher_revenue') as revenue_mopub,
JSON_EXTRACT_PATH_TEXT(column_name, 'mopub_json', 'currency') as currency_mopub
FROM(
SELECT replace(column_name, "\t", '')
FROM table_name)
我收到下一个错误:
[Amazon](500310) Invalid operation: column "\t" does not exist in events
当我尝试这个时:
SET json_serialization_parse_nested_strings TO true;
SELECT
JSON_EXTRACT_PATH_TEXT(column_name, 'mopub_json', 'publisher_revenue') as revenue_mopub,
JSON_EXTRACT_PATH_TEXT(column_name, 'mopub_json', 'currency') as currency_mopub
FROM(
SELECT replace(column_name, chr(92), '')
FROM table_name)
我收到
Invalid operation: JSON parsing error
当我尝试在不替换的情况下提取值时,我收到的是空列。
感谢您的帮助!
所以您的 json 无效。 JSON 不允许多行文本字符串,但我预料到这个问题。根据您的查询,我认为您不需要单个键和字符串,而是整个结构。引号被反斜杠的原因是因为它们在字符串中。 json 应如下所示:
{
"mopub_json": {
"currency": "USD",
"country": "US",
"publisher_revenue": 0.01824
}
}
那么你的 SQL 应该可以用了。
我在从列中的嵌套 json 值中提取值时遇到了一些问题。 我有一列数据,其值看起来几乎像嵌套的 json,但一些 jsons 在值之间有 \,我需要清理它们。
JSON 看起来像这样:
{"mopub_json":
"{\"currency\":\"USD\",
\"country\":\"US\",
\"publisher_revenue\":0.01824}
"}
我需要将货币和发布商收入作为不同的列,然后试试这个:
SET json_serialization_enable TO true;
SET json_serialization_parse_nested_strings TO true;
SELECT
JSON_EXTRACT_PATH_TEXT(column_name, 'mopub_json', 'publisher_revenue') as revenue_mopub,
JSON_EXTRACT_PATH_TEXT(column_name, 'mopub_json', 'currency') as currency_mopub
FROM(
SELECT replace(column_name, "\t", '')
FROM table_name)
我收到下一个错误:
[Amazon](500310) Invalid operation: column "\t" does not exist in events
当我尝试这个时:
SET json_serialization_parse_nested_strings TO true;
SELECT
JSON_EXTRACT_PATH_TEXT(column_name, 'mopub_json', 'publisher_revenue') as revenue_mopub,
JSON_EXTRACT_PATH_TEXT(column_name, 'mopub_json', 'currency') as currency_mopub
FROM(
SELECT replace(column_name, chr(92), '')
FROM table_name)
我收到
Invalid operation: JSON parsing error
当我尝试在不替换的情况下提取值时,我收到的是空列。
感谢您的帮助!
所以您的 json 无效。 JSON 不允许多行文本字符串,但我预料到这个问题。根据您的查询,我认为您不需要单个键和字符串,而是整个结构。引号被反斜杠的原因是因为它们在字符串中。 json 应如下所示:
{
"mopub_json": {
"currency": "USD",
"country": "US",
"publisher_revenue": 0.01824
}
}
那么你的 SQL 应该可以用了。