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

去biszumeis

我有一个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中绘制散点图中的Yvs。X因此,我已成功将数据库与Tableau的PostgreSQL连接器连接。页面我了解到,由于Tableau不直接支持jsonPostgres数据类型,因此我必须使用自定义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散点图中可绘制?

去biszumeis

答案是几种功能和/或语法操作的串联。一个必须

  • 使用#>运算符在中进行挖掘,json然后将其作为json类型(而不是text类型>>#)返回。
  • 用于json_array_elements_text()将扩展json为一组text
  • 使用类型强制::转换运算符转换textfloat
/* 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_yvs。contour_points_x

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章