首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure Data Warehouse支持的Power BI中基于时间的深入分析

Azure Data Warehouse支持的Power BI中基于时间的深入分析
EN

Stack Overflow用户
提问于 2016-05-12 07:06:30
回答 3查看 1.1K关注 0票数 4

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

代码语言:javascript
复制
DimDate
DimTime 
DimProduct

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

代码语言:javascript
复制
FactStocks
- DateKey (20160510, 20160511, etc)
- TimeKey (0..23)
- ProductKey (Product1, Product2)
- StockValue (number, 1..9999)

我的事实样本数据如下:

代码语言:javascript
复制
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轴代表小时),以及按特定产品过滤的能力:

代码语言:javascript
复制
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表):

代码语言:javascript
复制
Total - 141.5, 157
Product1 - 110.5, 122.5
Product2 - 31, 34.5

x-> 20160510, 20160511

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

代码语言:javascript
复制
150+29+95+40 / 4 = 78.5

当我需要以下内容时:

代码语言:javascript
复制
(150+29) + (95+40) / 2 = 157

我只是想让它与选择产品和轻松向上和向下钻取的能力交互。请建议我应该如何修改我的仓库结构以支持我的方案。

EN

回答 3

Stack Overflow用户

发布于 2016-05-12 07:44:56

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

我猜有一点,因为除了1个例子之外,你还没有真正拼写出你的需求,但它可能看起来像这样:

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

以下是关于PBI Desktop中的度量的完整教程:

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

票数 3
EN

Stack Overflow用户

发布于 2016-05-31 08:59:34

我认为这里的问题是你的测量实际上是非常复杂的-你试图做的是每天的总和,然后是多天的平均值。要实现这一点,您需要亲手使用DAX。

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

代码语言:javascript
复制
DailyAverage:=CALCULATE(SUMMARIZE('FactStocks', [DateKey], 'DailySum', Sum([StockValue])), AVG([DailySum]))

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

票数 1
EN

Stack Overflow用户

发布于 2016-05-30 04:26:25

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37174696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档