DAX。小计和总计的问题

时间:2019-05-10 13:12:31

标签: excel powerbi dax powerpivot

希望您做得不错,并且可以帮助DAX for PowerBI和PowerPivot解决这个难题。

在小计和总计中,我的度量出现问题。我的场景如下:

我有3个表(我在下面与一个测试文件共享一个链接,因此您可以查看它并在其中工作:robothappy:)

1)“数据”(其中每个寄存器都是公交公司出售的车票);

2)“ Km”(在这里我可以找到公共汽车可以行驶各自公里的所有可能轨迹)。与“数据”相关;

3)和“日历”。与“数据”相关。

在“数据”中,我具有一段时间内售出的所有机票,包括其价格,乘客购买的轨道以及该轨道的出发时间。

每条轨道的出发时间可以超过1个(我们可以将其称为服务),但只有一个特定的长度(以公里为单位)(其公里数在“公里”表中指定)。

基本上,我需要计算一个时段(年,月,日)中每项服务的每公里收入。

计算应该基本上是:

[价格]的总和(该期间售出的每张机票)/ [Km]的总和(该期间考虑服务的公里数)

我设法通过以下逻辑和度量来针对天粒度进行计算:

Revenue = SUM(Data[Price])

Unique dates = DISTINCTCOUNT(Data[Date])

Revenue/Km = DIVIDE([Revenue]; SUM(Km[Km])*[Unique dates]; 0)

我创建了[唯一日期]来进行计算,因为我尝试管理跟踪粒度的小计,同时考虑到您可以在此期间提供超过1天的服务。例如:

对于“ Track 1”,我们已经注册:

星期一(农历)凌晨5:00进行1次服务。

Revenue = $1.140. 
Km = 115. 
Tickets = 6. 
Revenue/Km = 1.140/115 = 9,91.

周二(商场)上午5:00有1条服务。

Revenue = $67. 
Km = 115. 
Tickets = 2. 
Revenue/Km = 67/115 = 0,58.

“小计音轨1”应为:

Revenue = 1.140 + 67 = 1.207.
Km = 115 + 115 = 230.
Tickets = 6 + 2 = 8.
Revenue/Km = 1.207/230 = 5,25.

因此,在那种情况下,有人可以认为我的公式起作用了,但是当我每天有1次以上的服务时,例如在Track 3中,您会看到它的问题。这也影响了行军的总数(marzo)

我知道问题是要计算每个时期每个轨道的正确公里数。如果您检查“ Sum [Km]”列也是错误的。

这是一张表格(要下载的Excel文件-“目标”标签),其中包含应显示的值:

[目标] https://drive.google.com/file/d/1PMrc-IUnTz0354Ko6q3ZvkxEcnns1RFM/view?usp=sharing

[pbix示例文件] https://drive.google.com/file/d/14NBM9a_Frib55fvL-2ybVMhxGXN5Vkf-/view?usp=sharing

希望您能理解我的问题。如果您需要更多详细信息,请告诉我。

非常感谢您!

安迪。-

1 个答案:

答案 0 :(得分:1)

删除“总和”-您应该始终编写DAX度量值。

为行驶的公里数创建新的度量标准:

Total Km =
SUMX (
    SUMMARIZE (
        Data,
        Data[Track],
        Data[Date],
        Data[Time],
        "Total_km", DISTINCT ( Data[Kilometers Column] )
    ),
    [Total_km]
)

然后,更改[Revenue / Km]度量:

Revenue/Km = DIVIDE([Revenue], [Total Km])

结果:

enter image description here

该度量可以正确计算小计和总计级别上的km。 工作方式:

首先,我们使用SUMMARIZE将旅行记录分组(其中旅行是轨道,日期和时间的唯一组合)。然后,我们在摘要中添加一列,其中包含每次行程的公里数。最后,我们使用SUMX逐条记录汇总记录,并汇总行程距离。

该解决方案应该有效,尽管我建议您对数据模型设计多加考虑。您需要构建更好的星型架构,否则DAX将继续具有挑战性。例如,我会考虑向每条记录添加类似“旅行ID”的内容-遍历此类ID而不是一直对记录进行分组将更加容易。另外,更具描述性的名称可以帮助使DAX整洁(km [km]之类的名称看起来有些奇怪:)

相关问题