Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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
Excel DAX处理不同月份的周期_Excel_Powerpivot_Dax_Powerbi - Fatal编程技术网

Excel DAX处理不同月份的周期

Excel DAX处理不同月份的周期,excel,powerpivot,dax,powerbi,Excel,Powerpivot,Dax,Powerbi,我有两张桌子 第一个表:尺寸表,显示销售周期开始时可用的汽车单位以及这些单位的可用时间 第二张表:显示在“可用周期”内某个月售出的汽车数量 我想比较每个周期内的“销售行为”。因此,我想在周期内每个阶段售出的单位旁边显示可用的初始单位总数。第二个维度很好,但第一个维度不行 这就是我得到的: 这就是所需的输出(请注意第4行和第5行中的可用_单位) 我尝试了以下DAX代码,但未成功: SumAvailableUnits:=CALCULATE(SUM([available_units]),FIL

我有两张桌子

第一个表:尺寸表,显示销售周期开始时可用的汽车单位以及这些单位的可用时间

第二张表:显示在“可用周期”内某个月售出的汽车数量

我想比较每个周期内的“销售行为”。因此,我想在周期内每个阶段售出的单位旁边显示可用的初始单位总数。第二个维度很好,但第一个维度不行

这就是我得到的:

这就是所需的输出(请注意第4行和第5行中的可用_单位)

我尝试了以下DAX代码,但未成功:

SumAvailableUnits:=CALCULATE(SUM([available_units]),FILTER(ALL(Table1[month_within_cycle]),[month_within_cycle]>=MAX([months_available])))
首先,是你的朋友。您可能喜欢编写无法阅读的单行度量,但没有人喜欢阅读它们

我还随意清理了表名并添加了完全限定的列引用。(忽略您的维度不是纯维度,因为它包含您在度量中聚合的数值)

我们立刻发现了一个问题。对于完全限定的列引用,很明显,您正在尝试按基表(多侧)过滤查找表(一侧)。在Power Pivot for Excel中,我们没有双向关系(尽管它们在Power bi中可用,并将用于Excel 2016)。我们关系的筛选上下文仅从查找表流向基表,通常从维度流向事实

此外,您的DimCar通过持有[available_units]和[months_available]编码一个隐含的假设,即特定的[car_id]只能指单个不变的地块。您将永远不会看到另一行[car_id]=1。我觉得这是极不可能的。即使是这样,更好的解决方案是改变模型

通常,行或列标签上的任何内容都应该来自维度,而不是事实。类似地,在度量中聚合的任何内容都应该存在于事实表中。通常的例外是维度计数-裸计数或作为度量中的分母。以下这些将为您提供80%的尺寸建模方法。您可以在下图中看到我最后得到的表格和模型图

以下是度量定义

SumAvailableUnits:=SUM( FactAvailability[available_units] )

SumSold:=SUM( FactSale[cars_sold] )
以下是我的源表、带关系的模型图,以及根据这些部分和上述度量构建的透视表。注意透视图中[month_in_cycle]的来源

最后,您可能会注意到,我的grand total的行为方式与您原来的行为方式不同。因为这些值每月重复一次,所以我们得到的总计要大得多。如果您需要以最近一个月的总和结束(看起来您的样本中有),您可以使用下面提供的替代度量。我不明白为什么这会是你想要的总数,但你可以相当容易地实现它。就我个人而言,我可能会在总体水平上把这一指标留空

SumAvailableUnits - GrandTotal:=
SUMX(
    TOPN(
        1
        ,FactAvailability
        ,FactAvailability[month_within_cycle]
        ,0
    )
    ,FactAvailability[available_units]
)
这将使用SUMX()单步遍历由TOPN()定义的表。TOPN()返回FactAvailability中的第一行(在本例中),包括按[month_in_cycle]排序后在筛选器上下文中所有可用行中的ties。在特定月份的上下文中,您将获得与该月份相关联的所有行——与简单总和相同。在总计上下文中,您将获得与上个月关联的行


SUMX()迭代该表,并将[可用单位]的值累加到一个总和中。

总计部分对我来说是误导性的,我不在乎这一点。非常感谢你的解释,谢谢格雷格!
SumAvailableUnits - GrandTotal:=
SUMX(
    TOPN(
        1
        ,FactAvailability
        ,FactAvailability[month_within_cycle]
        ,0
    )
    ,FactAvailability[available_units]
)