Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于度量值的PowerBI动态装箱(范围更改)_Powerbi_Dax_Powerbi Desktop_Binning_Summarize - Fatal编程技术网

基于度量值的PowerBI动态装箱(范围更改)

基于度量值的PowerBI动态装箱(范围更改),powerbi,dax,powerbi-desktop,binning,summarize,Powerbi,Dax,Powerbi Desktop,Binning,Summarize,我试图通过binning来表示一些连续的数据。一个区域的连续加权数据应分为:非常高、非常高、非常低、非常低。权重值基于按区域分组的特定类型事件之间的交互,因此可以根据报告用户选择的类型进行更改 我在下面提供了一些示例数据,并概述了迄今为止所做的工作 从五组面积数据(A-E)开始。每个事件中有一个或多个事件类型。每个事件都有一个权重和在该区域内发生的次数(计数) 添加计算列CC_ALL_WGT(加权*计数) 创建一个度量: M_WGT = DIVIDE(SUM(sample_data[CC_A

我试图通过binning来表示一些连续的数据。一个区域的连续加权数据应分为:非常高、非常高、非常低、非常低。权重值基于按区域分组的特定类型事件之间的交互,因此可以根据报告用户选择的类型进行更改

我在下面提供了一些示例数据,并概述了迄今为止所做的工作

从五组面积数据(A-E)开始。每个事件中有一个或多个事件类型。每个事件都有一个权重和在该区域内发生的次数(计数)

添加计算列CC_ALL_WGT(加权*计数)

创建一个度量:

M_WGT = DIVIDE(SUM(sample_data[CC_ALL_WGT]), SUM(sample_data[4_count]))
这在按区域分组后是有意义的,我们可以看到该区域得到了一个总体权重分数

这可以通过基于我们希望检查的事件类型对数据进行切片来改变:

我们还可以设置额外的措施来获得最小值;最大值;基于类型选择的测量中位数:

M_MIN_M_WGT = IF(
    countrows(values(sample_data[1_area])) = 1,
    sample_data[M_WGT],
    MINX(
        values(sample_data[1_area]),
        sample_data[M_WGT]
    )
)

进行切片器选择时,会按预期进行哪些更改

还应设置一个测量值,以确定最小值和中间值之间的中点以及最大值和中间值之间的中点

M_MidMinMed =
sample_data[M_MED_M_WGT] - ((sample_data[M_MED_M_WGT] - sample_data[M_MIN_M_WGT]) / 2)
我想用这些值创建一个基于以下内容的带状:

VeryLow:(最小到最小中点) 低:(最小到中值) 高:(中值到MedMax中点) 极高:(最大到最大)

所以根据下面的选择

垃圾箱的设置如下所示

  • 维洛(0.59至0.76)
  • 低(0.76至0.93)
  • 偏高(0.93至1.01)
  • 甚高(1.01至1.1)
  • 区域A将位于垃圾箱4(非常高);垃圾箱2中的B区(低);垃圾箱1中的C区(VeryLow);2号料仓中的D区(低);垃圾箱4中的E区(非常高)

    如果选择要查看的特定类型(通过切片器),则将按照以下方式设置垃圾箱:

    Range =
    VAR temp =
        CALCULATE ( sample_data[M_WGT] )
    RETURN
        IF (
            temp < 0.76,
            "1_VeryLow",
            IF (
                AND ( temp > 0.76, temp <= 0.93 ),
                "2_Low",
                IF (
                    AND ( temp > 0.93, temp <= 1.01 ),
                    "3_High",
                    "4_VeryHigh"
                )
            )
        )
    

  • VeryLow(0.35至0.61)
  • 低(0.61至0.88)
  • 偏高(0.88至1.06)
  • 甚高(1.06至1.24)
  • 因此,检查M_WGT(使用切片器中指定的类型):

    区域A将位于垃圾箱4(非常高);垃圾箱2中的B区(低);垃圾箱1中的C区(VeryLow);垃圾箱1中的D区(VeryLow);垃圾箱4中的E区(高)

    注-区域D的箱子分类从低变为低

    这就是我被卡住的地方。这篇文章指定了如何应用静态存储箱范围:但我无法根据选择使用动态或更改的值(最小值;最大值;介质;中点)来实现这一点

    我已设法申请的最接近的申请如下:

    Range =
    VAR temp =
        CALCULATE ( sample_data[M_WGT] )
    RETURN
        IF (
            temp < 0.76,
            "1_VeryLow",
            IF (
                AND ( temp > 0.76, temp <= 0.93 ),
                "2_Low",
                IF (
                    AND ( temp > 0.93, temp <= 1.01 ),
                    "3_High",
                    "4_VeryHigh"
                )
            )
        )
    
    范围=
    变温=
    计算(样本数据[M\U WGT])
    返回
    如果(
    温度<0.76,
    “1_VeryLow”,
    如果(
    
    和(temp>0.76、temp>0.93、temp您可以在一次测量中定义一个区域的桶:

    Bucket = 
    VAR Weights =
        SUMMARIZE ( ALLSELECTED ( sample_data ), sample_data[1_area], "Wgt", [M_WGT] )
    VAR MinW = MINX ( Weights, [Wgt] )
    VAR MaxW = MAXX ( Weights, [Wgt] )
    VAR MedW = MEDIANX ( Weights, [Wgt] )
    VAR MinMedW = ( MinW + MedW ) / 2
    VAR MedMaxW = ( MedW + MaxW ) / 2
    VAR CurrW = CALCULATE( [M_WGT], ALLSELECTED( sample_data[2_type] ) )
    RETURN
        SWITCH (
            TRUE (),
            CurrW <= MinMedW, "1_VeryLow",
            CurrW <= MedW,    "2_Low",
            CurrW <= MedMaxW, "3_High",
            CurrW <= MaxW,    "4_VeryHigh"
        )
    
    Ranges[Range]
    放在轴上,并根据需要定义计数度量

    CountArea =
    COUNTROWS ( FILTER ( sample_data, [Range] = SELECTEDVALUE ( Ranges[Range] ) ) )
    

    我真的不知道你想计数什么,它是否应该是一个独立的计数,或者是否应该包含
    4\u计数
    ,但根据需要修改这个计数度量。

    你能把样本数据放在文本形式中以便更容易复制吗?一个指向PBIX的链接也会很有用。@Alexisson我已经将原始帖子编辑为in包括数据(csv)和报告(.pbix)的链接这绝对是拥有动态箱的一种有效方法-非常感谢您的洞察力。我试图计算的是每个区域的总m_WGT,而不是每个单独类型的m_WGT。因此,对于DF,区域a将计算一次,m_WGT值为1.10,而不是计算三次(1.9)、RTC(1)和SLLR(0.35)。有什么方法可以汇总CountArea吗?类似于这样:CountArea_ii=COUNTROWS(过滤器(汇总(采样数据、采样数据[1_area]、“区域_聚合”、[Range]=SELECTEDVALUE(范围[Range]))如何
    SUMX(值(采样数据[1_area]),如果([Bucket]在值(范围[Range]),1])中)
    ?我认为这看起来很有效。我将继续进行一些检查,但根据进展情况和对问题的总体了解接受此答案。感谢您的时间、见解和帮助。如果出现其他问题,我将提出不同的问题。