转载

从 NoSQL 数据库创建 SQL 报告

公司如今能够访问海量存储为 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 应用程序,并将其绑定到这些服务。

这个流程图给出了解决方案架构:

从 NoSQL 数据库创建 SQL 报告

点击查看大图

关闭 [x]

从 NoSQL 数据库创建 SQL 报告

首先,创建一个 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 数据采样执行一种模式发现流程,以便将数据持续转换为关系数据,使您能够执行关系数据分析。

构建您的应用程序需要做的准备工作

  • 一个 Bluemix 帐户
  • 一种免费的纵列可视化表示,您可以从 IBM Analytics Zone 将它下载到您计算机上的一个方便的位置(不要解压 ZIP 压缩文件)
  • 一个 Python 解释器
  • 熟悉 JSON 文档
  • 熟悉 Python 脚本的运行
  • 熟悉基本的 SQL SELECT 查询命令

第 1 步. 获取 Python 脚本

您将使用一个 Python 脚本来将采样数据加载到您的 Cloudant 数据库中。现在获取该脚本,以便以后方便使用它:

  1. 单击此按钮来访问脚本存储库:

    获取脚本

  2. 在 GitHub 上的 pmutyala/IBMdashDBSampleScripts 项目页面上,单击 Download ZIP 获取整个存储库: 从 NoSQL 数据库创建 SQL 报告
  3. 将 IBMdashDBSampleScripts-master.zip 保存到您计算机上的一个方便的位置,并解压它的内容。

第 2 步. 在 Bluemix 中创建应用程序

  1. 登录您的 Bluemix 帐户 (或 注册一个免费试用版帐户 )。
  2. 在仪表板中,单击 Cloud Foundry Apps 磁贴上的 CREATE APP
  3. 单击 WEB 作为要创建的应用程序类型。
  4. 选择 Liberty for Java 作为您想要开始使用的技术,然后单击 CONTINUE
  5. 为您创建的应用程序键入一个惟一名称(我们在示例中使用的是 ERSforCloudant ),然后单击 FINISH 。等待应用程序完成暂存。
  6. 创建应用程序并完成暂存后,返回到仪表板,确保应用程序已在 Applications 部分列出: 从 NoSQL 数据库创建 SQL 报告

    点击查看大图

    关闭 [x]

    从 NoSQL 数据库创建 SQL 报告

第 3 步. 将 Cloudant 和 Embeddable Reporting 服务添加到您应用程序中

  1. 在 Bluemix 仪表板的 Applications 部分,选择新创建的应用程序。
  2. 单击 ADD A SERVICE OR API ,从目录的 Data Management 部分选择 Cloudant NoSQL DB从 NoSQL 数据库创建 SQL 报告
  3. 在右侧的 Add Service 对话框中,选择 Shared 作为 Selected Plan,然后单击 CREATE 。如果获得提示,请重新暂存应用程序。
  4. 返回到仪表板,在 Applications 部分选择您的应用程序,然后单击 ADD A SERVICE OR API
  5. 从目录的 Business Analytics 部分选择 Embeddable Reporting从 NoSQL 数据库创建 SQL 报告
  6. 对于 Selected Plan,选择 Free plan ,然后单击 CREATE 。如果获得提示,请重新暂存应用程序。

第 4 步. 获取 Cloudant 访问细节

  1. 在 Bluemix 仪表板的 Applications 部分选择您的应用程序。
  2. 在 Cloudant NoSQL DB 服务实例磁贴中,单击 Show Credentials从 NoSQL 数据库创建 SQL 报告
  3. 记下 usernamepasswordurl 值,后面的步骤需要使用它们。

第 5 步. 在 Cloudant 中创建一个 JSON 数据库并加载数据

在这一步中,将在 Cloudant 中创建一个名为 incidents 的 JSON 数据库,然后将一个开放数据集( 旧金山警察局的犯罪事故 )加载到该数据库中。

  1. 从您在第 1 步中保存 Python 脚本的目录,运行下面这条命令,提供您在第 4 步中保存的 Cloudant 用户名和密码:

    python&nbsp; loadJsonintoCloudant.py&nbsp; incidents&nbsp;<em>Cloudant_username</em>&nbsp;<em>Cloudant_password</em>&nbsp; &quot;https://data.sfgov.org/resource/tmnf-yvry.json?$select=incidntnum,category,descript,dayofweek,date,pddistrict,resolution&amp;$limit=50000&quot;

  2. 等待几分钟,直到您看到此屏幕输出:

    现在有 50000 个文档被加载到了 incidents cloudant json db 中。

  3. 在 Bluemix 仪表板中单击 Cloudant 服务实例,然后单击 Launch从 NoSQL 数据库创建 SQL 报告
  4. 在 Cloudant 仪表板中,在 Databases 页面中查找刚创建的数据库。 # of Docs 列显示已加载了 50,000 个文档: 从 NoSQL 数据库创建 SQL 报告

    点击查看大图

    关闭 [x]

    从 NoSQL 数据库创建 SQL 报告

