我有一个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中绘制散点图中的Y
vs。X
因此,我已成功将数据库与Tableau的PostgreSQL连接器连接。从该页面我了解到,由于Tableau不直接支持json
Postgres的数据类型,因此我必须使用自定义SQL查询从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_x
和中contour_points_y
。但是,这两个新列都在Tableau类型的中string
,因此我不能将它们用作绘图的数据源。
我如何调整自定义SQL查询以使数据数组在Tableau散点图中可绘制?
答案是几种功能和/或语法操作的串联。一个必须
#>
运算符在中进行挖掘,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 Sheet中。更改为离散尺寸可以根据需要绘制contour_points_y
vs。contour_points_x
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句