@Rays
2018-05-10T19:17:12.000000Z
字数 6907
阅读 1525
未分类
摘要: 市政府每天生成并发布大量的数据和信息。本文演示了如何使用Oracle Application Express(APEX),一种基于云计算的低代码开发工具,以及Socrata Open Data API(SODA),构建一个提供纽约市NYC 311服务请求公开数据报告和图表的Web应用。
作者: Marc Sewtz
审校: Daniel Bryant
正文:
译者注:低代码(Low Code)开发指无需编码或很少编码就可以快速生成应用,通常是通过GUI和配置开发应用
本文要点
市政府每天生成并发布大量的数据和信息。对公众开放这些数据集,会使政府机构更为透明和负责。对于纽约市而言,开放数据本身就是法律规定的。
SODA(Socrata Open Data API)是最广为使用的政府开放数据解决方案。其中,数据以REST风格的API形式呈现。
基于云的低代码开发平台为外部REST API提供了一种简单的、声明式的访问方式,支持前所未有范围的用户去使用可用的信息,无需用户娴熟掌握开发技术。
本文最后,演示了如何使用Oracle Application Express(APEX),一种基于云计算的低代码开发工具,构建一个提供纽约市311服务请求公开数据报告和图表的应用。
市政府每天生成并发布大量的数据和信息。对公众开放这些数据集,会使政府机构更为透明,让政府对公民更为负责。政府通过鼓励对数据集的使用和免费分发,邀请公民更加积极地参与公共机构事务,推动创建以公民为中心的创新服务和解决方案。
对纽约市而言,开放数据本身就是法律规定的。2012年颁布的《开放数据法》中规定,所有的公开数据应在2018年底之前在单一门户网站上提供。目前,纽约市已在opendata.cityofnewyork.us上提供了数百个数据集。网站支持公民按机构或类别查找数据集,并通过所提供的实用程序搜索和过滤数据。全美国已有数百个城市类似地提供了数据集,通常遵循相同的发布标准。
这些数据集的真正价值在于,它们是以基于标准REST API方式提供的,支持使用第三方工具和框架的开发人员利用这些丰富的信息,构建新的创新应用和解决方案。基于低代码(Low Code)和云的开发平台,提供了一种对外部REST API的简单的、声明式的访问方式,这使得前所未有地广泛规模的受众可以利用更多的可用信息,尽管这些用户可能并非非常精通具体的开发技术。
本文给出了对政府开放数据(Municipal Open Data)、REST API和Socrata Open Data API等概念的一个高层概览。其中,Socrata Open Data API正被纽约及其它许多城市所使用。通过本文,读者将学会如何使用基本的过滤器、SoQL查询和SoQL函数,查看和分析可用的数据。本文还会介绍各种用于查看并理解所提供API的工具。在具备了上述知识之后,读者将学会如何在一些广为使用的数据集(例如,311服务电话,纽约市招聘信息)上构建应用。
自本世纪初以来,开放政府数据的想法发展势头强劲。互联网通常被看成是现代世界的一个公共空间,政府可从中更好地了解公民及他们的需求,让公民充分地参与到政府事务中。因此,向公众开放政府数据,有利于开展民间讨论、改善公共福利,并可更有效地利用公共资源。
开放政府(Open Government)公约于2007年在加利福尼亚州的Sebastopol提出。公约中给出了开放政府数据(Open Government Data)的八项原则:
作为提高市政府的可访问性,透明度和问责制的举措的一部分,纽约市将各该市各机构和组织生成的所有公共数据通过opendata.cityofnewyork.us提供给公众使用。该网站是一个政府生成的机器可读数据集的存储库,向公众提供了开放数据目录。
通过研究分析或创建应用,任何人都可以使用这些数据集,参与并改进政府事务,从而更好地了解市政府机构是如何提供的服务、如何改善公民的生活,以及政府为公民提供服务的方式。
图1:纽约市开放数据的主页
REST(表现层状态转换,Representational State Transfer)是一种分布式超媒体系统的架构风格,是由Roy Fielding在他的博士论文中定义并给出的。REST风格描述了系统间如何使用HTTP获取数据并生成XML、JSON等格式的数据。大多数开放数据API都基于REST,其中包括Socrata Open Data API(SODA)。
Socrata是一家为公共部门组织提供服务的软件公司,它为政府工作人员和公众发现、使用并操作已有的政府数据提供帮助。Socrata的解决方案支持将公共部门机构主业务系统的数据流自动化为可公开访问的服务。Socrata Open Data API(SODA)是一种最广为采用的政府开放数据解决方案。Socrata已为世界各地的政府、非营利组织和非政府组织提供了数百种不同的数据目录。当前,许多美国城市和一些组织都具有开放数据门户。其中,开放数据网络(Open Data Network)https://www.opendatanetwork.com提供了一个开放数据集的全局目录。它支持使用Global Catalog API以编程方式集成并查询其它的系统。
为了与开放数据资源进行交互并与其它系统集成,我们需要一个“端点”。SODA API的“端点”就是唯一表示对象或对象集合的URL。每个Socrata数据集,以及每个单独的数据记录,都有其自己的端点。
下面链接所给出的例子,就是纽约市311服务请求的端点:
https://data.cityofnewyork.us/resource/fhrw-4uyv.json
在此例中,所有资源的访问都基于一个通用的基础路径“/resource/”,此后是数据集标识符。每个数据集都对应一个唯一的标识符。它由八位的数字字母组成,被短横线分为两个四字符短语。该URL可以使用Web浏览器打开,也可以使用其它一系列工具访问,例如Paw、Postman等REST Client浏览器插件。
端点URL后可以添加一些基本的过滤器和SoQL参数,实现对特定数据集的请求,或是实现对结果的查询和操作。
SODA API是自描述性的,即数据集本身的模式和内容决定了数据集的查询方式。数据中的任何字段都可以作为过滤器,只需将其作为GET参数附加到API端点即可。例如,要对上述例子做过滤,使得其中仅包括布鲁克林的311服务请求,我们可以添加“borough”作为参数,然后给出自治市镇名称:
https://data.cityofnewyork.us/resource/fhrw-4uyv.json?borough=BROOKLYN
SoQL(Socrata查询语言,Socrata Query Language)是一种类似于SQL的简单查询语言,设计用于简化对Web上数据的操作。与标准SQL基本一样,开发人员可以选择(SELECT)特定的列、使用WHERE语句过滤查询结果、对结果做排序(ORDER)和分组(GROUP),并应用一些聚合函数。
鉴于当前不少数据集的规模非常大,从数百万行到数十万行不等,因此在将数据下载到客户端应用前对数据做汇总是至关重要的。仅加载所需的数据和聚合,而不是下载完整的数据集,这将提高查询性能。并且在很多情况下,这种做法将使客户端应用真正可运行。因为在许多情况下,完全下载所有的数据实际上是不可行的。
下表汇总列出了各项可用的URL参数,以及它们的功能。
表1 SoQL可用的URL参数列表
URL参数 | 描述 | 缺省值 | 对应$query中语句查询 |
---|---|---|---|
$select | 类似于SQL中的SELECT,指定需返回的一组列。 | 所有列 | SELECT |
$where | 类似于SQL中的WHERE,指定过滤返回的列。 | 不定义过滤器 | WHERE |
$order | 类似于SQL中的ORDER BY,指定要排序的列。 | 不指定排序 | ORDER BY |
$group | 类似于SQL中的GROUP BY,指定分组结果的列。 | 不指定分组 | GROUP BY |
$having | 对聚合结果行进行过滤。 | 不指定过滤 | HAVING |
$limit | 指定最大返回结果数。 | 1000 | LIMIT |
$offset | 用于分页,指定从偏移量处开始显示结果。 | 0 | OFFSET |
$q | 对设定值做全文检索。 | 不检索 | N/A |
$query | 将整个SoQL查询字符串作为一个参数。 | N/A | N/A |
针对上面给出的311数据的例子,我们对数据做进一步的过滤和聚合,下面的URL,选定只显示Brookly区域投诉的类型和数量,并按降序排列。
通过纽约市的开放数据门户网站,以及其它一些采用Socrata Open Data解决方案的开放数据门户网站,市民可以轻松地访问大量的公共数据集。使用数据集所提供的工具,无疑是一种查找信息和开展研究的好方法。此外,通过基于浏览器的查看器,市民可以搜索、过滤、可视化并导出任何可用的数据。除了借助于基本的查询接口之外,许多数据集还具有很大的潜力,可作为构建新型创新解决方案的基础。如果开发人员想要将这些数据集集成到自己的应用中,可以使用Socrata Open Data API(SODA)。SODA适用于绝大多数的数据集,它通过HTTP以JSON和CSV格式提供数据。
所有的SODA API都提供了大量的文档。其中包括一些代码示例,演示了如何使用部分最广为使用的编程语言来操作数据。这样,对于具有所需编程技能的人,可以开放地使用数据。为了扩大这些API的潜在目标受众,而非仅局限于专业开发人员,“低代码”开发工具扮演着越来越重要的角色。低代码开发允许开发人员只需插入相应的SODA URL,然后使用声明式向导,就可以构建一些使用数据的强大组件,例如报告、图表、日历等。实现所有这些功能,人们只需要写很少的代码,或者根本不需要写代码。
低代码应用开发的主要目的在于提高生产率,即使用较少的工作实现更多的功能、更高的一致性和更高的保真度。低代码开发框架利用了功能强大的组件实现报告功能、数据的可视化和表单控件。这使得应用开发人员可以专注于解决业务问题,并给出解决方案,从而在一些普遍和重复性的低层代码上花费更少的时间和精力。
低代码工具可显著地提高应用的开发生产力和可维护性。普通公民就可以成为开发人员,自动执行业务流程,并实现某一点上的解决方案。此外,低代码工具对专业开发人员也同样具有吸引力,它们可以显著地降低应用开发和维护的时间和复杂性。正确使用低代码工具,可最广泛地为使用声明性编程的用例提供卓越的生产力。
为展示这一解决方案的实现,下面我们将使用上面介绍的纽约市311服务电话数据,其调用接口位于:
https://data.cityofnewyork.us/resource/fhrw-4uyv.json
我们将使用Oracle Application Express(APEX)低代码开发套件,构建基于此数据集的报告和图表应用,效果如图2所示。Oracle Application Express支持开发人员创建以数据库为中心的Web应用,并具有可靠、可扩展和安全等特性。开发人员不需要过多的编程经验,只需使用Web浏览器,就可以为台式机和移动设备构建和部署基于Web的专业应用。
图2 一个APEX图表,其中显示了纽约市311服务请求的情况
在开始使用低代码解决方案构建应用时,开发人员必须启动一个本地APEX实例,或是登陆基于云的APREX服务。使用基于云服务的优点是服务总是在线的,即应用一旦完成开发,就会即刻提供给开发人员所指定的用户。
一旦APEX服务可用,这时就需要开发人员创建一个APEX工作区,然后使用声明式的“Create Application Wizard”开始构建应用。就本例而言,仅用一个空白页面构建应用就可以了。在创建应用之后,开发人员需要在“Shared Components”中使用“Web Source”组件,创建对REST API的引用。创建新的Web源时,必须要指定API的URL端点、Web源名称、Web源类型及HTTP方法等信息。SODA API支持通过HTTP和HTTPS访问。
下一步,APEX会将端点URL拆分为特定于服务器的和特定于服务的两个部分。APEX将使用特定于服务器的URL部分创建一个新的远程服务器(Remote Server)对象。所生成的实体用于对指向同一服务器的REST端点进行分组。使用这样的REST服务集合,一旦服务器发生更改,开发人员仅需调整远程服务器对象。
然后,开发人员将会得到提示,需要输入验证信息。虽然SODA API不需要进行认证,但开发人员可以使用高级属性添加应用令牌。此外,开发人员还可以使用可选的模块参数,定义SODA过滤器和SoQL查询。要实现在URL中包含参数,应该指定参数类型为“Query String”。参数可以是静态的,也可以是动态的。动态参数支持在运行时根据用户的操作进行动态调整。
创建Web源的最后一步是“Discovery”。该步骤向API端点实际发出HTTP请求,并以JSON格式返回结果。APEX对JSON结构进行分析,并创建一个数据概要文件,其中包含了所有可用的列,以及所发现的数据类型。此后,Web源与数据配置文件将被APEX中的声明性组件创建向导使用,与APEX通常使用数据库数据字典来读取本地表上的表和列信息一样。
在创建Web源之后,许多APEX标准组件,例如交互式报告、经典报告、图表和日历等,就可以直接连接到REST API。如果要使用网络资源,开发人员只需简单地浏览相应的创建页面向导,然后选择“Web Source”作为数据源。一旦选定了组件,开发人员就可以选择要添加到报告中的列,或者对于图表或日历页面而言,选择将哪些列作为显示列和值列。
图3显示了使用纽约市311服务调用API所创建的应用。在本例子中,我们使用了一个APEX交互网格,其中选择了数据集中最相关的列,并显示在报告中。例子中还使用内置的“Chart”功能添加了一个Oracle JET图表,显示了拨打311电话最多的区域。
图3 纽约市311服务电话情况
开放数据为市政府、地方、州和联邦政府机构提供了与选民接触的大量机会,使政府更加透明和负责。Open Data API不仅支持公众在所提供的开放数据门户网站上查找信息,而且可以作为构建新型创新服务的一个基础。低代码开发平台支持通过简单地指定API端点就着手构建应用。对于使开放数据API更易于为更广泛的开发人员访问,低代码开发平台发挥了重要的作用。开发人员可以使用简单的声明式向导,构建自己的解决方案,并添加其它一些数据集和服务。当前,云服务提供商使得开发人员可以轻松地使用公共REST API构建应用。因为其中所有的常见任务,包括提供服务器、授权并配置软件和网络等,通常都可由服务提供商负责。
Marc Sewtz供职于Oracle数据库工具组,任Oracle Application Express软件开发经理。Marc具有14年的行业经验,涉及咨询、销售和开发方面的职位。Marc于1998年加入Oracle,自2001年起,他一直致力于Oracle Application Express。他最初担任顾问,使用Oracle Application Express作为开发框架, 编写Oracle电子商务套件的扩展模块。后来,他在Oracle Application Express开发组中担任软件架构师和开发经理。在此职位上,Marc管理着一个分布于全球的开发人员和产品经理团队,负责并为大量的产品功能做出了贡献,其中包括报表引擎、表格形式、PDF打印和BI Publisher集成、向导及用户界面,还包括构件等。
查看英文原文: Building Apps Leveraging Municipal Open Data and Low Code Solutions