【问题标题】:Convert PostgreSQL nested JSON to numeric array in Tableau在 Tableau 中将 PostgreSQL 嵌套 JSON 转换为数值数组
【发布时间】:2020-06-17 07:15:47
【问题描述】:

我有一个 PostgreSQL 数据库,其中包含一个带有单独记录的表 test_table。第一列是一个简单的store_id,第二列meausurement是一个嵌套的json。

store_id | measurement
----------------------
0        | {...}

measurement列的格式如下:

{
    'file_info': 'xxxx', 
    'data': {
        'contour_data': {
            'X': [-97.0, -97.0, -97.0, -97.0, -97.0, -97.0],
            'Y': [-43.0, -41.0, -39.0, -39.0, -38.0, -36.0]
        }
    }
}

我想在 Tableau 的散点图中绘制 YX。因此,我使用 Tableau 的 PostgreSQL 连接器成功连接了数据库。从this 页面我了解到,我必须使用自定义 SQL 查询从 json 对象中提取数据,因为 Tableau 不直接支持 Postgres 的json 数据类型。我已经在 Tableau 中尝试了以下自定义 SQL 查询:

select
    store_id as store_id,
    measurement#>>'{data, contour_data, X}' as contour_points_x,
    measurement#>>'{data, contour_data, Y}' as contour_points_y
from test_table

成功地将两个数组提取到两个新列contour_points_xcontour_points_y。但是,这两个新列都在 string 类型的 Tableau 中,因此我不能将它们用作绘图的数据源。

如何调整自定义 SQL 查询以使数据数组可在 Tableau 散点图中绘制?

【问题讨论】:

    标签: database postgresql data-science tableau-api postgresql-json


    【解决方案1】:

    看起来您需要拆分列。检查这个https://help.tableau.com/current/pro/desktop/en-us/split.htm

    编辑 - 当您可以可靠地假设每个列表中的点数的上限时,链接方法有效。这里描述了一种拆分任意大小列表的方法https://apogeeintegration.com/blog/apogee-busts-out-multi-value-cells-using-tableau-prep-builder

    【讨论】:

    • 非常感谢您的回答。但是,虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
    【解决方案2】:

    答案是多个函数和/或语法操作的串联。一个必须

    • 使用#> 运算符挖掘json 并将其返回作为json 类型(不像text 类型那样>># 那样)。
    • 使用json_array_elements_text()json 扩展为一组text
    • 使用类型转换运算符::text 转换为float
    /* custom SQL Query in Tableau */
    select 
        store_id as store_id,
        json_array_elements_text(measurement#>'{data, contour_data, X}')::float as contour_points_x,
        json_array_elements_text(measurement#>'{data, contour_data, Y}')::float as contour_points_y,
    from test_table
    

    两个结果列现在都作为离散度量显示在 Tableau 工作表中。更改为离散尺寸允许根据需要绘制 contour_points_ycontour_points_x

    【讨论】:

      猜你喜欢
      • 2021-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-20
      • 2018-05-15
      • 2021-02-27
      • 1970-01-01
      • 2023-04-01
      相关资源
      最近更新 更多