4

我设计了一个简单的 Azure 数据仓库,我想在其中定期跟踪我的产品库存。此外,我希望能够查看按月、周、日和小时分组的数据,并能够从上到下向下钻取。我定义了 3 个维度:

DimDate
DimTime 
DimProduct

我还定义了一个事实表来跟踪产品库存:

FactStocks
- DateKey (20160510, 20160511, etc)
- TimeKey (0..23)
- ProductKey (Product1, Product2)
- StockValue (number, 1..9999)

我的事实样本数据如下:

20160510 20 Product1 100
20160510 20 Product2 30
20160510 21 Product1 110
20160510 21 Product2 35
20160510 22 Product1 112
20160510 22 Product2 28
20160510 23 Product1 120
20160510 23 Product2 31
20160511 00 Product1 150
20160511 00 Product2 29
20160511 01 Product1 95
20160511 01 Product2 40

我需要的是一张随时间变化的产品可用性图表,能够检查总数(其中 x 轴代表小时数),以及按特定产品过滤的能力:

Total - 130, 145, 140, 151, 179, 135
Product1 - 100, 110, 112, 120, 150, 95;
Product2 - 30, 35, 28, 31, 29, 40;

x-> 20,21,22,23,00,01

此外,我需要能够按天和产品钻取和浏览平均可用性(其中 x 轴代表通过DimDate表格可用的天、周、月、年):

Total - 141.5, 157
Product1 - 110.5, 122.5
Product2 - 31, 34.5

x-> 20160510, 20160511

似乎Power BI无法按日期进行分组,因为它正在尝试使用聚合函数来获取每日价值,并且无法指定将考虑产品的平均函数(按产品分组)。聚合功能在这里不起作用,Power BI 正在尝试对给定日期的所有产品的所有值求和并获得平均值(例如 20160511):

150+29+95+40 / 4 = 78.5

当我需要以下内容时:

(150+29) + (95+40) / 2 = 157

我只是想让它具有交互性,能够选择产品并轻松向上和向下钻取。请告知我应该如何修改我的仓库结构以支持我的方案。

4

3 回答 3

3

我认为你不需要改变你的结构。我将在您的 FactStocks 表上创建一个新度量(使用 Power BI Desktop),以使用 DAX 函数根据您的需要计算可用性。

我猜测了一下,因为除了 1 个示例之外,您还没有真正阐明您的要求,但它可能看起来像这样:

Availability = SUM([StockValue])/DISTINCTCOUNT([ProductKey])

这是有关 PBI Desktop 中度量的完整教程:

https://powerbi.microsoft.com/en-us/documentation/powerbi-desktop-tutorial-create-measures/

于 2016-05-11T23:44:56.167 回答
1

我认为这里的问题是您的衡量标准实际上非常复杂-您要做的是在每天内求和,然后在多天内取平均值。要做到这一点,您需要亲身体验 DAX。

我是在没有编辑器或数据的情况下编写的,所以如果我遇到一些语法错误或混淆了我的参数顺序,请原谅我:

DailyAverage:=CALCULATE(SUMMARIZE('FactStocks', [DateKey], 'DailySum', Sum([StockValue])), AVG([DailySum]))

原则是SUMMARIZE(基本上GROUP BY在 SQL 中)您的表,按 分组DateKey,总结每个组中的值,然后平均结果(现在平均每天一行而不是源表中的每行)。

于 2016-05-31T00:59:34.423 回答
0

您是否可以使用数据库视图来进行计算和聚合?

于 2016-05-29T20:26:24.960 回答