BI技巧丨矩阵高亮

BOSS:白茶,问你个事,PowerBI里面能不能让我选择哪个条件,对应的数据就在表格里面高亮显示啊?
白茶:(黑人问号?奇奇怪怪的需求)老板,PowerBI默认会进行突出显示的。
BOSS:你说的那个我知道,不是我要的那种,我要的就是某个Excel里面那种行列交叉高亮,知道不?白茶:哦~~了解,安排!

本期的需求,就是上面的内容,就像白茶说的那样,本身PowerBI是自带突出显示和交叉筛选的。但是往往我们接触的用户群体,还处于从Excel到BI的过渡期,习惯了Excel里面背景高亮的操作,那么在PowerBI中如何满足这个中国式报表需求呢?

先来看看本期的案例数据:


数据比较简单,共计三张表,一张产品表,一张分店信息表,一张销售事实表。

将其导入到PowerBI中,产品表和分店信息表分别导入两次,模型关系如下:

简单的拖个矩阵出来,效果如下:

编写如下基础指标:

001.基础色 = 
"#e6b422"

白茶在这里选择将基础色单独写一个度量值,这样后续我们在调整颜色的时候,只需要更改这一个度量值即可。

002.透明度 = 
"50"

这里面,白茶单独写了一个透明度指标,其实颜色的代码搭配透明度,是可以改变颜色显示的透明度的。

003.单元格配色 = 
VAR GroupFilter =
    ISFILTERED ( Dim_ProductFilter[ProductGroup] )
VAR StoreFilter =
    ISFILTERED ( Dim_StoreFilter[StoreName] )
VAR GroupFilterList =
    VALUES ( Dim_ProductFilter[ProductGroup] )
VAR StoreFilterList =
    VALUES ( Dim_StoreFilter[StoreName] )
VAR SelectGroup =
    SELECTEDVALUE ( 'Dim_Product'[ProductGroup] )
VAR SelectStore =
    SELECTEDVALUE ( Dim_Store[StoreName] )
RETURN
    IF (
        AND ( GroupFilter, StoreFilter ),
        IF (
            AND ( SelectGroup IN GroupFilterList, SelectStore IN StoreFilterList ),
            [001.基础色]
        )
    )

编写如上代码,从代码逻辑上我们不难看出,其实配色的核心点有两个,一个是模型中多出来的产品表和分店表,这样可以绕过原有模型关系中的直接筛选;还有一个是判断维度是否被筛选。
将上述度量值,放到矩阵条件格式的背景设置中,我们来看一下效果:

从上面的效果,我们不难看出,其实对比Excel里面的高亮提示,我们这里的效果还是差一点的。在Excel中的效果是被选中的列,会有颜色提示,且行列交叉的地方颜色会加深。编辑如下代码:

004.交叉配色 = 
VAR GroupFilter =
    ISFILTERED ( Dim_ProductFilter[ProductGroup] )
VAR StoreFilter =
    ISFILTERED ( Dim_StoreFilter[StoreName] )
VAR GroupFilterList =
    VALUES ( Dim_ProductFilter[ProductGroup] )
VAR StoreFilterList =
    VALUES ( Dim_StoreFilter[StoreName] )
VAR SelectGroup =
    SELECTEDVALUE ( 'Dim_Product'[ProductGroup] )
VAR SelectStore =
    SELECTEDVALUE ( Dim_Store[StoreName] )
RETURN
    IF (
        OR (
            AND ( GroupFilter, SelectGroup IN GroupFilterList ),
            AND ( StoreFilter, SelectStore IN StoreFilterList )
        ),
        IF (
            AND (
                AND ( GroupFilter, SelectGroup IN GroupFilterList ),
                AND ( StoreFilter, SelectStore IN StoreFilterList )
            ),
            [001.基础色],
            [001.基础色] & [002.透明度]
        )
    )

我们可以看到,之前的透明度,在这段代码中是有使用。我们将页面进行简单的美化,最终展示的效果如下:

在这里插入图片描述

这里是白茶,一个PowerBI的初学者。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
PyTorch是一个开源的深度学习框架,它提供了丰富的工具和库来构建和训练神经网络模型。BiLSTM(双向长短时记忆网络)是一种常用的循环神经网络模型,它在处理序列数据时能够捕捉到前后上下文的信息。 混淆矩阵(Confusion Matrix)是一种用于评估分类模型性能的工具。它以表格的形式展示了模型预测结果与真实标签之间的对应关系,可以帮助我们了解模型在不同类别上的分类情况。 在PyTorch中使用BiLSTM模型进行分类任务,并生成混淆矩阵的步骤如下: 1. 导入所需的库和模块: ```python import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader ``` 2. 定义BiLSTM模型: ```python class BiLSTM(nn.Module): def __init__(self, input_size, hidden_size, num_classes): super(BiLSTM, self).__init__() self.hidden_size = hidden_size self.lstm = nn.LSTM(input_size, hidden_size, bidirectional=True) self.fc = nn.Linear(hidden_size * 2, num_classes) def forward(self, x): h0 = torch.zeros(2, x.size(0), self.hidden_size).to(x.device) c0 = torch.zeros(2, x.size(0), self.hidden_size).to(x.device) out, _ = self.lstm(x, (h0, c0)) out = self.fc(out[:, -1, :]) return out ``` 3. 加载数据集和定义数据加载器: ```python # 假设已经准备好了训练集和测试集的数据 train_dataset = ... test_dataset = ... batch_size = 32 train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True) test_loader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False) ``` 4. 定义训练和评估函数: ```python def train(model, train_loader, criterion, optimizer): model.train() for inputs, labels in train_loader: optimizer.zero_grad() outputs = model(inputs) loss = criterion(outputs, labels) loss.backward() optimizer.step() def evaluate(model, test_loader): model.eval() with torch.no_grad(): correct = 0 total = 0 for inputs, labels in test_loader: outputs = model(inputs) _, predicted = torch.max(outputs.data, 1) total += labels.size(0) correct += (predicted == labels).sum().item() accuracy = correct / total return accuracy ``` 5. 训练模型并生成混淆矩阵: ```python # 初始化模型、损失函数和优化器 input_size = ... hidden_size = ... num_classes = ... model = BiLSTM(input_size, hidden_size, num_classes) criterion = nn.CrossEntropyLoss() optimizer = optim.Adam(model.parameters(), lr=0.001) # 训练模型 num_epochs = 10 for epoch in range(num_epochs): train(model, train_loader, criterion, optimizer) # 评估模型并生成混淆矩阵 from sklearn.metrics import confusion_matrix true_labels = [] predicted_labels = [] with torch.no_grad(): for inputs, labels in test_loader: outputs = model(inputs) _, predicted = torch.max(outputs.data, 1) true_labels.extend(labels.tolist()) predicted_labels.extend(predicted.tolist()) confusion_mat = confusion_matrix(true_labels, predicted_labels) print(confusion_mat) ``` 以上是使用PyTorch实现BiLSTM模型并生成混淆矩阵的基本步骤。你可以根据自己的数据和任务进行相应的调整和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fabric丨白茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值