首页 > 其他分享 >【商业智能图表superset】数据源行变为列

【商业智能图表superset】数据源行变为列

时间:2024-04-26 13:23:42浏览次数:28  
标签:case end 数据源 when else state date superset 商业智能

目录

1、数据源为posgresql

2、数据源为clickhouse

场景是数据源按月计算的,但是想按1号,2号,3号,的列来查看,这里要先汇总,按姓名group by,将行转换为列,数据源不同时,对时间的函数不一样。

1、数据源为posgresql

postgres的抽取时间中月的第几天:extract(day from update_time)

SELECT person_no AS person_no,
       org_name AS org_name,
       extract(day from update_time),
       sum(case when extract(day from update_time) =1 then quota else 0 end) as day1,
	   sum(case when extract(day from update_time) =2 then quota else 0 end) as day2,
	   case when sum(case when extract(day from update_time) =1 then quota else 0 end) =3 then 'gd' else '' end as day1_str
FROM public.tb_quota
WHERE update_time >= '2020-08-31 00:00:00.000000'
  AND update_time < '2020-09-07 00:00:00.000000'
  group by person_no,org_name,update_time

LIMIT 1000;```


### 2、数据源为clickhouse


clickhouse的抽取时间中月的第几天:toDayOfMonth(date) 

 

```bash
SELECT formatDateTime(date,'%Y-%m') AS month_str,
       person_name AS person_name,
       person_id AS person_id,
       sum(case
               when toDayOfMonth(date) =10 then state
               else 0
           end) AS day10,
       sum(case
               when toDayOfMonth(date) =1 then state
               else 0
           end) AS "1",
       sum(case
               when toDayOfMonth(date) =11 then state
               else 0
           end) AS "11"
FROM pdms_pdmsdb.tb_model
GROUP BY formatDateTime(date,'%Y-%m'),
         person_name,
         person_id
ORDER BY day10 DESC
LIMIT 1000;```


 如果要先判断是否存在,然后再转义,单个列需要这样:

```python
case when has(groupArray(toDayOfMonth(date)),25)=0 then '' when sum(case when toDayOfMonth(date) =25 then (case when attendance_state is NULL then 100 else attendance_state end) else 0 end)=0 then '正常' 
	 when sum(case when toDayOfMonth(date) =25 then (case when attendance_state is NULL then 100 else attendance_state end) else 0 end)=1 then '迟到' 
	 when sum(case when toDayOfMonth(date) =25 then (case when attendance_state is NULL then 100 else attendance_state end) else 0 end)=2 then '早退' 
	 when sum(case when toDayOfMonth(date) =25 then (case when attendance_state is NULL then 100 else attendance_state end) else 0 end)=3 then '旷工' 
	 when sum(case when toDayOfMonth(date) =25 then (case when attendance_state is NULL then 100 else attendance_state end) else 0 end)=4 then '请假'
	 when sum(case when toDayOfMonth(date) =25 then (case when attendance_state is NULL then 100 else attendance_state end) else 0 end)=100 then '未排班'	 
else '' end```


 


![](https://mutouzuo.oss-cn-hangzhou.aliyuncs.com/my/mudouzuo1.png)

标签:case,end,数据源,when,else,state,date,superset,商业智能
From: https://www.cnblogs.com/bigleft/p/18159838

相关文章

  • springboot+mybatisplus+dynicDatasource 从数据库表中查询数据源 动态添加
    1、pom依赖<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.12</version><relativePath/><!--lookuppa......
  • Navicat连接SQL server出现:[IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名
    问题 解决方法一找到Navicat的安装路径,然后找到sqlncli_x64.msi文件并安装,安装成功后重启Navicat重新进行连接,看是否成功。 解决方法二如果方法一没有找到找到sqlncli_x64.msi还是Navicat的安装路径,然后找到msodbcsql_64.msi文件并安装,安装成功后重启Navicat重新进行连接......
  • 自动生成数据库设计文档,支持多数据源批量生成(Word文档)
       在做项目时通常使用PowerDesigner设计数据库,但在项目完成交付项目给客户的时候常常需要一份Word版本的数据库文档给客户,你不能指望每个客户都会用PowerDesigner,所以基于当前开发数据库生成数据库文档就是最佳选择,如果手动编写数据库文档那将是一件非常痛苦的费力不讨好的......
  • 【SpringBoot】【一】初识数据源连接池
    1 前言上节我们看了看,SpringBoot启动后都有哪些线程,看到有一部分是关于数据源连接池的,那么这节我们就看看数据源连接池都是如何工作的。我们本节就从这两个问题看起:(1)连接池是如何创建的,也就是什么时候创建的呢?(2)连接是什么时候放进连接池的?是创建完就初始化了一批新的连接,还......
  • ETLCloud中数据源使用和管理的技巧
    ETL中数据源管理的重要性在现代企业信息化进程中,数据已成为驱动决策、优化运营、提升竞争力的关键要素。而作为数据处理与分析的重要环节,ETL(Extract, Transform, Load)过程承担着从多种异构数据源中抽取数据,进行必要的转换,并将其加载到目标系统(如数据仓库或数据湖)中的重任。其中......
  • springBoot 多数据源配置
    常规数据源#应用端口server:port:5555spring:datasource:username:rootpassword:ffjy1101url:jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=falsedriver-class-name:com.......
  • springboot多数据源配置
    由于我们系统旧环境没有用springboot自带的多数据源功能,使用了自己配置的多数据源。添加自定义数据源注解@Target({ElementType.TYPE,ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)public@interfaceDynDatasource{Modulevalue()defaultModule.DEF;}注解......
  • 记录SpringBoot里JPA配置多数据源
    之前的系统是建立在mysql数据库上的,后来需求变更,需要跟教务系统对接获取教师的课表数据,在Oracle上。baidu了之后找了几篇样例,写完了。发现只能连接@Primary的数据源。思索3天后,觉得应该是系统启动时自动就将Primary的数据源加载好了,并没有根据我的bean和mapper去匹配对应的数据......
  • 开源无代码 / 低代码平台 NocoBase 0.21:图表及工作流支持多数据源
    NocoBase是一个极易扩展的开源无代码开发平台。完全掌控,无限扩展,助力你的开发团队快速响应变化,显著降低成本,不必投入几年时间和数百万资金研发,只需要花几分钟部署NocoBase。NocoBase中文官网官方文档在线Demo预告新特性图表支持多数据源更多内容查看[数据可视化]......
  • 多数据源配置
    1.配置文件spring:datasource:food:type:com.alibaba.druid.pool.DruidDataSourcedriver-class-name:com.mysql.cj.jdbc.Driverjdbc-url:jdbc:mysql://43.138.149.121:3306/food_app?allowMultiQueries=true&useUnicode=true&characterE......