达克斯。小计和总计的问题
DAX. Problem with subtotals and grand totals
希望你做得很好,可以帮助解决 DAX for PowerBI 和 PowerPivot 中的这个难题。
我在计算小计和总计时遇到问题。我的场景如下:
我有 3 个 table(我在下面分享了一个 link 和一个测试文件,这样你就可以看到它并在那里工作 :robothappy:):
1) "Data"(每个收银机都是巴士公司售出的车票);
2) "Km"(我有公共汽车在各自公里内可以做的所有可能的轨道)。与"Data";
相关
3) 和一个 "Calendar"。与 "Data".
有关
在"Data"中,我有一段时间内售出的所有机票及其价格、乘客购买的轨道以及该轨道的出发时间。
每个轨道可以有超过 1 个出发时间(我们可以称之为服务)但只有特定的公里长度(它们的公里数在 "Km" table 中指定)。
基本上我需要的是计算一段时间内(年、月、日)每项服务每公里的收入。
计算基本上应该是:
[价格]的总和(该期间售出的每张票)/[公里]的总和(该期间考虑服务及其各自的公里数)
我设法用以下逻辑和措施计算了一天的粒度:
Revenue = SUM(Data[Price])
Unique dates = DISTINCTCOUNT(Data[Date])
Revenue/Km = DIVIDE([Revenue]; SUM(Km[Km])*[Unique dates]; 0)
我创建了 [Unique dates] 来计算它,因为我试图管理轨道粒度的小计,同时考虑到您在此期间可以有超过 1 天的服务时间。例如:
"Track 1" 我们注册了:
周一 (lunes) 在 5:00am 有 1 次服务。
Revenue = .140.
Km = 115.
Tickets = 6.
Revenue/Km = 1.140/115 = 9,91.
星期二 (martes) 在 5:00am 有 1 次服务。
Revenue = .
Km = 115.
Tickets = 2.
Revenue/Km = 67/115 = 0,58.
"Subtotal Track 1" 应该是:
Revenue = 1.140 + 67 = 1.207.
Km = 115 + 115 = 230.
Tickets = 6 + 2 = 8.
Revenue/Km = 1.207/230 = 5,25.
所以在那种情况下,有人会认为我的公式有效,但是当我每天有超过 1 次服务时,例如第 3 轨道,你会看到这个问题。而且这种影响对 3 月的总计(马佐)。
我明白了,问题是计算每个时期每个轨道的正确公里数。如果查"Sum[Km]"栏也是错的
这是一个 table(excel 要下载的文件 - 选项卡 "Goal"),其中包含应显示的值:
[目标] https://drive.google.com/file/d/1PMrc-IUnTz0354Ko6q3ZvkxEcnns1RFM/view?usp=sharing
[pbix 样本文件]https://drive.google.com/file/d/14NBM9a_Frib55fvL-2ybVMhxGXN5Vkf-/view?usp=sharing
希望你能理解我的问题。如果您需要更多详细信息,请告诉我。
非常感谢您!!!
安迪.-
删除 "Sum of Km" - 您应该始终改为编写 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])
结果:
该度量在小计和总计级别上都正确计算了公里数。
它的工作方式:
首先,我们使用 SUMMARIZE 按行程对记录进行分组(其中行程是行程、日期和时间的唯一组合)。然后,我们在摘要中添加一列,其中包含每次行程的公里数。最后,我们使用 SUMX 逐个记录地迭代摘要记录,并对行程距离进行求和。
该解决方案应该可行,但我建议对数据模型设计给予更多思考。你需要构建更好的星型模式,否则 DAX 将继续面临挑战。例如,我会考虑向每条记录添加类似 "Trip Id" 的内容 - 迭代此类 id 而不是一直对记录进行分组会容易得多。此外,更具描述性的名称有助于使 DAX 变得干净(像 km[km] 这样的名称看起来有点奇怪:)
希望你做得很好,可以帮助解决 DAX for PowerBI 和 PowerPivot 中的这个难题。
我在计算小计和总计时遇到问题。我的场景如下:
我有 3 个 table(我在下面分享了一个 link 和一个测试文件,这样你就可以看到它并在那里工作 :robothappy:):
1) "Data"(每个收银机都是巴士公司售出的车票);
2) "Km"(我有公共汽车在各自公里内可以做的所有可能的轨道)。与"Data";
相关3) 和一个 "Calendar"。与 "Data".
有关在"Data"中,我有一段时间内售出的所有机票及其价格、乘客购买的轨道以及该轨道的出发时间。
每个轨道可以有超过 1 个出发时间(我们可以称之为服务)但只有特定的公里长度(它们的公里数在 "Km" table 中指定)。
基本上我需要的是计算一段时间内(年、月、日)每项服务每公里的收入。
计算基本上应该是:
[价格]的总和(该期间售出的每张票)/[公里]的总和(该期间考虑服务及其各自的公里数)
我设法用以下逻辑和措施计算了一天的粒度:
Revenue = SUM(Data[Price])
Unique dates = DISTINCTCOUNT(Data[Date])
Revenue/Km = DIVIDE([Revenue]; SUM(Km[Km])*[Unique dates]; 0)
我创建了 [Unique dates] 来计算它,因为我试图管理轨道粒度的小计,同时考虑到您在此期间可以有超过 1 天的服务时间。例如:
"Track 1" 我们注册了:
周一 (lunes) 在 5:00am 有 1 次服务。
Revenue = .140.
Km = 115.
Tickets = 6.
Revenue/Km = 1.140/115 = 9,91.
星期二 (martes) 在 5:00am 有 1 次服务。
Revenue = .
Km = 115.
Tickets = 2.
Revenue/Km = 67/115 = 0,58.
"Subtotal Track 1" 应该是:
Revenue = 1.140 + 67 = 1.207.
Km = 115 + 115 = 230.
Tickets = 6 + 2 = 8.
Revenue/Km = 1.207/230 = 5,25.
所以在那种情况下,有人会认为我的公式有效,但是当我每天有超过 1 次服务时,例如第 3 轨道,你会看到这个问题。而且这种影响对 3 月的总计(马佐)。
我明白了,问题是计算每个时期每个轨道的正确公里数。如果查"Sum[Km]"栏也是错的
这是一个 table(excel 要下载的文件 - 选项卡 "Goal"),其中包含应显示的值:
[目标] https://drive.google.com/file/d/1PMrc-IUnTz0354Ko6q3ZvkxEcnns1RFM/view?usp=sharing
[pbix 样本文件]https://drive.google.com/file/d/14NBM9a_Frib55fvL-2ybVMhxGXN5Vkf-/view?usp=sharing
希望你能理解我的问题。如果您需要更多详细信息,请告诉我。
非常感谢您!!!
安迪.-
删除 "Sum of Km" - 您应该始终改为编写 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])
结果:
该度量在小计和总计级别上都正确计算了公里数。 它的工作方式:
首先,我们使用 SUMMARIZE 按行程对记录进行分组(其中行程是行程、日期和时间的唯一组合)。然后,我们在摘要中添加一列,其中包含每次行程的公里数。最后,我们使用 SUMX 逐个记录地迭代摘要记录,并对行程距离进行求和。
该解决方案应该可行,但我建议对数据模型设计给予更多思考。你需要构建更好的星型模式,否则 DAX 将继续面临挑战。例如,我会考虑向每条记录添加类似 "Trip Id" 的内容 - 迭代此类 id 而不是一直对记录进行分组会容易得多。此外,更具描述性的名称有助于使 DAX 变得干净(像 km[km] 这样的名称看起来有点奇怪:)