将图表从类别动态更改为子类别

Dynamicaly change chart from category to subcategory

我有一个分层矩阵,其中有相应的图表 table:

let
    t0 = Table.FromRows(
        {
            {"2020-01-01", "1", "10", 10},
            {"2020-01-02", "1", "10", 3},
            {"2020-01-01", "1", "11", 8},
            {"2020-01-02", "1", "11", 15},
            {"2020-01-01", "2", "20", 5},
            {"2020-01-02", "2", "20", 9},
            {"2020-01-01", "2", "21", 13},
            {"2020-01-02", "2", "21", 12}
        },
        {"day", "cat", "subcat", "amount"}
    ),
    t1 = Table.TransformColumnTypes(t0, {{"amount", Int64.Type}})
in
    t1

通过选择类别作为图例,我可以让页面开始显示每个类别的线条的图表,这正是我想要的

现在我希望当我单击矩阵中的类别线时,图表会动态显示该类别的子类别线。是否有可能或是否有另一种方法导致相同的结果?

我不确定是否可以像这样在视觉对象中进行向下钻取,但如果您从切片器或其他视觉对象进行过滤,就可以使它起作用。

首先,创建一个新的独立 table 以在同时具有 catsubcat 的 x 轴上使用:

CatSubcat = UNION ( VALUES ( t1[cat] ), VALUES ( t1[subcat] ) )

然后我们需要一个相应的措施来配合它,在catsubcat之间切换:

Measure = 
IF (
    HASONEVALUE ( t1[cat] ),
    CALCULATE ( SUM ( t1[amount] ), t1[subcat] IN VALUES ( CatSubcat[cat] ) ),
    CALCULATE ( SUM ( t1[amount] ), t1[cat]    IN VALUES ( CatSubcat[cat] ) )
)

如果没有过滤,它应该是这样的:

如果您使用左侧的矩阵进行过滤(或通过 t1[cat] 上的切片器),您会得到:


对于超过两个级别,此 可能有用。