0

好的,到此为止。

我有一个事实表 (Fact_Sales)。有时,某些销售被标记为 SPECIAL(整个发票,而不仅仅是发票行)。所以字段 IsSpecial 是 TRUE 特定发票的每个发票行。

这是一个 TRUE/FALSE 标志(所以我想在我的事实表中使用一个位)。

这是一个数据示例:( 忘记示例,我不能发布表格,也不能发布 HTML 表格,也不能将文本格式化为带空格的表格)......想象一下......

现在,我的 SSAS2005 多维数据集很好并且运行良好。

第一次尝试:将 InvoiceID 或 NULL 放在 FLAG 字段中,并 DISTINCT COUNT 它

在我的第一次尝试中,我将 InvoiceID 或 NULL 放入 IsSpecial 字段(这不是一个字节),然后直接通过将我的度量添加到新的度量组来执行 DISTINCT COUNT(因此这里没有 MDX)。但是,SSAS 并没有那么亮,将 NULL 算作一次出现。所以我总是将“1”视为最小值(发现很多“NULL”出现,因此计数为 1)。我尝试将基本度量源修改为 Preserve Null 或 ZeroOrBlank,但它仍然会在任何地方显示值“1”(除非真的有 IsSpecial)。

第二次尝试:创建一个 MDX 查询,它将对 IsSpecial 'measure' 进行 DISTINCT 计数

我在这里读到:http: //ask.sqlservercentral.com/questions/50286/calculated-member-to-get-distinct-count-on-a-condi.html。我的问题是没有可比较的维度。我的意思是,我会指望什么?

第三次尝试:创建维度。 不。记下我想走的路。我的客户不想将他们的每一项措施分成 2 个成员:特殊发票和普通发票。他们只想要 1 个新度量,名为“特殊发票的 Nb”。

您可能已经注意到,我的 SSAS 能力不是那么好,因为我 3-4 年没有接触过,我的客户希望我这样做......

谢谢

4

1 回答 1

1

为什么不想在维度中创建属性?那将是要走的路:无需在计算脚本中编写任何内容,快速访问,易于用户使用。

您的 SPECIAL 标志不是度量:它不是具有像 sum 这样有意义的聚合的数字;它是一种分类,即应该将其放入具有成员值的属性中,例如“特殊”和“标准”。

即使要将用户界面实现为度量“Nb of Invoices”,最好的方法是使用属性,例如[Dim1].[SpecialFlag],然后使用元组表达式将度量“Nb of Invoices”实现为计算度量

([Measures].[Nb of Invoices], [Dim1].[SpecialFlag].[Special])
于 2013-10-24T21:50:21.693 回答