第 6 步. 创建一个仓库来将 JSON 文档转换为关系表

使用 Cloudant 存储 JSON 数据的一个优势是:拥有将数据按需转换为 IBM dashDB 中的关系表的内在能力。Cloudant 对一个加载的 JSON 数据样本大小执行一种模式发现流程,以将数据持续转换为关系数据,使您可以执行关系数据分析。

  1. 从 Cloudant 仪表板转到 Warehousing 页面,然后单击 New Warehouse 打开 Create a Warehouse 窗格: 从 NoSQL 数据库创建 SQL 报告

    点击查看大图

    关闭 [x]

    从 NoSQL 数据库创建 SQL 报告

  2. 选择您之前创建的 incidents 数据库,提供您的 IBM ID 和密码(它们应该与您用来访问 Bluemix 帐户的验证凭据相匹配),然后单击 Create Warehouse

在创建 Cloudant 仓库后,将会创建一个新的 IBM dashDB 服务实例,并且 JSON 文档已转换:

从 NoSQL 数据库创建 SQL 报告

点击查看大图

关闭 [x]

从 NoSQL 数据库创建 SQL 报告

第 7 步. 访问新的 IBM dashDB 实例中的仓库

  1. 单击 Visit warehouse 在 dashDB 中打开该仓库,以便确认已经加载了 JSON 数据的关系表。
  2. 在 dashDB Web 控制台中的 Tables 页面上,在您的模式下访问 Cloudant 在第 6 步中创建的表: 从 NoSQL 数据库创建 SQL 报告

    点击查看大图

    关闭 [x]

    从 NoSQL 数据库创建 SQL 报告

  3. 对于每个表,单击 Table Definition 选项卡并检查定义: 从 NoSQL 数据库创建 SQL 报告

    点击查看大图

    关闭 [x]

    从 NoSQL 数据库创建 SQL 报告

  4. 单击 Browse Data 选项卡确认已从 JSON 来源加载数据。
  5. 获取您的 dashDB 实例的连接信息:
    1. 在 dashDB Web 控制台左侧的菜单中,选择 Connect > Connection Information
    2. 对于 Connection without SSLConnection with SSL (无论您更喜欢哪一项),记下主机名、用户 ID 和密码: 从 NoSQL 数据库创建 SQL 报告

      点击查看大图

      关闭 [x]

      从 NoSQL 数据库创建 SQL 报告

第 8 步. 配置 Embeddable Reporting 服务

  1. 在 Bluemix 仪表板中,选择第 2 步中创建的应用程序。
  2. 单击绑定到该应用程序的 Embeddable Reporting 服务实例。
  3. 在 Embeddable Reporting 服务页面上,对于 Repository URI ,键入或粘贴 Cloudant NoSQL DB 的 URL(您已在第 4 步中保存它们): 从 NoSQL 数据库创建 SQL 报告

    点击查看大图

    关闭 [x]

    从 NoSQL 数据库创建 SQL 报告

    单击 START
  4. 单击 New Package ,提供 dashDB 的 JDBC URIUser NameUser Password 等连接细节。

    对于 SSL 连接,输入 jdbc:db2://hostname:50001/BLUDB:sslConnection=true; 作为 JDBC URI。否则使用 jdbc:db2://hostname:50000/BLUDB

    从 NoSQL 数据库创建 SQL 报告 单击 CREATE
  5. 在 Data Sources 页面上,单击 Name 列中的 datasource 链接来确认 IBM dashDB 数据来源已添加: 从 NoSQL 数据库创建 SQL 报告

    点击查看大图

    关闭 [x]

    从 NoSQL 数据库创建 SQL 报告

  6. 在 Visualizations 页面中,单击 New Visualization
  7. 浏览并打开您之前下载的纵列可视化包(一个 .zip 文件)(如果之前未下载它,可以立即获取它),然后单击 Open
  8. 使用可视化表示的默认名称,添加一段可选的描述,然后单击 CREATE 。现在您可以看到该可视化包已在 Visualizations 页面上的 Available Packages 下列出: 从 NoSQL 数据库创建 SQL 报告

    点击查看大图

    关闭 [x]

    从 NoSQL 数据库创建 SQL 报告

第 9 步. 创建基于 SQL 的报告

现在您将使用 Embeddable Reporting 服务,从您的 dashDB 实例中的表列数据创建基于 SQL 的报告。您将生成两个报告:报告 1 检查在所有年份中报告的犯罪事故数量和警务区,报告 2 显示在每个犯罪类别中报告的犯罪事故,并按照找到的判决结果来堆叠它们。

  1. 提示:在您浏览器中允许弹出窗口。

    在 Bluemix 仪表板中,打开您的应用程序并选择 Embeddable Reporting 服务。
  2. 在 Report Definitions 页面上,单击 New Report Definition从 NoSQL 数据库创建 SQL 报告

    点击查看大图

    关闭 [x]

    从 NoSQL 数据库创建 SQL 报告

  3. 等到您被重定向到 Embeddable Reporting 控制台。

