我正在尝试在 Apache Superset 的树形图中呈现层次结构查询。 由于某种原因,它总是将其显示为单个点或直线。 我最初尝试使用它来呈现 PostgreSQL 备份的 pgBackRest 信息的结构,但是当这不起作用时,我尝试对员工和经理进行简单的层次结构查询,但效果不佳。 如果有人使用过树形图,请提供帮助。 我的 Apache Superset 版本是 1.3.2 附件是我尝试使其工作的查询。
with recursive cte as (
select 1 as level, ds.name, ds.backup_label, ds.backup_prior from (
select data->'name' as name,
(jsonb_array_elements(data->'backup')->>'label')::text as backup_label,
(jsonb_array_elements(data->'backup')->>'prior')::text as backup_prior
from jsonb_array_elements(v2.pgbackrest_info()) as data
) as ds
where ds.backup_prior is null
union all
select c.level + 1 as level, ds2.name, ds2.backup_label, ds2.backup_prior from (
select data->'name' as name,
(jsonb_array_elements(data->'backup')->>'label')::text as backup_label,
(jsonb_array_elements(data->'backup')->>'prior')::text as backup_prior
from jsonb_array_elements(v2.pgbackrest_info()) as data
) as ds2 join cte c on c.backup_label = ds2.backup_prior)
select * from cte;
SELECT id, name, manager_id, 1 as depth FROM employees
WHERE id = 2
UNION
SELECT e.id, e.name, e.manager_id, t.depth + 1
FROM employees as e
JOIN tree t
ON t.id = e.manager_id
)
SELECT id, name, manager_id, depth FROM tree;
以防万一这有帮助,您可以查看这个特定示例并将其适应您自己的数据。
首先,我们需要创建一个图表。我已在 SQL Lab 上运行此查询并从中创建了一个图表:
select 'Terror' as genre, 'IT' as movie
union
select 'Terror' as genre, 'The Shining' as movie
union
select 'Action' as genre, 'Terminator 2' as movie
union
select 'Comedy' as genre, 'Hot Fuzz' as movie
union
select 'Comedy' as genre, 'Bad Santa' as movie
union
select 'Movies' as genre, 'Terror' as movie
union
select 'Movies' as genre, 'Comedy' as movie
union
select 'Movies' as genre, 'Action' as movie
union
select '' as genre, 'Movies' as movie
如您所见,我没有使用列名,因为我放在一起的列名已经是字符串,并且我正在为应作为根出现的条目设置根 id 值。
我也有同样的问题。显然,树形图期望列类型为
varchar
。
因此,您可以通过将节点和父列转换为
varchar
类型来更改查询,并且它应该可以工作。