返回顶部
首页 > 资讯 > 精选 >如何通过一条数据库语句做数据分析
  • 800
分享到

如何通过一条数据库语句做数据分析

2023-06-04 04:06:06 800人浏览 八月长安
摘要

如何通过一条数据库语句做数据分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。定义物理数据源添加 sql 数据集时首要任务就是先在 [WEB 应用根目录]/WEB-INF/ra

如何通过一条数据库语句做数据分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

定义物理数据源

添加 sql 数据集时首要任务就是先在 [WEB 应用根目录]/WEB-INF/raqsoftConfig.xml 中定义好要使用的物理数据源。

<DBList><DB name="dqldemo"><property name="url" value="jdbc:hsqldb:hsql://127.0.0.1/demo" ></property><property name="driver" value="org.hsqldb.jdbcDriver" ></property><property name="type" value="13" ></property><property name="user" value="sa" ></property><property name="passWord" ></property>… …</DB>… …</DBList>

界面添加 SQL 数据集

物理数据源创建好后,接下来最重要的一步就是添加 SQL 数据集了。只需选择物理数据源,写上 SQL 语句,点击查询数据,缓存入文件保存就 ok 了!没错,就是这么方便!

如何通过一条数据库语句做数据分析

数据集创建完成后万事俱备只欠东风,接下来就可以开始多维分析的体验之旅了。

点击【添加报表】,选择数据集,填写报表名称【确定】,齐活!

如何通过一条数据库语句做数据分析

如何通过一条数据库语句做数据分析

如何通过一条数据库语句做数据分析

数据集有了,分析指标有了,现在就可以任性拖拽你想要查询的指标了,对 SQL 数据集的分析也能像文件分析从单机一步跃升 WEB 环境了,是不是又找到了倍儿爽的感觉?哈哈

先拖拽几个指标找找手感:

如何通过一条数据库语句做数据分析

如何通过一条数据库语句做数据分析

咦?咋列名都是代码,不是中文?这样感觉不友好!同学,这个问题提的好,其实答案很简单,分析出来的报表列名就是用的 SQL 数据集的字段名,所以只要使 SQL 数据集返回的字段名是中文就行!

利用 AS 返回中文字段名

如何通过一条数据库语句做数据分析

修改数据集 SQL 后,点击重新查询数据缓存入文件,再次添加报表,发现字段名变成中文了吧!

如何通过一条数据库语句做数据分析

如何通过一条数据库语句做数据分析

怎么样,看着舒服了吧,一不小心又 get 到新技能!不过看了上面的结果爱提问的同学可能又有想法了:部门怎么显示的是编号,这 0123 代表啥俺又不知道,那咋做分析?哈哈,小编猜到你的想法,早有准备,啧啧。。。

LEFT JOIN 搞定编号代码显示

把部门编号显示成部门名称,百变不离其中,还是取决于 SQL 数据集的 SQL 语句。通过 LEFT JOIN 做多表关联就可以轻松搞定!

如何通过一条数据库语句做数据分析

如何通过一条数据库语句做数据分析

如何通过一条数据库语句做数据分析

好了,通过上面的学习有没有发现其实数据集全是由 SQL 语句决定的,这里的 SQL 语句只要符合 SQL 标准语法就行,比如可以通过 AS 对字段重命名,LEFT JOIN 多表关联实现名称的显示等等,总之一句话:一切向 SQL 看齐!

利用 Tag 标签添加 SQL 数据集

除了上述这种在界面上添加 SQL 数据集的方式外,其实还可以通过 Tag 标签添加。

SQL 数据集和文件数据集在 Tag 标签的使用大同小异,只是属性略有不同。

Tag 标签添加 SQL 数据集:

<raqsoft:analysev2dataSource="dqldemo"  //指定SQL需要使用的物理数据源sql="select * from EMPLOYEE" //SQL语句… …>

在 Tag 标签中添加 SQL 数据集,访问多维分析页面时会将该数据集默认作为初始数据集,并直接将结果集以明细的形式展现在页面中。

如何通过一条数据库语句做数据分析

