PowerBI 根据条件选择获得不同的表格 因为IF和SWITCH只能返回标量而不能返回表格 Power BI

PowerBI 根据条件选择返回不同的表格 因为IF和SWITCH只能返回标量而不能返回表格 Power BI
自定义日期筛选套件

根据条件得到不同的表格

背景

在设置自定义对比日期时,需要根据选择的内容返回不同的表格作为CALCULATE的表格参数进行计算。Power BI-自定义范围

图1:Power BI-自定义范围的日期套件组件

在Power BI 设置了如上的对比日期组件套件。以上的日期组件中,在点击了自定义范围,并输入跨越天数,左边的会根据选择的开始时间和结束时间进行对比期和基准期的设置。

如上图所示,截图选择了开始时间和结束时间分别为:2023/11/12~2024/3/12时,会根据右边的对比方式进行对比期的调整。这次选择的是自定义范围,跨越天数30天,则
对比期为:2023/11/12~2023/12/12
基准期为:2024/03/12~2024/04/11
度量的对比值和基准值需要按照以上对应日期进行计算。结果如下图所示。

Power BI-自定义范围的度量

图2:Power BI-自定义范围的度量

为了实现该功能,需要先检测图1的套件组件的选择,并根据选择返回对应的日期表格作为度量计算的条件。

代码实现

1、IFSWITCH的伪实现

注:以下1.1和1.2两段代码均会报错,因为IF和SWITCH只允许返回标量而不允许返回表格。

1.1 IF
IF(UnitSec = "日", FILTER(ALL('日期表'), '日期表'[DateKey] = BaseDate),IF(UnitSec = "年", FILTER(ALL('日期表'), '日期表'[Year] = BaseYear),IF(UnitSec = "季", FILTER(ALL('日期表'), '日期表'[Year] = BaseYear && '日期表'[Quarter] = BaseQuarter),IF(UnitSec = "月", FILTER(ALL('日期表'), '日期表'[Year] = BaseYear && '日期表'[Month] = BaseMonth),IF(UnitSec = "周", FILTER(ALL('日期表'), '日期表'[Year] = BaseYear && '日期表'[Week] = BaseWeek), BLANK()))))
)
1.2 SWITCH
SWITCH (TRUE (),UnitSec = "日", FILTER (ALL('日期表'), '日期表'[DateKey] = BaseDate ),UnitSec = "年", FILTER (ALL('日期表'), '日期表'[Year] = BaseYear ),UnitSec = "季", FILTER (ALL('日期表'), '日期表'[Year] = BaseYear && '日期表'[Quarter] = BaseQuarter ),UnitSec = "月", FILTER (ALL('日期表'), '日期表'[Year] = BaseYear && '日期表'[Month] = BaseMonth ),UnitSec = "周", FILTER (ALL('日期表'), '日期表'[Year] = BaseYear && '日期表'[Week] = BaseWeek ))

2.真实实现 UNION+ADDCOLUMNS

基本思路:通过对各自的日期表格进行标记拼接,而后返回过滤值进行筛选拼接的表格即可

VAR UnionTable =
UNION(ADDCOLUMNS(SELECTCOLUMNS(FILTER(ALL('日期表'), '日期表'[Year] = BaseYear),"DateKey",[DateKey]), "FILTERNUM", "年"), ADDCOLUMNS(SELECTCOLUMNS(FILTER(ALL('日期表'), '日期表'[Year] = BaseYear && '日期表'[Quarter] = BaseQuarter),"DateKey",[DateKey]), "FILTERNUM", "季"), ADDCOLUMNS(SELECTCOLUMNS(FILTER(ALL('日期表'), '日期表'[Year] = BaseYear && '日期表'[Month] = BaseMonth),"DateKey",[DateKey]), "FILTERNUM", "月"), ADDCOLUMNS(SELECTCOLUMNS(FILTER(ALL('日期表'), '日期表'[Year] = BaseYear && '日期表'[Week] = BaseWeek),"DateKey",[DateKey]), "FILTERNUM", "周"), ADDCOLUMNS(SELECTCOLUMNS(FILTER(ALL('日期表'),'日期表'[DateKey] = BaseDate),"DateKey",[DateKey]), "FILTERNUM", "日")
)RETURNSELECTCOLUMNS(FILTER(UnionTable,[FILTERNUM]=UnitSec),"DateKey",[DateKey])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/58364.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年10款好用的图纸加密软件推荐|企业CAD图纸加密指南!

