Vertica 集成 OBIEE¶
概述¶
Oracle Business Intelligence Enterprise Edition (OBIEE) 是一个商业智能平台,提供即席查询、交互式仪表盘和移动分析等功能。OBIEE 帮助业务分析数据以制定战略业务决策。OBIEE 可用作 Windows 32 位或 64 位应用程序,使用 Vertica ODBC 驱动程序连接到 Vertica 数据库。
最新测试版本¶
| 软件 | 版本 |
|---|---|
| OBIEE | OBIEE 12c (12.2.1.4) 64-bit |
| OBIEE 平台 | Windows Server 2019 |
| Vertica 客户端 | Vertica ODBC 12.0.0 |
| Vertica 服务器 | Vertica Analytic Database 12.0.0 |
OBIEE 连接指南¶
安装 OBIEE¶
OBIEE 是 Oracle Fusion Middleware 软件组的一部分。安装前请查阅 Oracle Fusion Middleware 系统要求和规范页面了解系统要求和先决条件。
从 Oracle Business Intelligence 12c 下载页面下载最新版本。必须以管理员身份安装 OBIEE。
安装 Vertica 客户端驱动¶
在通过 OBIEE 连接到 Vertica 前,必须安装 Vertica 客户端驱动包,其中包括 OBIEE 用于连接 Vertica 的 ODBC 客户端驱动。
- 导航到 Vertica 网站上的 Client Drivers 页面。
- 下载与 Vertica 服务器版本兼容的客户端包。
- 按照平台上对应的安装说明进行安装:
- Windows 客户端驱动安装
- Linux 和类 Unix 平台的客户端安装
- 按照文档创建 ODBC 数据源名称 (DSN)。
注意:有关客户端和服务器兼容性的更多信息,请参阅 Vertica 文档中的"客户端驱动和服务器版本兼容性"。
在 Windows 上连接 OBIEE 到 Vertica¶
安装 VMart 示例数据库¶
本文档使用 Vertica VMart 示例数据库创建从 OBIEE 到 Vertica 的连接。可按需安装 VMart。VMart 示例数据库包含三个模式:Public、Online_Sales 和 Store。
创建新的存储库 (Repository)¶
- 进入
Oracle_Home > user_projects > domains > bi > bitools > bin目录,运行admintool。 - 选择 File > New Repository。
- 输入新存储库详情:名称、位置、密码。
- 点击 Next。
- 选择 Vertica 作为数据源连接类型,点击 Next。
- 选择要从数据源导入的元数据类型和对象。
- 点击 Finish。导入的模式和表将显示在物理层中。
创建表连接 (Table Joins)¶
- 右键单击 Physical 部分的表,选择 Update Row Count。
- 再次右键单击表,选择 Physical Diagram > Selected Object(s) Only。
- 选择 New Join 图标建立连接,命名连接并保存。
创建业务模型 (Business Model)¶
- 右键单击 Business Model and Mapping 部分,选择 New Business Model。
- 输入业务模型名称。
创建主题域 (Subject Area)¶
- 右键单击 Presentation 部分,选择 New Subject Area。
- 命名主题域。
创建业务模型图¶
- 将有物理连接的表拖动到 Business Model and Mapping 部分。
- 右键单击所选表,选择 Business Model Diagram > Selected Tables and Direct Joins。
- 保存业务模型图。
创建 RPD 文件¶
- 将表从 Business Model and Mapping 部分拖动到 Presentation 部分。
- 保存 RPD 文件。
上传 RPD 文件¶
使用 WebLogic 脚本命令 uploadrpd 上传存储库:
uploadrpd -I <RPDname> [-W <RPDpwd>] -SI <service_instance> -U <cred_username> [-P <cred_password>] [-S <hostname>] [-N <port_number>] [-SSL] [-H]
该脚本位于:<Oracle_Home>/user_projects/domains/bi/bitools/bin
在 Linux 上连接 OBIEE 到 Vertica¶
- 从 Vertica Client Drivers 页面下载 Linux 平台的 ODBC 驱动。
- 创建
vertica.ini文件。OBIEE 12c 12.2.1.4 之前的版本:
ODBCInstLib=/home/obi/Oracle/Middleware/Oracle_Home/bi/common/ODBC/Merant/7.1.4/lib/libodbcinst.so
ErrorMessagesPath=/home/obi/vertica/opt/vertica/lib64
LogPath=/tmp/temp
LogLevel=6
DriverManagerEncoding=UTF-16
OBIEE 12c 12.2.1.4 及更新版本(Merant 已替换为 oracle.bi.datadirect.odbc):
ODBCInstLib=/home/obi/Oracle/Middleware/Oracle_Home/bi/common/ODBC/oracle.bi.datadirect.odbc/7.1.4/lib/libodbcinst.so
ErrorMessagesPath=/home/obi/vertica/opt/vertica/lib64
LogPath=/tmp/temp
LogLevel=6
DriverManagerEncoding=UTF-16
- 在
odbc.ini文件中创建 DSN:
vertica=Vertica DB
Driver = /home/obi/vertica/opt/vertica/lib64/libverticaodbc.so
Server=XX.XX.XX.XXX
Database=vertica_db
Port=5433
UserName=dbadmin
Password=vdb
Locale=en_US
OdbcConformanceLevel=3.0
ODBC64SqlHandleSize=64
ODBC64SqlLenSize=64
RebrandedLib=TRUE
- 在
odbcinst.ini文件中指定驱动位置:
- 编辑
obis.properties文件,位于/home/obi/Oracle/Middleware/Oracle_Home/user_projects/domains/bi/config/fmwconfig/bienv/OBIS/:
OBIEE 12c 12.2.1.4 之前:
export LD_LIBRARY_PATH=/home/obi/Oracle/Middleware/Oracle_Home/bi/common/ODBC/Merant/7.1.4/lib:/home/obi/vertica/opt/vertica/lib64:$LD_LIBRARY_PATH
export VERTICAINI=/home/obi/vertica/opt/vertica.ini
export ODBCINI=/home/obi/Oracle/Middleware/Oracle_Home/user_projects/domains/bi/config/fmwconfig/bienv/core/odbc.ini
OBIEE 12.2.1.4 及更新版本:
export LD_LIBRARY_PATH=/home/obi/Oracle/Middleware/Oracle_Home/bi/common/ODBC/oracle.bi.datadirect.odbc/7.1.4/lib:/home/obi/vertica/opt/vertica/lib64:$LD_LIBRARY_PATH
export VERTICAINI=/home/obi/vertica/opt/vertica.ini
export ODBCINI=/home/obi/Oracle/Middleware/Oracle_Home/user_projects/domains/bi/config/fmwconfig/bienv/core/odbc.ini
- 重启 OBIEE 服务,然后上传 RPD 文件。
OBIEE 性能优化¶
数据库功能设置¶
连接 Vertica 时,可在 OBIEE 中自定义支持的功能列表,以优化效率。有两种修改方式:
- 在 Database 对话框的 Features 选项卡中勾选或取消勾选功能值。
- 在
Oracle_Bi_Home\server\Config\DBFeatures.INI文件中添加或删除feature_name_SUPPORTED行。
推荐的数据库功能设置¶
| 功能 | 默认值 | 推荐值 | 操作 | 函数/运算符 |
|---|---|---|---|---|
| CALENDAR_EXTRACT_DAY_OF_WEEK_SUPPORTED | ON | ON | 下推 | DAY_OF_WEEK() |
| CALENDAR_EXTRACT_DAY_OF_YEAR_SUPPORTED | ON | ON | 下推 | DAY_OF_YEAR() |
| CALENDAR_EXTRACT_HOUR_SUPPORTED | ON | ON | 下推 | HOUR() |
| CALENDAR_EXTRACT_MINUTE_SUPPORTED | ON | ON | 下推 | MINUTE() |
| CALENDAR_EXTRACT_MONTH_SUPPORTED | ON | ON | 下推 | MONTH() |
| CALENDAR_EXTRACT_QUARTER_OF_YEAR_SUPPORTED | OFF | ON | 下推 | QUARTER_OF_YEAR() |
| CALENDAR_EXTRACT_SECOND_SUPPORTED | OFF | ON | 下推 | SECOND() |
| CALENDAR_EXTRACT_WEEK_OF_YEAR_SUPPORTED | ON | ON | 下推 | WEEK_OF_YEAR() |
| CALENDAR_EXTRACT_YEAR_SUPPORTED | ON | ON | 下推 | YEAR() |
| TIMESTAMP_ADD_SUPPORTED | ON | ON | 下推 | TIMESTAMPADD() |
| TIMESTAMP_DIFF_SUPPORTED | ON | ON | 下推 | TIMESTAMPDIFF() |
| BETWEEN_SUPPORTED | ON | ON | 下推 | BETWEEN |
| LIKE_SUPPORTED | ON | ON | 下推 | LIKE |
| NULL_SUPPORTED | ON | ON | 下推 | IS NULL |
| BIT_LENGTH_SUPPORTED | OFF | ON | 下推 | BIT_LENGTH() |
| CHAR_LENGTH_SUPPORTED | OFF | ON | 下推 | CHAR_LENGTH() |
| OCTET_LENGTH_SUPPORTED | OFF | ON | 下推 | OCTET_LENGTH() |
| POSITION_SUPPORTED | OFF | ON | 下推 | POSITION() |
| TRIM_SUPPORTED (BOTH/LEADING/TRAILING) | OFF | ON | 下推 | TRIM |
| BOTTOMN_SUPPORTED | OFF | ON/OFF | BOTTOMN | |
| RANK_SUPPORTED | OFF | ON/OFF | RANK | |
| TOPN_SUPPORTED | OFF | ON/OFF | TOPN | |
| MOD_SUPPORTED | OFF | ON | 下推 | MOD |
| RAND_SUPPORTED | OFF | ON | RAND | |
| COUNT_DISTINCT_SUPPORTED | ON | ON | 下推 | COUNT DISTINCT |
| FIRST_SUPPORTED | OFF | ON | 下推 | FIRST_VALUE() |
| LAST_SUPPORTED | OFF | ON | 下推 | LAST_VALUE() |
| MEDIAN_SUPPORTED | OFF | ON | 下推 | MEDIAN() |
| STDDEV_POP_SUPPORTED | OFF | ON | 下推 | STDDEV_POP() |
| COUNT_STAR_SUPPORTED | ON | OFF | COUNT(*) | |
| UNION_SUPPORTED | ON | ON | 下推 | UNION |
| UNION_ALL_SUPPORTED | ON | ON | 下推 | UNION ALL |
| INTERSECT_SUPPORTED | OFF | ON | 下推 | INTERSECT |
| EXCEPT_SUPPORTED | OFF | ON | 下推 | EXCEPT |
| HAVING_SUPPORTED | OFF | ON | HAVING | |
| IN_SUBQUERY_SUPPORTED | OFF | ON | WHERE IN | |
| EXISTS_SUBQUERY_SUPPORTED | ON | ON | 下推 | WHERE EXISTS |
| LEFT_OUTER_JOIN_SUPPORTED | ON | ON | 下推 | Left Outer Join |
| FULL_OUTER_JOIN_SUPPORTED | OFF | ON | 下推 | Full Outer Join |
| NESTED_OUTER_JOIN_SUPPORTED | OFF | ON | 下推 | 多表内外连接 |
| DERIVED_TABLES_SUPPORTED | ON | ON | 下推 | 子查询派生表 |
| GROUP_BY_EXPR_SUPPORTED | ON | ON | 下推 | GROUP BY 表达式 |
| DISTINCT_SUPPORTED | ON | ON | 下推 | DISTINCT |
| NULL_VALUES_SORT_FIRST | OFF | ON | ORDER BY NULLS FIRST/LAST | |
| EXPRESSIONS_IN_ORDERBY_SUPPORTED | OFF | ON | CASE with ORDER BY | |
| STDDEV_SAMP_SUPPORTED | OFF | OFF | 下推 | STDDEV() |
| ABS_SUPPORTED | ON | ON | 下推 | ABS() |
| ACOS_SUPPORTED | ON | ON | 下推 | ACOS() |
| ASIN_SUPPORTED | ON | ON | 下推 | ASIN() |
| ATAN_SUPPORTED | ON | ON | 下推 | ATAN() |
| ATAN2_SUPPORTED | ON | ON | 下推 | ATAN2() |
| CEILING_SUPPORTED | ON | ON | 下推 | CEILING |
| COS_SUPPORTED | ON | ON | 下推 | COS |
| EXP_SUPPORTED | ON | ON | 下推 | EXP |
| FLOOR_SUPPORTED | ON | ON | 下推 | FLOOR |
| LOG_SUPPORTED | ON | ON | 下推 | LOG |
| LOG10_SUPPORTED | ON | ON | 下推 | LOG10 |
| POWER_SUPPORTED | ON | ON | 下推 | POWER |
| ROUND_SUPPORTED | ON | ON | 下推 | ROUND |
| SIN_SUPPORTED | ON | ON | 下推 | SIN |
| SQRT_SUPPORTED | ON | ON | 下推 | SQRT |
| TAN_SUPPORTED | ON | ON | 下推 | TAN |
| TRUNCATE_SUPPORTED | ON | ON | 下推 | TRUNCATE |
| SUM/AVG/COUNT/MIN/MAX_SUPPORTED | ON | ON | 下推 | 聚合函数 |
OVER 分析函数和日期文字也在下推支持范围内。
OBIEE 优化设置¶
如果遇到 OBIEE 数据类型包装问题导致显示错误值,可使用以下解决方法:
在 OBIEE Analytics 环境中:
1. 进入 Criteria > 右键单击列 > Edit Formula。
2. 点击 Custom Headings。
3. 使用 cast 函数转换数据类型:
-- 整数转换
cast("TRAFFICO_NON_VALORIZZATO"."EntityId" as Numeric(9,0)) as Integer
-- 时间戳转换
cast("TRAFFICO_NON_VALORIZZATO"."TimeKey" as Timestamp)
必须始终使用 AL32UTF8 字符集创建 Repository 数据库。
使用 Explain Plan 分析查询¶
EXPLAIN SELECT sales_quantity, sales_dollar_amount, transaction_type, cc_name
FROM online_sales.online_sales_fact
INNER JOIN online_sales.call_center_dimension
ON (online_sales.online_sales_fact.call_center_key = online_sales.call_center_dimension.call_center_key
AND sale_date_key = 156)
ORDER BY sales_dollar_amount DESC;
调整结果集行数限制¶
编辑 instanceconfig.xml 文件中的 <ResultRowLimit> 标签:
OBIEE Directory > Oracle_Home > user_projects > domains > bi > config > fmwconfig > biconfig > OBIPS > instanceconfig.xml
处理 OBIEE 并行查询问题¶
如果遇到 OBIEE 查询在 Vertica 中并行执行的问题:
- 登录 OBIEE 安装机器。
- 导航到 Progress DataDirect Driver Manager 的 lib 目录(例如
/home/oracle/middlewarehome/Oracle_BI1/common/ODBC/Merant/7.1.6/lib)。 - 将
odbccurs.so重命名为odbccurs.so.OLD。 - 重启所有 OBIEE 服务。
- 运行以下命令确认游标库不再加载:
故障排查¶
表视图错误¶
如果在 Oracle BI Administration Tool 中查看表数据时遇到以下错误:
解决方法:
- 在 Physical 层右键单击 Connection Pool,选择 Properties。
- 勾选 Require fully qualified table names。
- 点击 OK。现在应该可以查看表数据了。
已知限制¶
- CHAR、VARCHAR 和 LONGVARCHAR 数据类型最多显示 32678 个字符。
- 整数类型超过 14 位后会四舍五入。
- DECIMAL 类型不直接显示值,需选择 Override Default Data Format 选项,精度最多 15 位。
- TIME、TIMESTAMP、TIMETZ 和 TIMESTAMPTZ 类型的毫秒部分会被截断。
- TIMETZ 和 TIMESTAMPTZ 类型的时区信息不显示。
Vertica QuickStart for OBIEE¶
Vertica QuickStart for OBIEE 是一个示例 BI 应用程序,以 OBIEE 仪表盘集合的形式实现,由 Vertica Analytic Database 驱动。仪表盘展示示例零售数据以供分析。
下载¶
从以下位置下载 QuickStart: https://www.vertica.com/quickstart/vertica-quickstart-obiee/
要求¶
- Vertica 数据库服务器(标准安装 VMart 示例数据库)
- Vertica 客户端驱动
- OBIEE 11.1.1.7.0 或更高版本
测试环境:OBIEE 11.1.1.7.0 + Vertica 7.2.2(7.2.x 系列均可使用)。
安装和设置¶
- 安装 Vertica 数据库服务器:从 Vertica Community Edition 页面下载并安装。
- 安装 VMart 示例数据库:按照 Vertica 文档中的说明安装。
- 安装 OBIEE:从 Oracle Business Intelligence 12c 下载页面下载并安装。
- 下载并安装 Vertica 客户端驱动:从 Vertica Client Drivers 页面下载对应操作系统和版本的客户端包。
- 创建 ODBC DSN:
- 64-bit DSN:
Start > Control Panel > Administrative Tools > Data Sources (ODBC) - 32-bit DSN:
C:\Windows\SysWOW64\odbcad32.exe - 添加 Vertica 驱动,填写 DSN 名称、服务器、数据库、用户名。
部署 QuickStart¶
QuickStart 下载包包含:
VMart BI0011.rpd:RPD 存储库文件(元数据和数据模型定义)VerticaQuickStartforOBIEE.catalog:目录文件(报告、提示和过滤器)
上传 RPD 文件:
- 确保 OBIEE 服务器正在运行。
- 导航到
http://hostmachineIP:7001/em。 - 登录后,选择 Business Intelligence > coreapplication > Deployment > Repository。
- 点击 Lock and Edit Configuration。
- 浏览选择 RPD 文件,输入密码
Admin123。 - 点击 Activate Changes,然后重启。
部署 VMart OBIEE 目录:
- 导航到
http://hostmachineIP:9704/analytics。 - 登录后点击 Catalog。
- 选择 Shared Folders > Dashboards。
- 点击 Unarchive 选项卡,浏览选择 catalog 文件。
示例仪表盘¶
QuickStart 提供以下示例仪表盘: - Executive Dashboard:业务数据高级概览 - Online Sales Dashboard:在线销售业绩概览 - Store Sales Dashboard:实体店销售概览 - Call Center/Employee Overview Dashboard:员工区域数据和呼叫中心信息
参考¶
原文来源:https://www.vertica.com/kb/Configuring-OBIEE-for-Optimal-Performance-with-HPE-Vertica/Content/Partner/Configuring-OBIEE-for-Optimal-Performance-with-HPE-Vertica.htm