注重细节的同学是不是又发现了端倪?怎么使用 Tag 标签添加数据集时没有点击【查询数据,缓存入文件】结果也能正常展现呢?难道这两种添加数据集的方式还有什么不同吗?

其实这两种方式的底层对数据的处理机制是一样的,唯一的不同点就是 Tag 标签添加数据集可以理解为是直接为分析页面设置了初始数据集,这个时候程序会自动生成临时文件,然后将计算结果存入,这样一来就不用劳您大驾再动手缓存了。不过如果您还需要继续在页面上对初始数据集修改或者添加新的数据集,那就还得按最开始讲的那样儿,每次修改 SQL 语句后,都需要点击 【查询数据,缓存入文件】 重新生成了临时文件了。默认临时文件命名规则是以时间毫秒数组合而成。

怎么样,SQL 数据集在俺自己的应用程序里用起来是不是也超便捷?不论是在页面数据集菜单中添加还是在 Tag 标签里添加,其实都是先让集算器通过 SQL 取数,然后将返回的结果集缓存入临时文件,之后在页面上的多维分析就都是基于这个临时数据文件取数了。这样一来,借用集算器的计算能力,在界面上就能做拖拽分组、聚合、过滤等等数据分析动作了。

关于缓存文件的生命周期小编还是要多唠叨几句,简单分为如下三点:

当缓存文件的父目录路径中包含”temp”字样时,如:/Raqsofttemp/.txt 或 /temp/.txt,程序会在 Session 超时时自动清理该缓存文件

生成缓存文件时,如果发现缓存文件不存在,则会自动根据数据集的配置重新生成缓存文件

如果缓存文件路径中没有 temp 字样,则不会对缓存文件做任何删除处理,由客户的系统自己管理这些缓存文件的生命周期

缓存文件的后缀是.txt,聪明的你肯定就能猜润乾报表是用 TXT 文件作为中介的,但 TXT 文件的性能有点差,而且数据类型也不那么精确,个别情况会出点小错。其实从 SQL 中读出来的数据已经是二进制格式,再转成文本保存有点费时费力不讨好。

那么,还能怎么弄?

润乾报表提供了二进制格式的缓存文件,不过,这时候我得说一句不过了,这个功能需要收费的集成集算器才能支持了。如果已经有了这个功能组件,那么就简单了。

二进制缓存文件提升性能

打开 [WEB 应用根目录]/raqsoft/guide/jsp/olap.jsp 添加如下 JS api 脚本:

<script>guideConf.dataFileType = 'binary'; //binary是二进制文件,会以游标方式读取,能支持超出内存的数据集;该属性的默认为text文本文件类型。</script>

好了,设置完了,再缓存时就是以二进制文件的类型保存临时文件了。

咋样,是不是超简单?超便利?超喜欢?

不过话又说回来,上面这种缓存入文件的方式对于数据量不大的情况没问题,但有时候我们希望利用数据库的计算能力(毕竟数据库还可以集群分布等),那又该怎么办呢?

不要慌,润乾报表帮你忙!

非缓存 SQL 数据集

在 JSP 脚本中添加不需要缓存数据的 SQL 数据集。操作起来也不难,只先敲上一个做原始查询的 SQL 语句就行。

将 SQL 语句传递给数据库做查询,查询后分析界面会直接将结果集中的字段列出,进行拖拽就可以了。

下面以一个多表查询做举例,在 [demo 应用根目录]/raqsoft/guide/jsp/olap.jsp 添加 JS API 进行设置。

<script>guideConf.sqlId="<%=sqlId%>";//指定sqlidvar sqlDatasets = [{sqlId:"sqlId1" //指定数据集名称,不可重复,dataSource:"dqldemo" //指定SQL语句所使用的数据源,sql:"SELECT EMPLOYEE.Name as 雇员姓名,DEPARTMENT.NAME as 部门,EMPLOYEE.COUNTRY as 国家 FROM EMPLOYEE LEFT JOIN DEPARTMENT ON EMPLOYEE.DEPTID=DEPARTMENT.ID" //指定数据集SQL语句,fields:null},… …]… …</script>

脚本添加完成后,访问分析页面时只需要在 URL 里为 sqlId 参数传入数据集名称,如下图所示,使用名称为 sqlId1 的数据集:

如何通过一条数据库语句做数据分析

如何通过一条数据库语句做数据分析

将 SQL 数据集作为数据来源设置后,就能针对这个数据集分析了,但分析过程不会像缓存入文件类型的数据集那样预先加载这个数据集的数据,而是通过在这个 SQL 上追加更多的查询条件、分组、聚合子句方式实时在数据库中查询的,如:
select f1 , sum(f2) from (${ 原始 sql}) t where … group by …. having ….

简单 SQL 提升性能

基于上面这种做法,对性能有高要求的同学估计会有情绪了,很多 DB 不会优化,这样做就会搞的很慢,体验并不好。

哈哈,莫捉急,为了提高性能我们针对简单 SQL 还有更智能的自动改善性能的手段,所谓简单 SQL 就是单表无分组的 SQL 语句。SQL 会在被解析后再重组 SQL,而不是用比较慢的子查询语句。不过当 SQL 中包含 JOIN、分组、子查询、UNION 等复杂查询功能时,由于无法进行拆解,因此程序还是会自动选用子查询方式进行处理。

设置单表无分组的简单 SQL:

<script>guideConf.sqlId="<%=sqlId%>";//指定sqlidvar sqlDatasets = [{sqlId:"sqlId1" //指定数据集名称,不可重复,dataSource:"dqldemo" //指定SQL语句所使用的数据源,sql:"SELECT * from 客户" //指定数据集SQL语句,fields:null},… …]… …</script>

访问分析页面,拖拽指标,如下图所示:

如何通过一条数据库语句做数据分析

像上面例子这样最终拖拽后基于原始 SQL"select * from 客户" 生成的 SQL 语句为:SELECT 地区 地区, 城市 城市,count(客户 ID) 客户 ID 计数 FROM 客户 t GROUP BY 地区, 城市

好了,对 SQL 数据集多维分析的介绍就告于段落了,现在我们来回顾一下心路历程:

如何通过一条数据库语句做数据分析

可以看到我们从可以缓存的少量数据,到利用数据库计算能力的大量数据都有很好的解决方案,同时还提供了相应的性能提升手段。

看完上述内容,你们掌握如何通过一条数据库语句做数据分析的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: 如何通过一条数据库语句做数据分析