在当今数字化时代,企业的 CAD 图纸等重要设计文件面临着日益严峻的安全风险。为了保护企业的核心知识产权和商业机密,选择一款可靠的图纸加密软件至关重要。下面为大家推荐 2024 年 10 款好用的图纸加密软件,为企业提供 CAD 图纸加密指南。 一…

设计资讯 | 塑造数字交互未来的 Sol Reader

虚拟现实 (VR) 在过去几年中不断创新和发展。它真正突破了沉浸式体验的极限。VR 技术目前正在提高视觉保真度,甚至融入其他感官,从而彻底改变我们与数字世界的互动方式。 来看看世界上第一款 VR 电子书阅读器——Sol Reader。它为狂热的读者提供了一种独…

Linux下MySQL8.x的编译安装与使用

Linux下MySQL的安装与配置 1. 安装环境初始化 1.1 查看是否安装过MySQL 如果使用rpm安装, 检查一下RPM PACKAGE rpm -qa | grep -i mysql # -i 忽略大小写 # 或者 yum list installed | grep mysql如果存在mysql-libs的旧版本包,显示如下 #存在 [rootlocalhost ~]…

一文解决单调栈的应用

单调栈的定义: 单调栈是栈的一中特殊形式,在栈中的元素必须满足单调性(一定是单调上升或单调下降等等的规律)。 单调栈的性质: 单调栈解决的问题 单调栈解决的常见问题:给定一个序列,求每个位置…

.NET 8 中的 Mini WebApi

介绍 .NET 8 中的极简 API 隆重登场,重新定义了我们构建 Web 服务的方式。如果您想知道极简 API 的工作原理以及它们如何简化您的开发流程,让我们通过一些引人入胜的示例来深入了解一下。 .NET 极简主义的诞生 想想我们曾经不得不为一个简单的 Web 服务…

Linux——常见指令及其权限理解(正在更新中)

1.指令 1.1 快速了解指令 pwd 首次登录,默认所处的路径 whoami 当前所用的用户的名称 ls 显示当前路径下,文件名称 mkdir 在当前目录下,创建一个文件夹/目录 cd 进入一个目录 touch 新建一个文…

esp32 GPIO 分别用5种中断类型控制LED

下面程序分别用ANYEDGE POSEDGE NEGEDGE HIGH_LEVEL LOW_LEVEL 中断类型控制GPIO 0 脚的电平。此程序的重点是用延时消除按键产生的无用中断信号 硬件 1. led 接0脚和地 2. 按钮接gpio 1脚 和地或3.3v 脚 图片 程序 #include "driver/gpio.h" #incl…

ansible开局配置-openEuler

ansible干啥用的就不多介绍了,这篇文章主要在说ansible的安装、开局配置、免密登录。 ansible安装 查看系统版本 cat /etc/openEuler-latest输出内容如下: openeulerversionopenEuler-24.03-LTS compiletime2024-05-27-21-31-28 gccversion12.3.1-30.…

金蝶云星空采购退料单集成易仓出库单实现高效数据对接

金蝶云星空采购退料单集成易仓出库单实现高效数据对接 Done-金蝶-采购退料单——>易仓-出库单:高效数据集成方案解析 在企业的日常运营中,数据的准确传递和实时处理至关重要。本文将聚焦于一个具体的系统对接集成案例:如何将金蝶云星空中…

基于Ubuntu24.04,下载并编译Android12系统源码 (二)

1. 前言 上篇文章,我们基于Ubuntu24.04,已经成功下载下来了Android12的源码,这篇文章我们会接着上文,基于Ubuntu24.04来编译Android源码。 2. 编译源码 2.1 了解源码编译的名词 Makefile : Android平台的一个编译系…

CMake 生成器表达式介绍

