好的,就在这里。
我有一个事实表(Fact_Sales)。有时,某些销售标记为特殊(整个发票,而不仅仅是发票行)。因此,特定发票的每个发票行的字段IsSpecial为TRUE。
这是一个TRUE / FALSE标志(所以我想在我的事实表中使用Bit)。
以下是数据示例: (忘了样本,我不能发表一张桌子,也不能用HTML表格,也不能将文本格式化为带空格的表格)......想象一下......
现在,我的SSAS2005多维数据集很好并且运行良好。
第一次尝试:将InvoiceID或NULL放在FLAG字段中,DISTINCT COUNT it
在我的第一次尝试中,我将InvoiceID或NULL放在IsSpecial字段中(这不是一个字节),然后通过将我的度量添加到新度量值组来直接执行DISTINCT COUNT(这里没有MDX)。但是,SSAS并不那么明亮,并将NULL视为出现。所以我总是将'1'视为最小值(发现很多“NULL”出现,因此计数为1)。我尝试将基本测量源修改为Preserve Null或ZeroOrBlank,但它仍然会向我显示值“1”(除非有真正的IsSpecial)..
第二次尝试:创建一个将DISTINCT计算IsSpecial'度量'的MDX查询
我在这里读到:http://ask.sqlservercentral.com/questions/50286/calculated-member-to-get-distinct-count-on-a-condi.html。 我的问题是,没有比较的维度。我的意思是,我会指望什么?
第三次尝试:创建维度。 没有。注意我想去的路。我的客户不想将他们的每个措施分成2个成员:特殊发票和普通发票。他们只想要一个名为“Nb of Special Invoice”的新措施。
正如您可能已经注意到的那样,我的SSAS功能并不是那么好,因为我从未接触过3-4年以来,我的客户希望我这样做......
感谢
答案 0 :(得分:1)
为什么不想在维度中创建属性?这将是要走的路:无需在计算脚本中编写任何内容,快速访问,便于用户使用。
您的SPECIAL标志不是衡量标准:它不是带有意义的汇总的数字,如sum;这是一种分类,我。即它应该被放入一个具有e等成员值的属性中。 G。 “特别”和“标准”。
即使将用户界面实施为度量“发票的Nb”,最好的方法是使用属性,比如说[Dim1].[SpecialFlag]
,然后使用以下方法实施度量“发票的Nb”作为计算度量元组表达
([Measures].[Nb of Invoices], [Dim1].[SpecialFlag].[Special])