【问题标题】:Clean JSON column from bad data in Snowflake从雪花中的不良数据中清除 JSON 列
【发布时间】:2021-05-24 14:17:59
【问题描述】:

我在 Snowflake 中有一个包含许多列的表,其中一列是名为 RECORD 的 JSON 列(检查附件图片),因此 JSON 列中有多个列,其中一些列包含错误数据,例如 ( // , * 或 \\ ),我想在雪花中创建函数来清除这个 JSON 列中的坏数据,我的 JSON 在下面

{
  "F000 //Start Date": "3/3/2016 21:04",
  "F001 End Date": "3/3/2016 23:20",
  "F002 *Response Type//": "IP Address",
  "F003 IP Address": "166.170.14.93",
  "F004 SurveyName\\": "6 Month",
} 

【问题讨论】:

  • 我看到了输入 - 确切的期望输出是什么?您尝试过任何查询吗?
  • 没有从这个 JSON 列中提取数据的计划,当前的任务是使用 Snowflake 中的函数或 SP 从任何不需要的数据(例如(//、* 或 \))中清除这些列
  • 但是确切的期望输出是什么?您尝试过任何查询吗?
  • 输出将在此 JSON 之上创建具有确切列名的视图,但需要从任何不良数据中清除列,例如 CREATE OR REPLACE VIEW MULESOFT_DEV.SURVEY_RESULTS.TEST AS SELECT RECORD:"F000 Start Date"::STRING as "Start Date", RECORD:"F001 End Date"::STRING as "End Date", RECORD:"F002 Response Type"::STRING as "Response Type", RECORD:"F003 IP Address “::STRING 作为“IP 地址”,RECORD:“F004 SurveyName”::STRING 作为“调查名称”,FROM “MULESOFT_DEV”。“SURVEY_RESULTS”。“SURVEY_RESPONSES_HISTORICAL_DATA_BackUp”

标签: json json.net snowflake-cloud-data-platform


【解决方案1】:

一种简单的方法可能是实现一个 Javascript UDF,它返回清理后的 JSON,如下所示。

CREATE OR REPLACE FUNCTION clean(record variant)
  RETURNS variant
  LANGUAGE JAVASCRIPT
  AS $$
  cleaned = {}
  for (const property in RECORD) {
    cleaned[property.replace(/\/\/|\\|\*/g, '')] = RECORD[property]
  }
  return cleaned
  $$;

with tbl as (select parse_json($1) record from values ('{
  "F000 //Start Date": "3/3/2016 21:04",
  "F001 End Date": "3/3/2016 23:20",
  "F002 *Response Type//": "IP Address",
  "F003 IP Address": "166.170.14.93",
  "F004 SurveyName\\\\": "6 Month",
}'))

select clean(record) from tbl;

{
  "F000 Start Date": "3/3/2016 21:04",
  "F001 End Date": "3/3/2016 23:20",
  "F002 Response Type": "IP Address",
  "F003 IP Address": "166.170.14.93",
  "F004 SurveyName": "6 Month"
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    • 2020-07-30
    • 2021-08-01
    • 1970-01-01
    • 2021-12-07
    • 2020-12-01
    • 2021-07-07
    相关资源
    最近更新 更多