基于SSRS的火龙果市场价格数据查询系统设计与实现
2021-12-28黄筑斌
黄筑斌, 吴 隽
(贵州省农业科技信息研究所, 贵州 贵阳 550006)
农产品价格信息是农产品市场供求关系的直接体现,因而是进行农产品市场分析的重要基础[1]。随着信息技术的发展,特别是数据库技术与互联网传播技术的融合愈发成熟,以数据库为支撑的农产品市场价格信息发布、查询与复杂分析能够更好地实现,价格信息的服务对象能够依托互联网便捷地获取所需的数据,甚至可直接利用相关的价格信息系统分析数据,而无需额外的其他工具[2-5]。此类信息系统的技术实现手段在满足服务对象多样化信息需求的过程中日益成熟,但其自身的专业性和复杂程度也在提升,普遍需要运用计算机程序开发语言或网络技术架构,进而提高了设计开发此类信息系统的技术门槛和成本。即使是基础的信息发布和查询,对于不具备一定编程知识和技能的人群,通过编写计算机程序从零开始开发此类信息系统仍然具有较大难度。因此,一些无需编程实现数据信息检索、查询和分析的软件应运而生,如tableau[6]、Power BI[7]、水晶报表[8],为具有相应信息需求而又缺乏编程能力的人员提供了极大的便利。
SQL Server Reporting Services(SSRS)是常用数据库系统Microsoft SQL Server的一个服务和功能组件,与Microsoft SQL Server深度整合。其以数据报表为核心,提供设计、发布、管理数据报表的各项功能,可建立面向Web和移动终端的数据资源门户[9]。同时,实现各功能的操作可视化程度较高,虽然需掌握基础的数据库表知识,但学习成本仍比掌握计算机程序开发语言低。因此,基于SSRS,以设计开发一套简易的火龙果市场价格数据查询系统为例,为开发农产品价格信息查询系统提供一种比计算机编程方式相对简易的技术实现方法提供借鉴。
1 功能设计
1.1 市场信息发布
在系统使用者未进行特定检索条件下的查询时,始终自动呈现当前最新的火龙果市场价格信息,且数据的更新周期可控。
1.2 市场价格信息查询
能够按地区、品种类别(具体品种)、市场范围、交易时间和价格类别等查询条件查询火龙果产品的市场价格。
1.3 市场价格信息分析
能够按地区、品种类别、市场范围和时间进行火龙果产品价格数据统计,实现基础的统计分析功能,并以数字或简单的图形(如折线图)进行呈现,以描述价格走势。
2 系统实现
2.1 系统运行环境搭建和工具获取
SSRS的具体软件硬件要求可参见文献[10],且可在部署SQL Server时或之后随时进行安装,本例中使用已部署SQL Server的专业服务器安装SSRS。ReportBuilder是SSRS中数据报表的设计工具,可不依赖于SSRS和网络进行使用,其是实现数据呈现的核心工具,可在Microsoft公司官网下载。
2.2 建立数据源
数据源是系统自动发布和可供检索的价格数据来源,是构建系统的前提。除可指定已有的数据源,如合法提供给系统进行合规使用的数据库,也可自建数据源。在数据传递方式上,数据源可与SSRS不在同一运行环境或相同硬件载体上,这也为数据源的建立和获取提供了较大的便利,也带来管理上的灵活性。
虽然数据源的载体并不都是数据库,但从数据管理的角度考虑,采用数据库是较好的选择。因此,首先建立火龙果市场价格数据库,作为系统的数据源,其数据表设计见表1。完整的市场价格信息表,除具体的价格数值外,地区、市场、价格类型等字段的值提取自相关表的各ID值,实现完全的编码化,以提高数据处理的灵活性,也可用于其他类型信息系统的二次开发。
表1 火龙果市场价格数据库各表的字段设计
该数据库的数据可通过实地采集方式获取,也可通过火龙果产业信息服务站(点)采集火龙果产业市场信息,还可通过互联网,利用其他现有的市场信息资源,如贵州农经网等权威网络媒体发布的市场信息,搜集火龙果市场价格数据。本例中使用贵州农经网发布的贵州省火龙果市场价格数据。
2.3 建立数据集
数据集是实际可呈现给系统服务对象的数据集合。可按需求设置一定的规则对数据源中的所有数据进行组织,形成一个或多个数据集。为提供多维度的数据检索条件,更好地实现数据的查询功能,将上述各数据表中的数据分别建立数据集。具体设置以Area(地区)数据集为例(图1),其他数据集类似。可使用查询设计器或在“字段”选项卡中指定数据集包含的数据对象,本例中直接使用用专门处理数据库数据的SQL(结构化查询语言)代码实现,各数据集的SQL查询代码分别如下。
图1 Area(地区)数据集的属性设置
地区数据集:
SELECT
DISTINCT([AreaCode]),[AreaName]
FROM [CAPPriceDB].[dbo].[pitayamarket]
市场数据集:
SELECT
[MarketID],[AreaCode],[AreaName],
[MarketName]
FROM [CAPPriceDB].[dbo].[pitayamarket]
WHERE [AreaCode]IN(@AreaCode)
产品名称数据集:
SELECT DISTINCT([ProductName])
FROM [CAPPriceDB].[dbo].[price]
价格类型数据集:
SELECT
DISTINCT([PriceTypeName])
FROM [CAPPriceDB].[dbo].[price]
价格数据集:
SELECT
[MarketName],
[ProductName],
[Price],
[UnitName],
[TradeDate],
[MarketID]
FROM CAPPriceDB.dbo.price
WHERE [MarketID] IN (@Market)
AND [TradeDate] BETWEEN (@StartDate)
AND (@EndDate)
AND [ProductName]=(@ProductName)
AND [PriceTypeName] IN (@PriceType)
ORDER BY [TradeDate] DESC
2.4 建立查询参数
查询参数是供系统使用者查询数据的检索条件。在ReportBuilder中分别建立并配置查询参数,其赋值来源于各数据集,基本属性可直接参考其对应表的字段设计进行设置。具体设置以Area(地区)参数为例(图2),其他参数类似。另外,为将交易时间列入检索条件,建立StartDate(交易开始时间)和EndDate“交易结束时间”2个与数据集无关的时间维度参数。
图2 Area(地区)参数的属性设置
2.5 系统界面设计
使用ReportBuilder以全可视化的方式进行系统界面的功能按钮、配图、文字、表格样式等元素的设计,其中,价格分析图通过图表向导插入,如图3所示。由此即完成了以往此类系统数据呈现所需的前端页面开发。
2.6 系统测试及发布使用
使用ReportBuilder直接进行系统测试,可根据出错提示对错误的数据源、数据集或参数配置进行改正。正确运行的系统,其查询结果如图4所示。
系统的发布以报表为载体,可在部署SSRS的终端设备通过其配置管理器,设置报表管理系统的网络访问地址,通过网页端的报表管理系统对ReportBuilder设计完成的报表文件进行发布[11],并且可设置报表访问者的各项权限,如限定可查询的数据范围等。另外,对于具有数据访问或进一步开发利用权限的系统使用者,可根据实际情况向其提供报表文件副本,后者安装ReportBuilder后即可在任何能够连接到数据源的终端设备上查询所需数据。
3 结论与讨论
利用SSRS设计实现了具备信息发布、查询和基础统计分析功能的火龙果市场价格信息查询系统。与常规的程序开发方式相比,该技术方法的实现难度较低,学习成本也不高,可作为设计开发类似系统的方法借鉴。SSRS是一套基于报表的完整数据服务,研究只是以一个相对简单的实例介绍其应用方式,对所有技术细节未作全面阐述,可参考SSRS的官方文档库[9]或相关专著[12]进行更深入的了解。同时,在数据分析方面,研究也未设计更多更复杂的图表呈现形式,事实上,随着Microsoft公司在持续推进SSRS与同样由其开发的Power BI进行融合,前者在数据分析和数据可视化中的应用已得到进一步增强。在大数据技术日益发展的今天,数据分析的手段已得到长足发展,也使数据分析日益成为一项重要的技能,与SSRS和Power BI类似的可视化数据处理和分析工具,如四方伟业公司的SDC UE[13],将会给更多有相关需求的群体提供更多的选择。另外,近年来,随着“Low Code”(低代码)这一将降低各领域业务系统对计算机程序开发的过度依赖、提高业务应用开发成本和效率作为主要目标的技术浪潮兴起[14],较少需要计算机程序开发知识与技能的数据处理与开发工具或许会迎来新发展机遇。但计算机程序开发语言自身也在随着行业需求的变化不断发展,在信息系统开发中的地位不会被上述的可视化或低代码特征的工具所全面替代。因此,对于类似系统的设计与开发,实现的技术手段应结合实际条件和需求灵活选择。