在 DAX 中使用过滤器进行多重连接
Multiple Joins with Filters in DAX
我正在尝试在 DAX 中重新创建简单的 SQL 查询。输出查询需要在 Power BI Report Builder 中工作,我一整天都在尝试阅读各种 PowerBI/DAX 在线资源来重写它。
关于数据的一点点:
- 数据结构在三个表中,CustomCar、Engine 和 Chassis。
- 基本上“CarId”是连接所有三个表的键。
- 让我们假设所有表都有超过 20 列。所以最终输出中只需要几列。
- 所有三个表(CustomCar、Chassis 和 Engine)都有一个
IsActive
属性(Engine/Chassis 与 CustomCar 之间的关系是多对一的。因为引擎可能会爆炸然后他们改变了它因此我们想以某种方式跟踪今天汽车上的发动机和去年的发动机,但是,在任何时候,每辆车只有一个活动发动机..底盘也是如此)
- Engine 和 Chassis 都有 'Manufacturer' 和 'Model' 列,因此在输出查询中它们需要相互识别。
- 我并不是要汇总任何类型的销售数字,只是列出具有当前配置的汽车。
感谢任何帮助。
Select
CC.Name, CC.Model as 'CustomCarModel', CC.MaxSpeed,
Ch.Manufacturer as 'ChassisManufacturer', Ch.Model as 'ChassisModel', Ch.ManufacturedDate as 'ChassisManfDate',
E.Manufactuer as 'EngineManufacturer', E.Model as 'EngineModel', E.Power, E.CylCount, E.ManufacturedDate
From CustomCars CC
Join Chassis Ch on Ch.CarID = CC.CarId
Join Engine E on E.CarID = CC.CarID
where
CC.IsActive = 1 and CC.FirstTestDriveYear < 1980 and
Ch.IsActive = 1 and
E.IsActive = 1
更多信息,这是我的表格。
老爷车:
CarId (Primary Key) | Model | MaxSpeed | NumOfPax | TankCapacity | IsActive | FirstTestDriveYear |....
1 | SuperChev | 220 | 2 | 60 | 1 | 1985 |
2 | CustomBranco | 185 | 2 | 90 | 1 | 1979 |
3 | RebuiltToyo | 251 | 4 | 20 | 0 | 1990 |
机箱:
ChassisId (Primary Key) | CarId (Foreign Key)| IsActive | Manufacturer | Model | ManufacturedDate | ...
1 | 1 | 0 | ACME Chassis | M1 | '04-Jan-1985' | ...
2 | 1 | 1 | SuperChassis | T5 | '03-Feb-1987' | ...
3 | 2 | 0 | Ford | S2 | '25-Mar-1965' | ...
4 | 2 | 0 | Ford | S2 | '25-Mar-1968' | ...
5 | 3 | 0 | JapanChass | X123 | '25-Feb-1988' | ...
6 | 2 | 1 | Ford | S8 | '08-Jul-1978' | ...
7 | 2 | 0 | Ford | S2 | '25-Mar-1968' | ...
8 | 3 | 1 | JapanChass | Y765 | '25-Feb-1992' | ...
引擎:
EngineId (Primary Key) | CarId (Foreign Key)| IsActive | Manufacturer | Model | ManufacturedDate | Power | CylCount | ...
1 | 1 | 0 | GM | AB1 | '04-Jan-1985' | 320 | 8 | ...
2 | 1 | 1 | Bently | ZY2 | '03-Feb-1987' | 285 | 8 | ...
3 | 2 | 0 | Ford | S2 | '25-Mar-1965' | 290 | 6 | ...
4 | 2 | 0 | Ford | S2 | '25-Mar-1968' | 292 | 6 | ...
5 | 3 | 0 | Toyota | X123 | '25-Feb-1988' | 180 | 4 | ...
6 | 2 | 1 | Ford | S8 | '08-Jul-1978' | 222 | 8 | ...
7 | 2 | 0 | Ford | S2 | '25-Mar-1968' | 320 | 8 | ...
8 | 3 | 1 | Toyota | Y765 | '25-Feb-1992' | 211 | 6 | ...
我找到了解决此问题的方法。我在 Power BI 仪表板中添加数据管道时添加了查询,并将按原样使用查询中的值。
我正在尝试在 DAX 中重新创建简单的 SQL 查询。输出查询需要在 Power BI Report Builder 中工作,我一整天都在尝试阅读各种 PowerBI/DAX 在线资源来重写它。
关于数据的一点点:
- 数据结构在三个表中,CustomCar、Engine 和 Chassis。
- 基本上“CarId”是连接所有三个表的键。
- 让我们假设所有表都有超过 20 列。所以最终输出中只需要几列。
- 所有三个表(CustomCar、Chassis 和 Engine)都有一个
IsActive
属性(Engine/Chassis 与 CustomCar 之间的关系是多对一的。因为引擎可能会爆炸然后他们改变了它因此我们想以某种方式跟踪今天汽车上的发动机和去年的发动机,但是,在任何时候,每辆车只有一个活动发动机..底盘也是如此) - Engine 和 Chassis 都有 'Manufacturer' 和 'Model' 列,因此在输出查询中它们需要相互识别。
- 我并不是要汇总任何类型的销售数字,只是列出具有当前配置的汽车。
感谢任何帮助。
Select
CC.Name, CC.Model as 'CustomCarModel', CC.MaxSpeed,
Ch.Manufacturer as 'ChassisManufacturer', Ch.Model as 'ChassisModel', Ch.ManufacturedDate as 'ChassisManfDate',
E.Manufactuer as 'EngineManufacturer', E.Model as 'EngineModel', E.Power, E.CylCount, E.ManufacturedDate
From CustomCars CC
Join Chassis Ch on Ch.CarID = CC.CarId
Join Engine E on E.CarID = CC.CarID
where
CC.IsActive = 1 and CC.FirstTestDriveYear < 1980 and
Ch.IsActive = 1 and
E.IsActive = 1
更多信息,这是我的表格。
老爷车:
CarId (Primary Key) | Model | MaxSpeed | NumOfPax | TankCapacity | IsActive | FirstTestDriveYear |....
1 | SuperChev | 220 | 2 | 60 | 1 | 1985 |
2 | CustomBranco | 185 | 2 | 90 | 1 | 1979 |
3 | RebuiltToyo | 251 | 4 | 20 | 0 | 1990 |
机箱:
ChassisId (Primary Key) | CarId (Foreign Key)| IsActive | Manufacturer | Model | ManufacturedDate | ...
1 | 1 | 0 | ACME Chassis | M1 | '04-Jan-1985' | ...
2 | 1 | 1 | SuperChassis | T5 | '03-Feb-1987' | ...
3 | 2 | 0 | Ford | S2 | '25-Mar-1965' | ...
4 | 2 | 0 | Ford | S2 | '25-Mar-1968' | ...
5 | 3 | 0 | JapanChass | X123 | '25-Feb-1988' | ...
6 | 2 | 1 | Ford | S8 | '08-Jul-1978' | ...
7 | 2 | 0 | Ford | S2 | '25-Mar-1968' | ...
8 | 3 | 1 | JapanChass | Y765 | '25-Feb-1992' | ...
引擎:
EngineId (Primary Key) | CarId (Foreign Key)| IsActive | Manufacturer | Model | ManufacturedDate | Power | CylCount | ...
1 | 1 | 0 | GM | AB1 | '04-Jan-1985' | 320 | 8 | ...
2 | 1 | 1 | Bently | ZY2 | '03-Feb-1987' | 285 | 8 | ...
3 | 2 | 0 | Ford | S2 | '25-Mar-1965' | 290 | 6 | ...
4 | 2 | 0 | Ford | S2 | '25-Mar-1968' | 292 | 6 | ...
5 | 3 | 0 | Toyota | X123 | '25-Feb-1988' | 180 | 4 | ...
6 | 2 | 1 | Ford | S8 | '08-Jul-1978' | 222 | 8 | ...
7 | 2 | 0 | Ford | S2 | '25-Mar-1968' | 320 | 8 | ...
8 | 3 | 1 | Toyota | Y765 | '25-Feb-1992' | 211 | 6 | ...
我找到了解决此问题的方法。我在 Power BI 仪表板中添加数据管道时添加了查询,并将按原样使用查询中的值。