公司如今能够访问海量存储为 JavaScript Object Notation (JSON) 格式的数据。对许多公司而言,他们面临的挑战是对这种类型的数据执行高效、富有洞察的分析或可视化。
来自 IBM 的技术使得存储在 Cloudant NoSQL 数据库中的 JSON 数据能够转移到可执行超快分析的高效的内存型纵列数据库中。然后,在数据仓库中有了此数据后,您就可以使用 IBM Bluemix Embeddable Reporting 服务(由 IBM Cognos Report Studio 提供支持)为 Cloudant 数据库设计和生成报告。
在本教程中,您将学习如何使用 IBM Bluemix 创建一个存储 JSON 数据的 Cloudant 服务 实例,使用一个 IBM Embeddable Reporting 服务实例来设计和生成报告。为了能够访问这些服务,您需要创建一个 Bluemix 应用程序,并将其绑定到这些服务。
这个流程图给出了解决方案架构:
点击查看大图
关闭 [x]
首先,创建一个 Bluemix 应用程序和服务实例,然后将 JSON 数据加载到一个 Cloudant NoSQL 数据库中。接下来,创建一个数据仓库来自动生成一个 IBM dashDB 服务实例,并将 JSON 数据转换为关系表。然后使用 Embeddable Reporting 服务为转换后的 JSON 数据设计和生成报告。Embeddable Reporting 服务使用 IBM dashDB 作为数据源,使用 Cloudant 作为连接细节、可视化表示和任何与保存的报告相关的其他数据的后端数据库存储。
阅读: 开始使用 Embeddable Reporting(Bluemix 文档)
阅读: 在您应用程序中嵌入丰富的报告(developerWorks 教程)
阅读: 使用 Embeddable Reporting 服务在 IBM Bluemix 上利用 IBM Cognos(developerWorks 教程)
“ Cloudant 对一个加载的 JSON 数据采样执行一种模式发现流程,以便将数据持续转换为关系数据,使您能够执行关系数据分析。 ”
SELECT
查询命令 您将使用一个 Python 脚本来将采样数据加载到您的 Cloudant 数据库中。现在获取该脚本,以便以后方便使用它:
获取脚本
ERSforCloudant
),然后单击 FINISH 。等待应用程序完成暂存。 点击查看大图
关闭 [x]
username
、 password
和 url
值,后面的步骤需要使用它们。 在这一步中,将在 Cloudant 中创建一个名为 incidents
的 JSON 数据库,然后将一个开放数据集( 旧金山警察局的犯罪事故 )加载到该数据库中。
从您在第 1 步中保存 Python 脚本的目录,运行下面这条命令,提供您在第 4 步中保存的 Cloudant 用户名和密码:
python loadJsonintoCloudant.py incidents <em>Cloudant_username</em> <em>Cloudant_password</em> "https://data.sfgov.org/resource/tmnf-yvry.json?$select=incidntnum,category,descript,dayofweek,date,pddistrict,resolution&$limit=50000"
等待几分钟,直到您看到此屏幕输出:
现在有 50000 个文档被加载到了 incidents cloudant json db 中。
点击查看大图
关闭 [x]
使用 Cloudant 存储 JSON 数据的一个优势是:拥有将数据按需转换为 IBM dashDB 中的关系表的内在能力。Cloudant 对一个加载的 JSON 数据样本大小执行一种模式发现流程,以将数据持续转换为关系数据,使您可以执行关系数据分析。
点击查看大图
关闭 [x]
incidents
数据库,提供您的 IBM ID 和密码(它们应该与您用来访问 Bluemix 帐户的验证凭据相匹配),然后单击 Create Warehouse 。 在创建 Cloudant 仓库后,将会创建一个新的 IBM dashDB 服务实例,并且 JSON 文档已转换:
点击查看大图
关闭 [x]
点击查看大图
关闭 [x]
点击查看大图
关闭 [x]
点击查看大图
关闭 [x]
点击查看大图
关闭 [x]
对于 SSL 连接,输入 jdbc:db2://hostname:50001/BLUDB:sslConnection=true;
作为 JDBC URI。否则使用 jdbc:db2://hostname:50000/BLUDB
。
点击查看大图
关闭 [x]
点击查看大图
关闭 [x]
现在您将使用 Embeddable Reporting 服务,从您的 dashDB 实例中的表列数据创建基于 SQL 的报告。您将生成两个报告:报告 1 检查在所有年份中报告的犯罪事故数量和警务区,报告 2 显示在每个犯罪类别中报告的犯罪事故,并按照找到的判决结果来堆叠它们。
提示:在您浏览器中允许弹出窗口。
在 Bluemix 仪表板中,打开您的应用程序并选择 Embeddable Reporting 服务。点击查看大图
关闭 [x]
在 SQL 对话框中,键入以下 SQL 语句:
select * from "incidents"
单击 Validate 验证您的查询,然后单击 OK加载数据。
count_incidents
,输入 count([SQL1].[incidntnum])
作为 Expression Definition 。此表达式将统计犯罪事故总数。单击绿色的复选标记来让该表达式生效。要了解这里使用的 summarize 选项的更多信息,可单击 f(x) 图标: year
的新数据项,将它定义为 substr([SQL1].[date],1,4)
(它基于 JSON/dashDB 表中的 YYYY-MM-DDHH:MM:SS 日期格式。) count_incidents
数据项作为 Y 轴或值,使用 Year
作为 X 轴或类别,使用 PdDistrict
作为系列: 点击查看大图
关闭 [x]
year
数据项。在左下侧的特性窗格中,将排序定义为升序,然后单击 OK : 点击查看大图
关闭 [x]
点击查看大图
关闭 [x]
现在,您第二个报告被创建为一种显示了事故数量和判决结果的堆叠柱图。 重复您生成报告 1 时的第 1-13 步,然后继续执行以下步骤:
count_incidents
作为 Y 轴或值,使用 category
作为 X 轴或类别,然后使用 resolution
作为系列。 点击查看大图
关闭 [x]
生成报告后,可单击工具栏上的 Save 按钮来保存它。然后可以直接从 Embeddable Reporting 服务的 Report Definitions 页面访问您保存的报告:
点击查看大图
关闭 [x]
在本教程中,您将存储在 CLoudant 数据库中的 JSON 数据转换成了 dashDB 中的纵列格式。然后,您使用 Cloudant 作为连接来源,使用 dashDB 作为数据来源,使用 Bluemix 上的 Embeddable Reporting 服务来生成报告。
dashDB 的功能不仅仅是提供结构化格式的数据来创建报告。它的分析处理引擎可以使用 IBM BLU Acceleration 来优化查询处理时间,它的压缩功能使得从 Cloudant 转换的 JSON 数据能够更紧凑地进行存储。这些 dashDB 功能使 Embeddable Reporting 服务等应用程序能快速访问数据。
Cloudant 可以对 dashDB 执行持续的转换。如果将新数据加载到 JSON 数据库中,可以立即在 dashDB 中使用该数据。您可以在 Embeddable Reporting 服务中重新运行保存的报告任意多次,该服务还能够灵活地将报告嵌入到您的应用程序中实现可视化。
BLUEMIX SERVICES USED IN THIS TUTORIAL:
相关主题: Python