【写在前面】 生成器表达式在构建系统生成期间进行评估&#xff0c;以生成特定于每个构建配置的信息。它们的形式为 $<...>。例如&#xff1a; target_include_directories(tgt PRIVATE /opt/include/$<CXX_COMPILER_ID>) 这将扩展为 “/opt/include/GNU”、“/opt…

CV项目整理

1. 爬取+展示的实时项目 1.1 核心技术 myqls + maxwell + redis+django 实现读写分离,实时项目,主从复制,读写分离,顺写日志。 maxwell将自己伪装成为slave,就可以从Mysql的集群中获取顺写日志Binlog maxwell取得的数据格式json 1.2 流程 1.3优化查询 下面的查询,笛卡尔…

如何通过sip信令以及抓包文件分析媒体发到哪个地方

前言 问题描述&#xff1a;A的媒体没转发到B&#xff0c;B只能听到回铃音&#xff0c;没有A的说话声音&#xff0c;并且fs这边按正常的信令发送了. 分析流程 分析早期媒体发送到哪一个IP 10.19.0.1发送了一个请求给10.19.0.157这个IP&#xff0c;然而这里的SDP媒体地址&am…

Flink(一)

目录 架构处理有界与无界数据部署应用到任意地方运行任意规模应用利用内存性能 流应用流处理应用的基本组件流状态时间 应用场景事件驱动应用事件驱动应用的优势Flink如何支持事件驱动应用&#xff1f; 典型的事件驱动示例 数据分析应用流式分析应用的优势&#xff1f;Flink 如…

RabbitMQ 安装(Windows版本)和使用

安装 安装包获取 可以自己找资源&#xff0c;我这里也有百度云的资源&#xff0c;如果没失效的话可以直接用。 通过百度网盘分享的文件&#xff1a;RabbitMQ 链接&#xff1a;https://pan.baidu.com/s/1rzcdeTIYQ4BqzHLDSwCgyw?pwdfj79 提取码&#xff1a;fj79 安装教程…

Pr 视频效果:闪光灯

视频效果/风格化/闪光灯 Stylize/Strobe Light 闪光灯 Strobe Light效果可用于在视频中创建闪烁或频闪的效果&#xff0c;类似于舞台上的频闪灯或摄影中的闪光灯。 ◆ ◆ ◆ 效果选项说明 通过调整各种参数&#xff0c;可以自定义闪光的颜色、频率、持续时间和混合模式&#…

深入理解ThreadLocal底层原理

ThreadLocal是线程私有的&#xff0c;各个线程之间是隔离的。可以想象一下每次线程创建的时候在堆上预先分配一个内存空间用于存储ThreadLocal的数据。 &#xff08;1&#xff09;当线程被创建时&#xff0c;线程都会有一个成员变量ThreadLocalMap。 //每个线程定义一个成员变…

构建自然灾害预警决策一体化平台,筑牢工程安全数字防线

近年来&#xff0c;国家和部委也强调了要切实加强地质灾害监测预警。作为国内智慧应急领域的先行者&#xff0c;Mapmost持续探索利用数字孪生技术&#xff0c;推进自然灾害风险预警精细化&#xff0c;强化对监测数据的综合分析和异常信息研判处置。建立健全区域风险预警与隐患点…

使用 Qt GRPC 构建高效的 Trojan-Go 客户端:详细指南

使用 Qt GRPC 构建高效的 Trojan-Go 客户端&#xff1a;详细指南 初识 Qt 和 gRPC 什么是 Qt&#xff1f;什么是 gRPC&#xff1f; 项目结构概述创建 proto 文件定义 API 下载 api.proto 文件解析 proto 文件 1. package 与 option 语句2. 消息类型定义 TrafficSpeedUserUserSt…

CI/CD 的原理

一、CI/CD 的概念 CI/CD是一种软件开发流程&#xff0c;旨在通过自动化和持续的集成、测试和交付实现高质量的软件产品。 CI(Continuous Integration)持续集成 目前主流的开发方式是协同开发&#xff0c;即多位开发人员同事处理同意应用不同模块或功能。 如果企业在同一时间将…