【问题标题】:JSON Formatting using Snowflake SQL to structure per DateJSON 格式化使用 Snowflake SQL 来构造每个日期
【发布时间】:2023-02-24 00:49:48
【问题描述】:

我的雇主目前是 LiveChat 客户,我们希望将他们的数据与他们提供的 Api 一起使用。

然而,API 是一种以奇怪的方式构建的 JSON,我发现自己无法每天将其转换为结构化表格。

这是 JSON 的 sn-p

  {
  "name": "duration-report",
  "records": {
    "2022-01-01": {},
    "2022-01-02": {},
    "2022-01-03": {
      "agents_chatting_duration": 229,
      "count": 6,
      "duration": 229
    },
    "2022-01-04": {
      "agents_chatting_duration": 1449,
      "count": 13,
      "duration": 1488
    },
    "2022-01-05": {
      "agents_chatting_duration": 1088,
      "count": 21,
      "duration": 1088
    }

我当前的代码:

SELECT
"i"."DATA VALUE",
("i"."DATA VALUE":"name")::VARCHAR AS "name",
("i"."DATA VALUE":"records")::VARIANT AS "records",
("f1".Value)::VARIANT AS "date_content",
("f1".Value:"count")::NUMBER AS "count",
("f1".Value:"duration")::NUMBER AS "duration",
("f1".Value:"agents_chatting_duration")::NUMBER AS "agents_chatting_duration"
 FROM
 ( "$T{LIVECHAT_CHAT_DURATION}" ) "i",
 lateral flatten (input => "i"."DATA VALUE":"records") "f1"

我基本上缺少包含日期的列。有人能帮我吗?

谢谢

【问题讨论】:

    标签: sql json api snowflake-cloud-data-platform livechat


    【解决方案1】:

    您需要 OBJECT_KEYS 函数,因为您的 SQL 看起来不是最终版本并且需要一些清理 我将日期添加为第一列

    SELECT
    OBJECT_KEYS("i"."DATA VALUE":"records")[row_number() over(order by data_value)-1] AS "dt",
    "i"."DATA VALUE",
    ("i"."DATA VALUE":"name")::VARCHAR AS "name",
    ("i"."DATA VALUE":"records")::VARIANT AS "records",
    ("f1".Value)::VARIANT AS "date_content",
    ("f1".Value:"count")::NUMBER AS "count",
    ("f1".Value:"duration")::NUMBER AS "duration",
    ("f1".Value:"agents_chatting_duration")::NUMBER AS "agents_chatting_duration"
     FROM
     ( "$T{LIVECHAT_CHAT_DURATION}" ) "i",
     lateral flatten (input => "i"."DATA VALUE":"records") "f1"
    
    

    OBJECT_KEYS 返回一个数组,row_number 用于获取每一行的日期。

    这是基于您提供的示例数据集的解决方法,如果您的完整数据集不遵循示例的模式,则可能不起作用。

    注意:您的 JSON sn-p 缺少闭合的 2 个大括号

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 1970-01-01
      • 2015-05-18
      • 2014-12-07
      • 1970-01-01
      • 2021-12-15
      相关资源
      最近更新 更多