有关Quick BI中当返回值为空值,行标题消失问题

news2025/1/14 1:17:37

一、Quick BI中的lod_ include函数

lod_ include {维度1[,维度2]...:聚合表达式[:过滤条件]}

作用:将表达式中的维度一起作为分组依据进行订算。其中,

1)    维度1[,维度2]... :声明维度,指定聚合表达式要连接到的一个或多个维度。使用逗号分隔各个维度。

2)    聚合表达式:聚合表达式是所执行的计算,用于定义目标维度。

3)    过滤条件:可以通过对前面的声明维度设定条件进行过滤,非必须。

二、问题描述

在Quick BI数据集中新建计算字段“退货订单数量= lod_include{[类型]:COUNT(distinct [流水号]):[类型]='退货单'}”

在quick BI仪表板中添加交叉表,以“月份”为行,以“退货订单数量”为列,结果数据返回为空。

既然返回为空,修改计算字段,当返回为空值时,指定返回为0,“退货订单数量=IFNULL(lod_include{[类型]:COUNT(distinct [流水号]):[类型]='退货单'},0)“,结果在仪表板中,数据返回仍然空。

三、原因分析

查看“退货订单数量= lod_include{[类型]:COUNT(distinct [流水号]):[类型]='退货单'}”计算时SQL代码:

SELECT

  LOD_TM.`LOD_2C07D23FC7BBAA` AS LOD_0,

  LOD_TP_0.`LOD_39C923F96BA15C` AS LOD_1

FROM

  (

    SELECT

      ASE_T_1_.`月份` AS LOD_2C07D23FC7BBAA

    FROM

      `terminaldata2`.`sales` AS ASE_T_1_

    GROUP BY

      ASE_T_1_.`月份`

    ORDER BY

      LOD_2C07D23FC7BBAA ASC

    LIMIT

      0, 20

  ) AS LOD_TM

  INNER JOIN (

    SELECT

      LOD_TL.`LOD_2C07D23FC7BBAA` AS LOD_2C07D23FC7BBAA,

      SUM(LOD_TR.`LOD_measure_result`) AS LOD_39C923F96BA15C

    FROM

      (

        SELECT

          ASE_T_1_.`月份` AS LOD_2C07D23FC7BBAA,

          ASE_T_1_.`类型` AS LOD_601A3BCEB54372

        FROM

          `terminaldata2`.`sales` AS ASE_T_1_

        GROUP BY

          ASE_T_1_.`月份`,

          ASE_T_1_.`类型`

      ) AS LOD_TL

      INNER JOIN (

        SELECT

          COUNT(

            distinct ASE_T_1_.`流水号`

          ) AS LOD_measure_result,

          ASE_T_1_.`月份` AS LOD_2C07D23FC7BBAA,

          ASE_T_1_.`类型` AS LOD_601A3BCEB54372

        FROM

          `terminaldata2`.`sales` AS ASE_T_1_

        WHERE

          ASE_T_1_.`类型` = '退货单'

        GROUP BY

          ASE_T_1_.`月份`,

          ASE_T_1_.`类型`

      ) AS LOD_TR ON LOD_TL.`LOD_2C07D23FC7BBAA` = LOD_TR.`LOD_2C07D23FC7BBAA`

      AND LOD_TL.`LOD_601A3BCEB54372` = LOD_TR.`LOD_601A3BCEB54372`

    GROUP BY

      LOD_TL.`LOD_2C07D23FC7BBAA`

  ) AS LOD_TP_0 ON LOD_TM.`LOD_2C07D23FC7BBAA` = LOD_TP_0.`LOD_2C07D23FC7BBAA`



SELECT

  COUNT(1) AS query_count