本文链接: https://lsjlt.com/news/236469.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何通过一条数据库语句做数据分析
    如何通过一条数据库语句做数据分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。定义物理数据源添加 SQL 数据集时首要任务就是先在 [web 应用根目录]/WEB-INF/ra...
    99+
    2023-06-04
  • sql语句怎么将数据库一条数据通过分隔符切割成多列
    今天小编给大家分享一下sql语句怎么将数据库一条数据通过分隔符切割成多列的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获...
    99+
    2023-03-11
    sql 数据库
  • MySQL中如何通过一条语句描述数据库中的所有表?
    您可以使用 INFORMATION_SCHEMA.COLUMNS 通过一条语句来描述数据库中的所有表。语法如下。SELECT *FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHE...
    99+
    2023-10-22
  • sql语句将数据库一条数据通过分隔符切割成多列方法实例
    目录需求场景应对措施效果展示具体代码总结sql语句,将数据库一条数据通过分隔符切割成多列 需求场景应对措施效果展示具体代码 需求场景 在实际场景之中,我们有时候会遇到一种情况,就是数据库中某一字段存了很长的一段字符串,里...
    99+
    2023-03-09
    sql一条数据拆分成多条 sql 分隔符拆分多行 sql按照逗号分隔
  • 如何通过SQLyog分析MySQL数据库
    这篇文章给大家介绍如何通过SQLyog分析MySQL数据库,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。数据库、表格(table)和列树(column tree)该程序一启动就开始询问...
    99+
    2024-04-02
  • 几条数据库Sql语句
    (1)同一张表中可能存在多辆车的皮重记录,想更新最早的一条记录,即更新其皮重。在sqlite3中,如下:update  CarNoTable set Tar...
    99+
    2024-04-02
  • 数据库中如何一条语句删除多张表
    这篇文章主要介绍数据库中如何一条语句删除多张表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 第一种方法:SCOTT@PR...
    99+
    2024-04-02
  • 如何通过SQL语句将数据从MongoDB导入关系型数据库?
    如何通过SQL语句将数据从MongoDB导入关系型数据库?摘要:MongoDB和关系型数据库在数据存储和查询方式上有很大的区别,因此在将数据从MongoDB导入关系型数据库时,需要采取一些特定的方法。本文将介绍如何使用SQL语句和代码示例将...
    99+
    2023-12-17
    MongoDB SQL语句 导入数据
  • 一条SQL语句查询多个数据库
    需求:一条SQL语句从多个数据库查询出相关联的结果,输出到客户端 调查:spring框架可以配置多数据源;sql也可以将多个数据库附加到一个主数据库下 解决办法:用ATTACH DATABASE语句将多个库...
    99+
    2024-04-02
  • 如何通过SQL语句在MongoDB中进行数据聚合和分析?
    如何通过SQL语句在MongoDB中进行数据聚合和分析?摘要:MongoDB是一种流行的NoSQL数据库,具有灵活的数据模型和强大的查询功能。虽然MongoDB没有内置的SQL查询语言,但我们可以通过一些工具和插件在MongoDB中使用SQ...
    99+
    2023-12-17
    SQL MongoDB 聚合
  • Mysql数据库条件查询语句如何使用
    小编给大家分享一下Mysql数据库条件查询语句如何使用,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!对于分析人员来讲,Mysql数据库应用最多的是select查询语句,此篇文章主要介...
    99+
    2024-04-02
  • php如何操作数据库查询10条语句
    本篇内容介绍了“php如何操作数据库查询10条语句”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!查询单个字段当需要查询某一张表的单个字段时,...
    99+
    2023-07-05
  • python如何做数据分析
    python可以使用以下工具做数据分析。Matplotlib可以用来绘制数据图表,能够绘制各类图形,Numpy主要针对数组数据的一些相关处理,Pandas则比较高级,可以处理Series、DataFrame等高级数据结构和工具,一般常用的有...
    99+
    2024-04-02
  • 一条SQL语句怎样查询多个数据库
    一条SQL语句怎样查询多个数据库,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。需求:一条SQL语句从多个数据库查询出相关联的结...
    99+
    2024-04-02
  • 如何利用C#通过sql语句操作Sqlserver数据库教程
    目录必要准备SQL语句编写加执行编写执行创建执行器ExecuteNonQuery()方式执行二者区别  ExecuteReader()方式执行实例:1-创建一张数...
    99+
    2022-11-13
    c# sql语句 c#操作sqlserver数据库 c# sqlserver
  • 如何用数据库分页查询语句进行数据库查询
    这篇文章主要介绍“如何用数据库分页查询语句进行数据库查询”,在日常操作中,相信很多人在如何用数据库分页查询语句进行数据库查询问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何...
    99+
    2024-04-02
  • 如何通过linq语法来操作数据库
    小编给大家分享一下如何通过linq语法来操作数据库,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!首先创建一个Console Application,然后创建一个名...
    99+
    2023-06-17
  • 如何用python做数据分析
    使用Python进行数据分析可以通过以下步骤进行:1. 安装Python和相应的数据分析库:首先,你需要安装Python解释器。可以...
    99+
    2023-10-08
    python
  • MySQL8.0 通过data文件和SQL语句恢复数据库
    一、通过data文件恢复data里的数据库 Mysql里的数据一般会自动保存到C:\ProgramData\MySQL\MySQL Server 8.0\Data目录下,卸载前要将其备份。 目前进测试了同版本的Mysql 数据恢复步骤: 1...
    99+
    2023-09-03
    mysql 数据库
  • MySQL 数据库查询数据,过滤重复数据保留一条数据-
    转自: http://www.maomao365.com/p=10564  摘要: 下文讲述MySQL数据库查询重复数据时,只保留一条数据的方法 实现思路: 在MySQL数据库中没有row_number函数,所以我们需变向实现此功能...
    99+
    2021-10-02
    MySQL 数据库查询数据,过滤重复数据保留一条数据-
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作