首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用PowerBI确定机器的样式转换

使用PowerBI确定机器的样式转换
EN

Stack Overflow用户
提问于 2019-05-23 01:02:16
回答 1查看 81关注 0票数 2

因此,我有一个表,其中包含具有样式的部门中所有机器的输出。例如:

代码语言:javascript
复制
|Machine| |Style| | QTY|  |Time|   |Date|    etc...
     1       001    100   8:00AM   5/21/19
     2       001    200   8:05AM   5/21/19
     1       001    100   9:00AM   5/21/19     
     1       004    100   10:00AM  5/21/19
     2       001    200   9:05AM   5/21/19

我正在查看一台机器的样式被更改的次数。因此,在这种情况下,对于机器1,它是一个样式更改,而对于机器2,它是零。

我试着修改了一些代码,但都无济于事;主要是因为我理解逻辑有问题,而且我真的想不出一个好的索引来工作。这是我到目前为止所得到的:

代码语言:javascript
复制
EarliestChange Over Index = 
VAR Temp =
    CALCULATE (
        MAX ( Table[Index] ),
        FILTER (
            Table,
            [Index] < EARLIER ( [Index] )
                && [Style] <> EARLIER ( [Style])
                && Table[Date] = today()-1
        )
    )
VAR Temp1 =
    CALCULATE (
        MIN ( [Index] ),
        FILTER (
            Table,
            [Index] > EARLIER ( [Index] )
                && [Style] <> EARLIER ( [Style])
                && Table[Date] = today()-1
        )
    )
RETURN
   IF ( [Index] > temp && OR ( [Index] < temp1, ISBLANK ( temp1 ) ), temp + 1, 0 ) 

我试着把它限制在只有一天,这样我就可以评估结果,这样就可以去掉那部分。我尝试了两种不同的索引,一个是机器编号,另一个是表中与今天和最小日期之间的时间差。在视觉上,我一直在对索引上的EarliestChange进行不同的计数,并减去1,因为它不构成“转换”。

编辑:同时记录多个样式导致错误切换的问题。

代码语言:javascript
复制
    |Machine| |Style| | QTY|  |Time|   |Date|    etc...
         1       001    100   8:00AM   5/21/19
         1       001    100   9:00AM   5/21/19     
         1       004    100   10:00AM  5/21/19
         1       004    100   10:00AM  5/21/19
         1       004    100   10:00AM  5/21/19

在一个部门,时间永远不会重复。但是,在另一个部门(无论出于何种原因)可能会同时记录3个轮询。这将导致等式将10:00am记录为3次转换。这可能是一个系统故障,为什么每个卷没有唯一的时间戳,但不幸的是,情况就是这样。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-23 03:45:41

一种方法是:

首先,我对您的数据进行了如下修改:

  • 在上午11:00为机器1添加了一条记录,以捕捉样式恢复为旧样式时的情况;
  • 为日期-时间(简单地说是日期+时间)添加了一列,以简化工作;
  • 将该表命名为"Data"

测量:

代码语言:javascript
复制
Style Change Count
=
SUMX (
    Data,
    VAR Current_DateTime = Data[Date-Time]
    VAR Current_Style = Data[Style]
    VAR Previous_DateTime =
        CALCULATE (
            MAX ( Data[Date-Time] ),
            FILTER ( ALLEXCEPT ( Data, Data[Machine] ), Data[Date-Time] < Current_DateTime )
        )
    VAR Previous_Style =
        CALCULATE (
            VALUES ( Data[Style] ),
            FILTER ( ALLEXCEPT ( Data, Data[Machine] ), Data[Date-Time] = Previous_DateTime )
        )
    RETURN
        IF ( Current_Style = Previous_Style || ISBLANK ( Previous_Style ), 0, 1 )
)

结果:

它的工作原理:

我们需要使用SUMX来确保我们的小计和总计在数据表上迭代,并为每条记录计算“以前的日期-时间”,这只是每台机器上比当前数据小的最大日期时间(因此我们可以计算以前的样式,这是一种样式,其中correct;

  • SUMX -

  • =以前的日期时间),我们比较当前样式和以前的样式。如果它们不相同,我们添加1;

  • 此外,我还添加了一个测试,用于测试启动条件-第一次出现机器,之前的样式还不存在。我没有把这样的记录视为“风格改变”。如果要将初始记录计入样式更改,请删除ISBLANK()部分。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56261789

复制
相关文章

相似问题

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