用于检查 DOG 是否在边界框中的 Power Query 公式
PowerQuery formula to check if COG is in bouding Box
我正在尝试定义对象的齿轮在哪个框中。例如,我有一个带有 COG (1.2, 1.5, 0.3) (x, y, z) 的项目和一个框列表:
盒子数量
Z低
Z高
Y 左
Y对
X锋
X 向后
1
0
3
-5
0
5
0
2
0
3
0
5
5
0
在此示例中,商品位于方框 2 中。
我现在的解决方案是使用 Sumifs,如果 COG 是 lower/higher,则检查每个边界,然后检查边界的值,因为没有框的重叠。
大部分数据都是用powerquery加载的,但是我不能让这个sumifs语句在powerquery中工作,我必须将数据加载到excel并添加sumifs语句,如果我想这样做是行不通的在 Power BI 中加载它。否则我必须打开 excel,在那里刷新并让计算 运行,保存,打开 PBI 并在那里刷新。
是否可以选择使用 sumifs 或仅使用 Power BI 的其他解决方案来创建此语句?
直接比较x,y,z
参数,输出通过测试的箱号列表即可。
例如:(作为函数)
(x as number, y as number, z as number) =>
let
Box = Table.FromRecords({
[Box Number=1, Z Low=0, Z High=3,Y Left=-5,Y Right=0,X Front=5,X Aft=0],
[Box Number=2,Z Low = 0, Z High=3, Y Left=0, Y Right=5,X Front=5,X Aft=0]
}),
typeIt = Table.TransformColumnTypes(
Box, List.Transform(Table.ColumnNames(Box), each {_,Int64.Type})
),
inOut = Table.AddColumn(typeIt,"ckBox", each
x >= [X Aft] and x<= [X Front] and
y >= [Y Left] and y <= [Y Right] and
z >= [Z Low] and z <= [Z High]
),
boxNum = Table.SelectRows(inOut,each [ckBox] = true)
in
boxNum[Box Number]
我正在尝试定义对象的齿轮在哪个框中。例如,我有一个带有 COG (1.2, 1.5, 0.3) (x, y, z) 的项目和一个框列表:
盒子数量 | Z低 | Z高 | Y 左 | Y对 | X锋 | X 向后 |
---|---|---|---|---|---|---|
1 | 0 | 3 | -5 | 0 | 5 | 0 |
2 | 0 | 3 | 0 | 5 | 5 | 0 |
在此示例中,商品位于方框 2 中。 我现在的解决方案是使用 Sumifs,如果 COG 是 lower/higher,则检查每个边界,然后检查边界的值,因为没有框的重叠。
大部分数据都是用powerquery加载的,但是我不能让这个sumifs语句在powerquery中工作,我必须将数据加载到excel并添加sumifs语句,如果我想这样做是行不通的在 Power BI 中加载它。否则我必须打开 excel,在那里刷新并让计算 运行,保存,打开 PBI 并在那里刷新。
是否可以选择使用 sumifs 或仅使用 Power BI 的其他解决方案来创建此语句?
直接比较x,y,z
参数,输出通过测试的箱号列表即可。
例如:(作为函数)
(x as number, y as number, z as number) =>
let
Box = Table.FromRecords({
[Box Number=1, Z Low=0, Z High=3,Y Left=-5,Y Right=0,X Front=5,X Aft=0],
[Box Number=2,Z Low = 0, Z High=3, Y Left=0, Y Right=5,X Front=5,X Aft=0]
}),
typeIt = Table.TransformColumnTypes(
Box, List.Transform(Table.ColumnNames(Box), each {_,Int64.Type})
),
inOut = Table.AddColumn(typeIt,"ckBox", each
x >= [X Aft] and x<= [X Front] and
y >= [Y Left] and y <= [Y Right] and
z >= [Z Low] and z <= [Z High]
),
boxNum = Table.SelectRows(inOut,each [ckBox] = true)
in
boxNum[Box Number]