Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssas 如果某个人的任何月份在单独维度中的值为“Y”,MDX将显示该个人的所有月份_Ssas_Mdx - Fatal编程技术网

Ssas 如果某个人的任何月份在单独维度中的值为“Y”,MDX将显示该个人的所有月份

Ssas 如果某个人的任何月份在单独维度中的值为“Y”,MDX将显示该个人的所有月份,ssas,mdx,Ssas,Mdx,如果你愿意的话,我想解决一个棘手的问题 措施:计费小时数 尺寸: 人员EmployeeId,EmployeeName GroupingEmployeePeriodKey,ActiveFlag 周期CalendarYear、CalendarQuarter、CalendarPeriod 分组维度具有特定于某个期间的人员的标志和计算器,因此PK是EmployeeId和CalendarPeriod的组合 数据如下: EmployeeId CalendarPeriod ActiveFlag Billabl

如果你愿意的话,我想解决一个棘手的问题

措施:计费小时数

尺寸:

人员EmployeeId,EmployeeName

GroupingEmployeePeriodKey,ActiveFlag

周期CalendarYear、CalendarQuarter、CalendarPeriod

分组维度具有特定于某个期间的人员的标志和计算器,因此PK是EmployeeId和CalendarPeriod的组合

数据如下:

EmployeeId CalendarPeriod ActiveFlag BillableHours

123 201501 Y 10

123 201502 Y 20

123 201503北30

123 201504 Y 40

人们正在按Active Flag=Y进行筛选,结果中缺少N行,这不是所需的。我设计的任何过滤器都需要足够灵活,以便在员工级别上,我需要知道员工是否在查询选择的期间内具有Y值

场景1:用户为时段201501:201504选择员工123,并将假设标志筛选为Y-计费小时数应为100,而不是70

场景2:用户为时段201501:201503选择员工123,并将假设标志筛选为Y-计费小时数应为60,而不是30

场景3:用户选择201503期间的员工123,并将假设标志筛选为Y-计费小时数应为0,而不是30。因为在此选定的时段组中,此人在任何时段都不活跃

我对所有的兄弟姐妹都不感兴趣,只对个人层面的兄弟姐妹感兴趣。如果未选择person,我需要它知道在筛选的时段内对person级别执行此检查。如果他们有以下情况

活动标志:Y

财政年度:2016年

团体计费小时数

IT咨询1000

人力资源咨询1500


可以理解的是,这些总金额代表2016财年任何部分的每位在职员工的小时数,无论是12个月还是1个月。如果某人在前一年处于活动状态,但在2016年不处于活动状态,则他们不应出现,因为我只想查询所选期间的标志。

是否希望在Y值为非空时查看Y值?否则N+Y值

IIF(
    [Measures].[BillableHours] > 0,
    ([Grouping].[ActiveFlag].[All],[Measures].[BillableHours]),
    [Measures].[BillableHours]
)

我需要完成的是评估特定员工的所有值,以查看该员工的任何值是否有效。做到这一点的关键在于使用现有的。此外,使用非空行为可以减少评估周期,因为如果行在一段时间内不活动,则无需评估行。我已经在下面发布了MDX

CREATE HIDDEN UtilizedFTESummator;    
[Measures].[UtilizedFTESummator] = Iif([Measures].[Is Active For Utilization Value] > 0,[Measures].[Period FTE],NULL);    
NON_EMPTY_BEHAVIOR([Measures].[UtilizedFTESummator]) = [Measures].[Is Active For Utilization Value];  

//only include this measure if the underlying employee has values in their underlying data for active in utilization
CREATE MEMBER CURRENTCUBE.[Measures].[FTE Active Utilization]
AS
SUM
    (   
    EXISTING [Historical Personnel].[Employee Id].[Employee Id], 
    [Measures].[UtilizedFTESummator]
    ),VISIBLE=0;    

感谢您的回复,但我需要完成的是对特定员工的所有值进行评估,以查看该员工的任何值是否有效。通过一些Mosha帖子和MSDN论坛上的帮助,我确实找到了我发布的答案。我做了+1你的答案,谢谢你的帮助!