请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

Eden.Sun Wyn认证
超级版主   /  发表于:2025-4-11 14:27  /   查看:11  /  回复:0
本帖最后由 Eden.Sun 于 2025-4-17 12:18 编辑

背景
在Wyn商业智能中,数据表之间常常存在一定的关联关系。最常见的关系就是父子表的数据关系,并且在主表显示时获取子表的字段信息。
image.png665337218.png


前置步骤
1. 表关系介绍
我们使用的测试数据有两张表:订单表和订单明细表,两张表通过订单编号字段进行关联。
image.png546753539.png

2. 数据说明
订单表中是订单总信息,订单明细表中是每个订单中的具体明细数据。每个订单下有一条以及一条以上的明细信息(1对N)。
image.png253149413.png

3. 场景需求
① 明细表中,每个订单对应的明细都有对应的序号;
① 在仪表板中展示主表数据;
② 每条订单信息后面显示对应的明细数据中序号最大和最小的商品编号。
image.png24078978.png


设计步骤
1. 创建数据源
我们使用 Excel 文件创建Excel数据源
image.png704099731.png

2. 创建数据模型
使用上一步中创建的数据源,创建 抽取模型,并且添加表关系
image.png381219786.png

3. 仪表板设计
3.1 添加数据模型
把上一步中设计的数据模型添加到仪表板中:
image.png490014647.png

3.2 创建度量值
创建度量值获取对应订单下的序号最小的明细商品编号。这里我们使用度量值中的窗口函数 FirstValueW,表达式如下:
  1. FirstValueW(
  2.   '订单明细',
  3.   '订单明细'[商品编号],
  4.   PartitionBy('订单明细'[订单编号]),
  5.   OrderBy('订单明细'[序号])
  6. )
复制代码
image.png327351073.png

表达式说明:FirstValueW 是一个窗口函数,按照某个字段进行分组,然后返回分组中指定字段的第一个值。有四个参数值,第一个是表名称,第二个是返回的字段名称,第三个是分组字段,第四个是排序字段。
所以上面的表达式的含义就为:在"订单明细"表中,根据"订单编号"字段进行分组,分组后的内容再根据"序号"字段进行升序排序,默认(或者不设置排序方式)是升序,然后返回"商品编号"字段的第一个值

同理我们再创建一个度量值获取订单下,序号值最大时,商品明细中的商品编号:
  1. FirstValueW(
  2.   '订单明细',
  3.   '订单明细'[商品编号],
  4.   PartitionBy('订单明细'[订单编号]),
  5.   OrderBy('订单明细'[序号] DESC)
  6. )
复制代码

image.png528263549.png

4 设计仪表板
我们使用透视表来显示数据,因为订单表中的数据肯定都是唯一的(同一个订单不可能有两条记录)。所以透视表也能做出数据展示的效果。
4.1 绑定字段
使用主表(订单表)的"订单编号"字段作为透视表的行分组:
image.png884014587.png
其他字段都绑定在数值区域,并设置显示第一个值:
image.png257077025.png
然后对字段重命名,设置字段显示名称:
image.png691622008.png

最后将所有的展示字段都绑定到数值区域,然后重复上面的步骤:
image.png344179381.png


4.2 绑定创建的度量值
把前面在子表上创建的度量值也绑定在图表上:
image.png590652160.png

5. 最终的效果
到这里就可以看到,从子表中拿到了对应的商品编号:
image.png218828124.png

主表获取子表字段.zip

103.47 KB, 下载次数: 0

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部