Database 在Tableau中将PostgreSQL嵌套JSON转换为数字数组

Database 在Tableau中将PostgreSQL嵌套JSON转换为数字数组,database,postgresql,data-science,tableau-api,postgresql-json,Database,Postgresql,Data Science,Tableau Api,Postgresql Json,我有一个PostgreSQL数据库,其中包含一个带有单独记录的表test\u table。第一列是一个简单的store\u id,第二列meausrement是一个嵌套的json store_id | measurement ---------------------- 0 | {...} 测量列的格式如下: { 'file_info': 'xxxx', 'data': { 'contour_data': { 'X': [

我有一个PostgreSQL数据库,其中包含一个带有单独记录的表
test\u table
。第一列是一个简单的
store\u id
,第二列
meausrement
是一个嵌套的json

store_id | measurement
----------------------
0        | {...}
测量
列的格式如下:

{
    '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]
        }
    }
}
我想在表中的散点图中绘制
Y
X
。因此,我成功地将数据库与Tableau的PostgreSQL连接器连接起来。从第页我了解到,我必须使用自定义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
它成功地将两个数组提取到两个新列
轮廓点\u x
轮廓点\u y
。但是,这两个新列都位于类型为
string
的Tableau中,因此我无法将它们用作绘图的数据源


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

看起来需要拆分列。检查这个


编辑-当您可以可靠地假定每个列表中的点数有一个上限时,链接方法就会起作用。这里介绍了一种拆分任意大小列表的方法,答案是将多个函数和/或语法操作串联起来。必须

  • 使用操作符挖掘
    json
    并将其返回
    json
    type
    (而不是
    text
    >#
    所做的那样)
  • 用于将
    json
    扩展为一组
    文本
  • 使用类型转换运算符
    文本
    转换为
    浮点

两个结果列现在都作为离散度量值出现在表格中。更改为离散尺寸可以根据需要绘制
轮廓点\u y
轮廓点\u x

非常感谢您的回答。然而,虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接以供参考。如果链接页面发生更改,则仅链接的答案可能无效。
/* 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