Database 在Tableau中将PostgreSQL嵌套JSON转换为数字数组
我有一个PostgreSQL数据库,其中包含一个带有单独记录的表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': [
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
type(而不是json
为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