Vertica 和 Data-Planet Web Service:技术探索¶
关于本文档¶
本文档解释如何使用 Data-Planet Web Services 将公共数据包含到 Vertica 分析数据库中。可以从 Data-Planet 仓库提取第三方数据集,如人口普查、金融和交通数据。可以将这些数据集加载到 Vertica 中以改进数据库分析。
Data-Planet 概述¶
Data-Planet 是一个 Web 服务 (SaaS),提供对各种组织的数据集仓库的访问。仓库中的数据按时间顺序组织和结构化,也称为时间序列数据。这种按时间组织的结构允许用户比较和对比不同来源的数据,并运行可视化以解释相关性。仓库中的数据随着新数据集的添加而定期增长。Data-Planet 在源端信息变化时保持数据更新。
我们测试了在云端将 Data-Planet 数据集加载到 Vertica 7.2.x 中。
请求 Data-Planet¶
Data Planet 产品和服务可通过 SAGE Publishing 获取。要请求演示或试用 Data-Planet,请联系 SAGE:访问 Data-Planet 网站,点击 Contact Us。
在 Vertica 中使用 Data-Planet 数据集¶
本文档讨论在 Vertica 中使用 Data-Planet 数据集进行分析的两个主要用例:
使用 Data-Planet 托管服务¶
将 Vertica 数据托管在 Data-Planet 仓库中。然后使用 Data-Planet 界面将您的数据与统计数据集集合进行比较和关联。Data-Planet 团队将与您合作将数据加载到仓库中,并在数据集级别控制对信息的访问,确保只有您组织中的人员可以看到数据。
包含 Data-Planet 数据集¶
将公共数据包含到 Vertica 分析中,将数据集从 Data-Planet 仓库导出为 JSON 和 CSV 格式。然后将这些数据集导入到 Vertica 数据库中。
从 Data-Planet 导出数据到 Vertica 有两种方式: 1. 使用 Data-Planet 用户界面导出数据集 2. 使用 Data-Planet REST API 导出数据集
Data-Planet 数据集可以导出为 Excel、CSV、XML 和 JSON 格式。推荐使用 CSV 或 JSON 格式,原因如下:
- JSON 格式的数据可以使用 COPY 命令和 JSON 解析器 (fjsonparser) 加载到列式表或 flex 表中
- CSV 格式的数据可以使用 CSV 解析器 (fcsvparser) 加载
- Vertica 不能直接使用 COPY 命令加载 XML 文件,也没有 XML 格式的解析器
使用 Data-Planet 用户界面导出数据集¶
Data-Planet 用户界面允许从数据集之间的关联下载结果集。要下载 Excel、CSV 或 XML 格式的聚合数据,点击 Data-Planet 界面上的 Export 图标。推荐以 CSV 格式下载结果集。
注:Vertica 不能直接使用 COPY 命令加载 XML 文件。如果有 XML 文件,必须使用应用程序将其转换为 JSON 或 CSV 格式。
使用 Data-Planet REST API 导出数据集¶
Data-Planet REST API 允许导出 Data-Planet 仓库中包含的数据集。也可以下载数据集的数据子集和描述数据集的元数据。可以使用 REST API 以 XML 或 JSON 格式导出数据。推荐使用 JSON 格式。注意 REST API 不支持将数据摄取到仓库中。
使用 REST API 导出数据集时的注意事项:
- 评估版本的最大记录数为 1000。如果需要更多记录,必须联系 Data-Planet 团队请求增加
- 一次 API 调用只能访问一个指标的数据
- API 调用不能用于导出数据集之间的关联
- 如果 API 索引未更新,通过 API 看到的数据可能与用户界面中的数据不匹配
Data-Planet 有三个 REST API 调用可用:
- Database API Call:识别仓库中数据集和文档的元数据信息
- Dataset API Call:基于输入的文本搜索整个仓库中的数据集和文档
- Data API Call:从仓库中的数据集中提取数据子集
参数总结¶
通用请求和查询参数¶
| 参数 | 描述 |
|---|---|
| q | 搜索的主查询,支持原始输入字符串。引号括起的文本被视为短语 |
| start | 分页结果,第一条记录偏移量为 0 |
| rows | 请求返回的最大文档数,最大支持 1000 |
| fl | 字段列表,指定要返回的字段集。用空格、逗号或 + 分隔,* 表示所有字段 |
| wt | 输出格式,XML 或 JSON,默认为 XML |
| defType | 指定查询解析器处理查询的方式 |
Facet 参数¶
设置 facet=true 可启用 facet 计数:
| 参数 | 描述 |
|---|---|
| facet.field | 被视为 facet 以生成计数的字段,可指定多个 |
| facet.mincount | 响应中包含的 facet 字段的最小计数,默认为 0 |
| facet.limit | 返回的 facet 字段的最大约束数,负值表示无限,默认为 100 |
Extended DisMax (eDisMax) 查询解析器参数¶
| 参数 | 描述 |
|---|---|
| q | 查询的原始输入字符串 |
| qf | 查询字段参数,指定要执行查询的索引字段 |
| df | 默认字段参数,覆盖 SchemaXML 中定义的默认字段 |
Data API 调用¶
数据网络服务调用以 XML 或 JSON 格式返回 Data-Planet 仓库中的数据子集。XML 是默认格式,但推荐与 Vertica 配合使用 JSON。至少需要以下参数:
database_id:仓库中数据集的唯一代码datetype_id:结果中使用的日期类型geo_id:结果中使用的数据层次组织
将 Data-Planet 数据集加载到 Vertica¶
使用 Flex Tables 导入¶
Vertica flex tables 功能允许加载数据而无需定义列或 schema。Flex tables 支持 SQL 查询和内置分析,与常规表一样。
JSON 数据加载示例:
- 使用 database API 调用导出元数据,保存为 AirlineOnTimeMetadata.json。
- 使用 data API 调用导出数据子集,保存为 AirlineOnTimeData.json。
- 创建 flex 表:
- 使用 fjsonparser 加载元数据:
- 加载数据:
- 查询元数据中的列:
- 关联查询数据和元数据,查询各航空公司月度准点率:
- 使用 COMPUTE_FLEXTABLE_KEYS_AND_BUILD_VIEW 填充 _keys 和 _view 表:
- 查询 flex table 视图:
CSV 数据加载示例:
- 创建 flex 表:
- 使用 fcsvparser 加载(遵循 RCF4180 标准 CSV 格式,逗号分隔,双引号括起):
- 使用 fdelimitedparser 加载(需要先去除 CSV 文件中的双引号):
使用 COPY 语句导入¶
SQL COPY 语句从存储在节点上的文件批量加载数据到数据库。也可以使用 COPY LOCAL 选项从客户端文件流式传输数据。
服务器端 COPY 示例:
=> COPY dataplanet.AirlineOnTimeTest FROM '/home/dbadmin/data/AirlineOnTimeData.csv'
SKIP 1 DELIMITER ',' ENCLOSED BY '"'
REJECTED DATA '/home/dbadmin/data/REJECTIONS'
EXCEPTIONS '/home/dbadmin/data/EXCEPTIONS' DIRECT;
使用 fcsvparser:
=> COPY dataplanet.AirlineOnTimeTest FROM '/home/dbadmin/data/AirlineOnTimeData.csv'
PARSER fcsvparser(reject_on_duplicate=true);
使用 fjsonparser:
=> COPY dataplanet.AirlineOnTimeTest FROM '/home/dbadmin/data/AirlineOnTimeData.json'
PARSER fjsonparser(flatten_arrays=TRUE, start_point='row', reject_on_duplicate=true);
COPY LOCAL 示例(客户端本地文件):
=> COPY dataplanet.AirlineOnTimeTest FROM LOCAL 'C:\Users\Administrator\Downloads\AirlineOnTimeData.csv'
SKIP 1 DELIMITER ',' ENCLOSED BY '"'
REJECTED DATA 'C:\Users\Administrator\Downloads\REJECTIONS'
EXCEPTIONS 'C:\Users\Administrator\Downloads\EXCEPTIONS' DIRECT;
使用 ETL 工具导入¶
可以使用与 Vertica 集成的 ETL 工具将数据加载到数据库中。这些产品使用 Vertica JDBC 或 ODBC 驱动程序连接到 Vertica。定义 ETL 流程使用 Data-Planet API 从仓库拉取数据集,然后将输出加载到数据库中。也可以使用 ETL 工具加载 CSV 或 JSON 格式的数据。将工具配置为使用 COPY 语句高效地流式传输数据。连接中的 Vertica 用户必须是超级用户,或具有 schema 的 USAGE 权限和表的 INSERT 权限。
原文来源:https://www.vertica.com/kb/DataPlanet/Content/Partner/DataPlanetWebService.htm