首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用DAX进行生产计划

使用DAX进行生产计划
EN

Stack Overflow用户
提问于 2016-01-03 01:07:48
回答 2查看 349关注 0票数 1

我的问题是基于建立一个计划生产线的坡道。

我有一个在制品,其中坡道类别被选择用于每个MSO (主缝订单)。渐变基于小时界限(例如1-6小时、6-12小时等)。

在WIP上,MSO将具有单位(例如1,920个单位),除以每小时的容量(80个/小时),得出所需的24小时时间。然后需要根据1-6、6-12、12-18和18-24小时的斜率来计算,并将我们的效率乘以相关效率。

例如:

代码语言:javascript
复制
Hours 1-6: 20% efficiency * 80 units = 16 units/hr (6 x 16 = 96 units produced)

Hours 6-12: 40% efficiency * 80 units = 32 units/hr (192 units)

Hours 12-18: 60% efficiency * 80 Units = 48 units/hr (288 units)

Hours 18-24: 80% efficiency * 80 units = 64 units/hr (384 units)

Hours 24+: 100% efficiency * 80 units = 80 units/hr ((1920-960)/80)= 12 hours remaining

TOTAL TIME = 36 hours to produce

Power BI如何知道将原始的24小时估计值分成几部分,乘以各自的效率,然后返回36小时的新结果?

提前谢谢你!

库尔特

Relationships

EN

回答 2

Stack Overflow用户

发布于 2016-01-04 07:50:15

我不知道如何在DAX中做到这一点,但是您标记了PowerQuery,所以下面是一个自定义查询,它根据您的参数计算36:

代码语言:javascript
复制
let
  MSO = 1920,
  Capacity = 80,
  Efficiency = { 
    {6, 0.2},
    {12, 0.4},
    {18, 0.6},
    {24, 0.8},
    {#infinity, 1.0}
  },
  Accumulated = List.Accumulate(Efficiency, [
    Remaining = MSO, 
    RunningHours = 0
  ], (state, current) => 
    let 
      until = current{0},
      eff = current{1},
      currentCapacity = eff * Capacity,
      RemainingHours = state[Remaining] / currentCapacity,
      CappedHours = List.Min({RemainingHours, until - state[RunningHours]})
    in [
      Remaining = state[Remaining] - currentCapacity * CappedHours, 
      RunningHours = state[RunningHours] + CappedHours
    ]),
  Result = if Accumulated[Remaining] = 0 
    then Accumulated[RunningHours] 
    else error "Not enough time to finish!"
in
  Result

time-efficiency-ends,efficiency-value.格式为Efficiency的内部列表插入无限,意味着最后的效率永远不会停止。

在普通的迭代编程语言中,您可以使用for循环来更新状态,但在M中,您需要使用List.Accumulate并将所有状态打包到一个值中。

票数 2
EN

Stack Overflow用户

发布于 2016-01-05 20:00:42

在您的数据模型中,可能有一个表中的MSO包含两个字段: Units和UnitsPerHour,另一个名为EffTable的表可能存储按小时界限划分的效率。在MSO表中创建4个新的计算列,每个小时栏一个,例如1--6

代码语言:javascript
复制
  =
6 * LOOKUPVALUE ( EffTable[Efficiency], EffTable[Hours], "1--6" )
    * [UnitsPerHour]

这些字段包含您将在4个时隙中生产的单位数。为合计创建一个新的计算字段RampUpUnits

代码语言:javascript
复制
=
[1--6Hours] + [6--12Hours] + [12--18Hours] + [18--24Hours]

最后,计算总时间为:

代码语言:javascript
复制
=
24
    + ( [Units] - [RampUpUnits] )
    / [UnitsPerHour]

这将计算剩余单元所需的小时数,并将其添加到24小时的斜坡时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34568419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档