FROM

  (

    SELECT

      LOD_TM.`LOD_2C07D23FC7BBAA` AS LOD_0,

      LOD_TP_0.`LOD_39C923F96BA15C` AS LOD_1

    FROM

      (

        SELECT

          ASE_T_1_.`月份` AS LOD_2C07D23FC7BBAA

        FROM

          `terminaldata2`.`sales` AS ASE_T_1_

        GROUP BY

          ASE_T_1_.`月份`

      ) AS LOD_TM

      INNER JOIN (

        SELECT

          LOD_TL.`LOD_2C07D23FC7BBAA` AS LOD_2C07D23FC7BBAA,

          SUM(LOD_TR.`LOD_measure_result`) AS LOD_39C923F96BA15C

        FROM

          (

            SELECT

              ASE_T_1_.`月份` AS LOD_2C07D23FC7BBAA,

              ASE_T_1_.`类型` AS LOD_601A3BCEB54372

            FROM

              `terminaldata2`.`sales` AS ASE_T_1_

            GROUP BY

              ASE_T_1_.`月份`,

              ASE_T_1_.`类型`

          ) AS LOD_TL

          INNER JOIN (

            SELECT

              COUNT(

                distinct ASE_T_1_.`流水号`

              ) AS LOD_measure_result,

              ASE_T_1_.`月份` AS LOD_2C07D23FC7BBAA,

              ASE_T_1_.`类型` AS LOD_601A3BCEB54372

            FROM

              `terminaldata2`.`sales` AS ASE_T_1_

            WHERE

              ASE_T_1_.`类型` = '退货单'

            GROUP BY

              ASE_T_1_.`月份`,

              ASE_T_1_.`类型`

          ) AS LOD_TR ON LOD_TL.`LOD_2C07D23FC7BBAA` = LOD_TR.`LOD_2C07D23FC7BBAA`

          AND LOD_TL.`LOD_601A3BCEB54372` = LOD_TR.`LOD_601A3BCEB54372`

        GROUP BY

          LOD_TL.`LOD_2C07D23FC7BBAA`

      ) AS LOD_TP_0 ON LOD_TM.`LOD_2C07D23FC7BBAA` = LOD_TP_0.`LOD_2C07D23FC7BBAA`

  ) AS a

上述SQL代码中,第63行、165行“INNER JOIN“为内连接,取两张表的交集。以第63行为例,即取两张表(左表LOD_TL和右表LOD_TR)中的交集,由于右表LOD_T为空,所以内连接后交集也为空。

四、优化建议

当右表中没有匹配的记录时,也要显示左表中的记录(如左表LOD_TL中的”月份“),应该使用外左外连接LEFT JOIN,即左外连接以左表为主表,左表中的记录将会全部表示出来,右表只会显示符合过滤条件的记录,右表记录中不足的地方均为NULL。因此,需要将第63行、165行”INNER JOIN“改为”LEFT JOIN“既左外连接即可。

五、总结

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

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

相关文章

mac安装部署gitbook教程

mac安装部署gitbook教程 前言一、安装准备二、GitBook安装项目初始化 前言 一些自己实际操作的记录。 一、安装准备 Node.js gitbook基于Node.js,所以需要提前安装。 下载地址:https://nodejs.org/en/,可以下载比较新的版本。(但我的建议是不…

Python正则表达式Regular Expression初探

目录 Regular 匹配规则 单字符匹配 数量匹配 边界匹配 分组匹配 贪婪与懒惰 原版说明 特殊字符 转义序列 模块方法 函数说明 匹配模式 常用匹配规则 1. 匹配出所有整数 2. 匹配11位且13开头的整数 Regular Python的re模块提供了完整的正则表达式功能。正则表达式…

Java Web现代化开发:Spring Boot + Mybatis + Redis二级缓存

Java Web现代化开发:Spring Boot Mybatis Redis二级缓存 背景 Spring-Boot因其提供了各种开箱即用的插件,使得它成为了当今最为主流的Java Web开发框架之一。Mybatis是一个十分轻量好用的ORM框架。Redis是当今十分主流的分布式key-value型数据库&…

【云上探索实验室】使用 Amazon Bedrock 体验构建Stable Diffusion-文本生成图像生成式 AI 应用

生成式人工智能(AI)正以惊人的速度蓬勃发展,不断推动着科技创新的边界。在前不久的re:Invent 2023大会上,Selipsky为我们重点介绍了全托管式生成式 AI 服务 Amazon Bedrock,并表示Amazon Bedrock 极大地降低了客户从基…

༺༽༾ཊ—设计-简单-02-工厂-模式—ཏ༿༼༻

名称:简单工厂 类型:创建型 目的:用 工厂方法 代替 new操作 创建实例 的方式 缺点:不易扩展 首先我们创建一个接口 定义两个私有方法 并在两个新建类 下继承 实现接口 【注意】:一旦继承接口,必须实现…

计组原理:系统概论与基本组成

系统概论与基本组成 系统概论硬件软件 计算机系统的层次结构系统复杂性的管理方法1:抽象 计算机的基本组成冯诺依曼计算机系统复杂性的管理方法 2:(3’Y) 计算机的工作步骤上机前的准备:计算机的解题过程存储器的基本组…

结构体内存对齐(面试重点)

结构体内存对齐 1. 结构体类型的声明1.1 结构体的概念1.1.1 结构的声明1.1.2 结构体变量的创建和初始化 1.2 结构的特殊声明1.3 结构的自引用 2. 结构体内存对齐2.1 对齐规则2.1.1 练习1:2.1.2 练习2:2.1.3 练习3:2.1.4 练习4: 2.2 offsetof宏的使用2.3 为什么存在内存对齐?2.…

蓝桥杯省赛无忧 编程7

