DAX - 创建动态索引列

时间:2016-07-26 20:43:59

标签: sql excel ssas powerpivot dax

我正在尝试使用DAX在SSAS表格模型中创建计算列。我想要一个表上的动态索引列。表示在过滤表时索引从0开始。想象一下,你有一个像这样的表:

item      index
apple     0
banana    1
celery    2
broccoli  3

如果我通常将表过滤到蔬菜,那么索引仍然是:

item      index
celery    2
broccoli  3

但我希望它是

item      index
celery    0
broccoli  1

到目前为止,我使用以下方法创建索引:(我正在索引日期维度表)

=CALCULATE(COUNT([Date])-1, ALL('DimDate'), FILTER(DimDate, [Date]<=EARLIER([Date])))

我尝试过使用ALLEXCEPT(),我尝试通过FIRSTNONBLANK获取索引的第一个值来创建一个Offset列,但还没有成功。

任何想法或帮助?

1 个答案:

答案 0 :(得分:0)

您不能拥有动态计算列,因为计算列在设计时被评估和存储。因此,您必须使用度量来进行动态索引。下面是一种方法,使用ALLSELECTED和额外的解析来将空白显示为零。

=
IF (
    ISBLANK (
        CALCULATE (
            COUNTROWS ( DimDate ),
            FILTER ( ALLSELECTED ( DimDate ), DimDate[Date] < MAX ( DimDate[Date] ) )
        )
    ),
    0,
    CALCULATE (
        COUNTROWS ( DimDate ),
        FILTER ( ALLSELECTED ( DimDate ), DimDate[Date] < MAX ( DimDate[Date] ) )
    )
)