生成报告 1:一个基于 SQL 的柱状图,表示每年每个警务区内报告的事故数量。

  1. 在控制台中的 New 对话框中,选择 SQL Blank ,以便能够在以后将可视化表示添加到查询中,然后单击 OK
  2. 选择数据来源(也就是您的 dashDB 连接),然后单击 OK
  3. 在 SQL 对话框中,键入以下 SQL 语句:

    select * from &quot;incidents&quot;

    单击 Validate 验证您的查询,然后单击 OK

    加载数据。

  4. 打开 Embeddable Reporting 控制台左侧窗格中的 Data Items 选项卡(通过单击该图标),以便查看加载的查询。
  5. 在主菜单中,选择 View > Queries ,然后双击右侧窗格中的 Query1
  6. 在左侧窗格中,打开 Toolbox 选项卡(单击该图标),将 Data Item 拖到右侧窗格中的 Data items 列表中,以便为您的报告构建一个新数据项。数据项可以是从查询中加载的原始数据项中未包含的新聚合。
  7. 将新数据项重命名为 count_incidents ,输入 count([SQL1].[incidntnum]) 作为 Expression Definition 。此表达式将统计犯罪事故总数。单击绿色的复选标记来让该表达式生效。要了解这里使用的 summarize 选项的更多信息,可单击 f(x) 图标: 从 NoSQL 数据库创建 SQL 报告
  8. 单击 OK 创建新数据项。
  9. 以类似方式,从日期中创建一个名为 year 的新数据项,将它定义为 substr([SQL1].[date],1,4) (它基于 JSON/dashDB 表中的 YYYY-MM-DDHH:MM:SS 日期格式。)
  10. 在主菜单中,选择 View > Report Pages 。双击 Report Pages 列表中的 Page1
  11. 打开 Toolbox 选项卡并将一个 Visualization 拖到右侧窗格上: 从 NoSQL 数据库创建 SQL 报告
  12. 从可用的可视化列表中选择 Column 图表,然后单击 OK
  13. 在 Object and Query Names 对话框中,在 Query name 字段中选择 Query1 ,将查询映射到柱状图,然后单击 OK
  14. 现在定义该报告,将 3 个数据项拖到图表左侧的字段中:使用 count_incidents 数据项作为 Y 轴或值,使用 Year 作为 X 轴或类别,使用 PdDistrict 作为系列: 从 NoSQL 数据库创建 SQL 报告

    点击查看大图

    关闭 [x]

    从 NoSQL 数据库创建 SQL 报告

  15. Categories 部分选择 year 数据项。在左下侧的特性窗格中,将排序定义为升序,然后单击 OK从 NoSQL 数据库创建 SQL 报告

    点击查看大图

    关闭 [x]

    从 NoSQL 数据库创建 SQL 报告

  16. 从工具栏,单击 Run Report 按钮来运行报告和生成图表。该图表显示了每年在旧金山地区的每个警务区内发生的事故数: 从 NoSQL 数据库创建 SQL 报告

    点击查看大图

    关闭 [x]

    从 NoSQL 数据库创建 SQL 报告

生成报告 2:显示了每个类别的事故数量和为这些事故找到的判决结果的一种堆叠柱图

现在,您第二个报告被创建为一种显示了事故数量和判决结果的堆叠柱图。 重复您生成报告 1 时的第 1-13 步,然后继续执行以下步骤:

  1. 基于您之前创建的新数据项来定义该报告。使用 count_incidents 作为 Y 轴或值,使用 category 作为 X 轴或类别,然后使用 resolution 作为系列。
  2. 选择该图表并将 Stacked 图表特性更改为 Yes
  3. 单击 Run Report 按钮生成一个堆叠柱图: 从 NoSQL 数据库创建 SQL 报告

    点击查看大图

    关闭 [x]

    从 NoSQL 数据库创建 SQL 报告

生成报告后,可单击工具栏上的 Save 按钮来保存它。然后可以直接从 Embeddable Reporting 服务的 Report Definitions 页面访问您保存的报告:

从 NoSQL 数据库创建 SQL 报告

点击查看大图

关闭 [x]

从 NoSQL 数据库创建 SQL 报告

结束语

在本教程中,您将存储在 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:

  • Embeddable Reporting 此服务使您能够在 Bluemix 环境内运行 IBM Cognos Business Intelligence 报告。
  • Cloudant NoSQL DB 此服务使您能够访问一个始终在线、全面托管的 NoSQL JSON 数据层。
  • dashDB 此数据库是一个数据仓库和分析解决方案,使您能够快速将数据转移到一种下一代内存型纵列数据库中,使用数据库中的算法开始运行复杂的分析查询,以及与 R 语言及其他分析和商业智能工具相集成。

相关主题: Python

正文到此结束
Loading...