为了解决这个问题,我们可以编写一个函数来计算从编号为1的石头到达编号为n的石头所需的最少步数。问题的关键是理解每一步的移动规则:从当前石头编号n移动到编号为nx的石头上,其中x是n的各位数字之和。因此,我们需要一个辅助函数来…

docker 部署 sentinel

docker 部署 sentinel 环境安装 拉取镜像 目前稳定的版本是1.8.0 docker pull bladex/sentinel-dashboard:1.8.0启动服务 docker run --name sentinel -p 8858:8858 -td bladex/sentinel-dashboard:1.8.0登录 登录的时候账号和密码都是sentinel

[安全警报] Npm木马利用“Oscompatible“包悄然安装AnyDesk

最近,一个名为OsCompatible的恶意包被上传到npm 。该包被发现包含一个针对 Windows 的远程访问木马。 这个名为OsCompatible的软件包于2024年1月9日发布,在被撤下之前共吸引了380次下载。 据了解,OsCompatible包含“几个奇怪的二进制文件”…

解决 pnpm : 无法加载文件 C:\Program Files\nodejs\pnpm.ps1,因为在此系统上禁止运行脚本。

执行下面命令进行安装pnpm安装后 npm install -g pnpm 然后执行pnpm 报错 解决办法: 以管理员身份运行 Windows PowerShell , 在命令行输入以下命令后按回车, set-ExecutionPolicy RemoteSigned 再输入Y 回车即可。 再回到控制台输入p…

Elasticsearch Index Shard Allocation 索引分片分配策略

Elasticsearch 索引分片的分配策略说明 在上一篇《索引生命周期管理ILM看完不懂你锤我 》(https://mp.weixin.qq.com/s/ajhFp-xBU1dJm8a1dDdRQQ)中,我们已经学会了索引级别的分片分配过滤属性,也就是在配置文件中指定当前节点的属…

srm-50——攻防世界

可以知道这道题是二类题型,你完成某个事情给你flag 我们输入正确的东西,给“flag” 运行一下可以知道这些关键词 直接关键词在字符串里面 找到运行得到的东西 INT_PTR __stdcall DialogFunc(HWND hDlg, UINT a2, WPARAM a3, LPARAM a4) {HMODULE Mo…

Vue 组件通信方式

✨ 专栏介绍 在当今Web开发领域中,构建交互性强、可复用且易于维护的用户界面是至关重要的。而Vue.js作为一款现代化且流行的JavaScript框架,正是为了满足这些需求而诞生。它采用了MVVM架构模式,并通过数据驱动和组件化的方式,使…

天津想转行学python培训班靠谱吗?

现在的职业如此繁多,很多人把高薪当成衡量工作好坏的重要标准,因此IT行业以超出其他行业几倍薪资水平成为不错的选择,而Python又以其简单易学好上手成为大家所青睐的学习目标。 Python发展前景如何 Python语言就业发展方向广泛:…

SpringSecurity+OAuth2.0 搭建认证中心和资源服务中心

目录 1. OAuth2.0 简介 2. 代码搭建 2.1 认证中心(8080端口) 2.2 资源服务中心(8081端口) 3. 测试结果 1. OAuth2.0 简介 OAuth 2.0(开放授权 2.0)是一个开放标准,用于授权第三方应用程序…

java垃圾回收GC过程

GC(Gabage Collection) 用于回收堆中的垃圾数据 清理方法 1.标记-清理 对数据标记,然后清理 缺点:容易产生内存碎片 2.标记-整理 对标记后的数据清理,剩下数据前移 缺点:每次清理后数据都要迁移&#xff0…

代码随想录二刷 | 回溯 | 组合优化

代码随想录二刷 &#xff5c; 回溯 &#xff5c; 组合优化 剪枝优化 剪枝优化 在遍历的过程中有如下代码&#xff1a; for (int i startIndex; i < n; i) {path.pop_back();backtracking(n, k, i 1);path.pop_back(); }n 4&#xff0c;k 4的话&#xff0c;那么第一层f…

qemu使用

百度qemu bios 问题 坑爹的玩意&#xff0c;编译qemu 还需要python3.5以上 解决方法&#xff1a; CentOS7安装Python3.8-CSDN博客 https://www.cnblogs.com/Oliver.net/p/7211967.html 编译python3.8还由于openssl过低 参考 QEMU启动x86-Linux内核_qemu-system-x86-…

SaaS多租户篇

文章目录 1. 多租户是什么2. 技术组件2.1 如何实现多租户的DB封装2.2 如何实现多租户的redis封装2.3 如何实现多租户的Web和Security封装2.4 如何实现多租户的Job封装2.5 如何实现多租户的 MQ 与 Async 封装&#xff1f;2.6 如何实现多租户的 AOP 与 Util 封装&#xff1f; 3.业…