如何在PostgreSQL中新增Grandparent列并同步至Power BI
在PostgreSQL中添加Grandparent列并同步至Power BI的解决方案
问题场景
当前PostgreSQL数据库中有一张表(假设表名为family_tree),包含User和Parent两列,原始数据如下:
| User | Parent |
|---|---|
| Amy K. | Theo K. |
| Lena K. | Theo K. |
| Jiha L. | John L. |
| John L. | Victor L. |
| Theo K. | Simba K. |
| Simba K. | Ellen K. |
需要新增Grandparent列,该列值为对应Parent记录的父级(即Parent列值对应的User记录的Parent字段值),最终效果如下:
| User | Parent | Grandparent |
|---|---|---|
| Amy K. | Theo K. | Simba K. |
| Lena K. | Theo K. | Simba K. |
| Jiha L. | John L. | Victor L. |
| John L. | Victor L. | null |
| Theo K. | Simba K. | Ellen K. |
| Simba K. | Ellen K. | null |
PostgreSQL实现方案
方案1:永久修改原表(新增并更新列)
如果需要在原表中永久添加Grandparent列,执行以下SQL语句:
- 新增
Grandparent列:
ALTER TABLE family_tree ADD COLUMN Grandparent VARCHAR;
- 通过自连接更新列值:
UPDATE family_tree ft SET Grandparent = p.Parent FROM family_tree p WHERE ft.Parent = p."User";
注意:
User是PostgreSQL关键字,作为列名时需要用双引号包裹。
方案2:临时查询结果(不修改原表)
如果不需要修改原表,仅需查询包含Grandparent的结果集,使用以下SELECT语句:
SELECT ft."User", ft.Parent, p.Parent AS Grandparent FROM family_tree ft LEFT JOIN family_tree p ON ft.Parent = p."User";
同步至Power BI的步骤
- 打开Power BI Desktop,点击获取数据 → PostgreSQL数据库
- 输入数据库服务器地址、数据库名称,选择对应的登录认证方式(如数据库账户)
- 若使用方案1(已修改原表),直接选择
family_tree表加载;若使用方案2,在高级选项中输入上述自定义SELECT语句 - 完成数据加载后,即可在Power BI中查看包含
Grandparent列的数据集 - 后续数据库数据更新时,点击Power BI中的刷新按钮即可同步最新数据
内容的提问来源于stack exchange,提问作者user22999077
相关产品推荐
相关产品推荐

