2017-07-27 28 views
0

我有一个要求,我有2个表,表1 - DateTable和表2 - MyTable。PowerBI - 创建网络国际日作为措施

我想计算网络国际日与我们在Excel中做的相似。

注:我的2个表不连接,因为他们没有钥匙

DateTable在列假日假期。

MyTable在列中提交了我的日期SubmittedDate。

你会如何解决这个问题,并创建一个度量来计算网络国际日?

架构的要求:

MyTable 
Name RequestID SubmittedDate ExpectedResult 
XABI 209874 25/7/2017  3 

DateTable 
Holidays Day Reason 
28/7/2017 Friday blabla 
27/7/2017 Thursday blaalala 

ExpectedResult是我想计算一下 - 这是3,因为只有3个工作日是25/7,26/7,31/7(今天)。

28/7和27/7是公司假期,29/7和30/7是周末假期。

请分享您的想法。

+1

我们不知道你在excel中做什么。您应该发布您的架构,示例数据和预期结果。 – user5226582

+0

为什么不能在'SubmittedDate'和'DateTable'之间建立关系? – NickyvV

+0

DateTable只有一些日期,如果我建立一个关系,它会匹配什么基础?它会抛出很多空值。 – Sid29

回答

0

holidays表(在你的榜样DateTable):

date 
2017-01-02 

calendar表(介绍):(在你的例子MyTable

date 
2017-01-01 
2017-01-02 
2017-01-03 
2017-01-04 
2017-01-05 
2017-01-06 
2017-01-07 
... 

data表:

date 
2017-01-01 
2017-01-03 

加一个计算到calendar表列:

isworkingday = 
var isweekend = if(WEEKDAY(calendar[date])>5, 1, 0) 
var isholiday = if(CONTAINS(holidays, holidays[date], calendar[date]), 1, 0) 
return if(AND(isweekend=0, isholiday=0), 1, 0) 

计算列添加到data表:

workingDaysPassed = 
var curr = data[date] 
return calculate(sum(calendar[isworkingday]), 
    and(calendar[date]>=curr, 
     calendar[date]<=today()), 
    all(data)) 

workingDaysPassed应该是你ExpectedResult,只要你填充calendar表:

date,  isworkingday, workingDaysPassed 
2017-01-01, 1,   4 
2017-01-02, 0,   3 
2017-01-03, 1,   3 
2017-01-04, 1,   2 
2017-01-05, 1,   1 
2017-01-06, 0,   0 
2017-01-07, 0,   0 
+0

谢谢!有效。我现在理解了这个想法:) – Sid29

+0

非常欢迎。 – user5226582