Vertica 集成 Tableau 完整指南¶
本文整合了 Vertica 官方 KB 的四篇 Tableau 集成文章:连接指南、技巧与最佳实践、以及两个 QuickStart 示例,合并为一篇结构化的完整参考。
关于 Vertica 连接指南¶
Vertica 连接指南提供将第三方合作伙伴产品连接到 Vertica 的基本说明,基于 Vertica 与合作伙伴产品的实际测试。
最新测试版本¶
| 组件 | 版本 |
|---|---|
| Tableau Desktop | 2023.1.4(Windows) |
| Tableau Server | 2023.1.5(Windows / Linux) |
| Tableau Cloud | 2023.3.0(SaaS) |
| Tableau Bridge Client | 2023.2.1(Windows 64-bit) |
| Vertica 客户端 | ODBC Driver 23.3.0 |
| Vertica 服务器 | Vertica Analytic Database 23.3.0-1 |
兼容性说明:Vertica ODBC 驱动向前兼容,较新版本的客户端可连接较旧版本的服务器,反之亦可(需确认具体版本)。详情见 Client Driver and Server Version Compatibility。
1. Tableau 产品体系与 Vertica 连接架构¶
1.1 Tableau 产品线¶
Tableau 提供完整的多层 BI 产品栈:
| 产品 | 部署模式 | 适用场景 |
|---|---|---|
| Tableau Desktop | Windows / MacOS 桌面 | 分析师创建可视化和交互式仪表板 |
| Tableau Server | 本地或云端自部署 | 多用户协作、共享、权限管控 |
| Tableau Cloud(原 Tableau Online) | SaaS 云端托管 | 免运维的 Server 替代方案 |
| Tableau Public | 免费云端 | 公开数据可视化(无安全/隐私保障) |
| Tableau Mobile | 移动端 | 移动端访问仪表板 |
| Tableau Reader | 桌面(免费) | 离线查看打包的 workbook(不连接数据库) |
1.2 连接架构总览¶
所有到 Vertica 的连接均通过 ODBC 协议实现:
Tableau Desktop ──ODBC──► Vertica 集群
Tableau Server ──ODBC──► Vertica 集群
Tableau Cloud ──► Tableau Bridge ──ODBC──► Vertica 集群
Tableau Mobile ──► Tableau Server ──ODBC──► Vertica 集群
Tableau Reader (离线快照,不连数据库)
关键要点:
- Tableau Desktop / Server 直接通过 ODBC 连接 Vertica,不需要预先创建 DSN
- Tableau Cloud 不能直接访问本地 Vertica,必须通过 Tableau Bridge 客户端作为桥接层
- Tableau Bridge 运行在可访问 Vertica 的机器上,该机器必须安装 Vertica ODBC 驱动
- Tableau Reader 仅打开已经打包数据的
.twbx文件,不涉及数据库连接
2. 环境准备 — ODBC 驱动安装¶
无论使用哪种 Tableau 产品,连接 Vertica 前必须在对应的机器上安装 Vertica ODBC 驱动。
2.1 Windows / MacOS¶
- 访问 Vertica Client Drivers 页面
- 下载与 Vertica 服务器版本兼容的 ODBC 客户端包
- 双击安装程序,选择仅安装 ODBC 驱动即可(客户端包中其他组件如 ADO.NET 等非必需)
从 Tableau 连接到 Vertica 不需要创建 DSN。
2.2 Linux(Tableau Server)¶
- 下载 ODBC 驱动:
- CentOS / RHEL:下载 RPM 包
- Ubuntu:下载 TAR 文件
- 安装:
- 在
/etc/odbcinst.ini中追加驱动定义: - 重启 Tableau Server
Linux 环境同样不需要
odbc.ini和vertica.ini,只需odbcinst.ini中正确定义驱动路径。
3. 连接配置¶
3.1 Tableau Desktop → Vertica¶
- 打开 Tableau Desktop,在 Connect 页面中 To a Server → More... → Vertica
- 输入连接信息:
- Server:Vertica 节点 IP 或主机名
- Port:默认 5433
- Database:目标数据库名
- Authentication:认证方式(默认用户名/密码)
- Username / Password
- 点击 Sign in 连接
- 从 Schema 下拉列表选择要使用的 schema
- 推荐操作:将表拖拽到 Drag tables here 区域来定义数据源(而非写 Custom SQL)——Tableau 会自动识别外键关系
- 选择连接类型:Live(实时连接) 为默认推荐,或 Extract(数据提取)
- 点击 Sheet1 开始可视化分析
3.2 Tableau Cloud → Vertica(通过 Tableau Bridge)¶
Tableau Cloud 不能直接连接本地数据库,需通过 Tableau Bridge 桥接。
前置条件: - 在可访问 Vertica 的机器上安装并激活 Tableau Bridge 客户端 - 该机器上安装 Vertica ODBC 驱动
发布工作簿到 Tableau Cloud:
- 确保 Tableau Bridge 处于活动状态
- 在 Tableau Desktop 中创建/打开工作簿
- Server → Publish Workbook → 登录 Tableau Cloud
- 在发布对话框中,Data Sources 部分点击 Edit
- Publish Type 选择 Publish Separately(默认 "Embedded in workbook" 会转为 Extract,不支持 Live)
- 选择 Maintain connection to a live data source
- 勾选 Show sheets as tabs,点击 Publish
- 切换到 Tableau Cloud,查看 Data Sources 选项卡确认实时连接已建立
发布独立数据源到 Tableau Cloud:
- 确保 Tableau Bridge 活跃
- Tableau Desktop 中:Server → Publish Data Source → 选择要发布的数据源
- 登录 Tableau Cloud
- 勾选 Maintain connection to a live data source
- 点击 Publish
- 此后可在 Tableau Cloud 中使用该数据源创建工作簿,查询实时在 Vertica 中运行
4. 性能优化¶
这是全文最重要的章节。以下优化策略按影响面从大到小排列。
4.1 连接池与并行查询¶
工作原理¶
Tableau 为每个具有唯一连接字符串的数据源创建独立的连接池,默认池内最大连接数为 16。Tableau 自动将独立查询分配到不同连接并行执行,依赖前序结果的查询则串行发送。
多个数据源共享同一连接池的前提:连接字符串(服务器、数据库、用户名/密码)完全相同。若用户名不同,则各使用独立连接池。
按数据源控制连接数:connection-configs.xml¶
在 Tableau Server 或 Desktop 上创建配置文件,精细控制每个 Vertica 实例的连接上限:
- Tableau Server:放置在
config\vizqlserver目录(集群所有节点的该目录均需复制) - Tableau Desktop:放置在 Tableau 安装目录
<?xml version='1.0' encoding='utf-8' ?>
<connection-list>
<connection class='vertica' server='15.126.227.222' dbname='verticanow'>
<limit max='4'></limit>
</connection>
<connection class='vertica' server='172.16.116.45'>
<limit max='10'></limit>
</connection>
<!-- 兜底规则:所有其他 Vertica 连接 -->
<connection class='vertica'>
<limit max='12'></limit>
</connection>
</connection-list>
匹配优先级:server + dbname 精确匹配 > server 匹配 > 类级别兜底。
全局控制连接数¶
# Tableau Desktop:启动时限制所有连接为 2
"C:\Program Files\Tableau\Tableau <version>\bin\tableau.exe" -DConnectionLimit=2
# Tableau Server:全局禁用并行查询(全部串行)
tabadmin set native_api.connection.limit.globallimit 1
Vertica 侧:MaxClientSessions¶
Vertica 每个节点的默认最大并发连接数为 50(受物理 RAM 限制)。如果 Tableau 的并发连接数 + 其他客户端连接数接近此值,会出现连接拒绝。用 MaxClientSessions 参数调整。
实践建议:估算
Tableau并发用户数 × 单用户并发连接数 + 其他应用连接,确保不超MaxClientSessions × 节点数。
4.2 实时连接 vs 数据提取¶
核心原则:优先使用实时连接(Live),仅在特定场景使用数据提取(Extract)。
| 场景 | 推荐方式 | 原因 |
|---|---|---|
| 利用 Vertica 分析能力 | Live | Extract 绕过 MPP 计算引擎 |
| 大数据量(TB 级) | Live | 提取不现实 |
| 使用 RAWSQL 透传函数 | Live | Extract 无法执行数据库函数 |
| 近实时分析需求 | Live | Extract 有延迟 |
| 需要行级安全控制 | Live | Extract 丢失权限模型 |
| 离线访问(无网络) | Extract | Live 不可行 |
| 大量用户访问静态数据 | Extract | 避免重复查询 |
4.3 Join Culling(连接裁剪)¶
这是最容易被忽视但收益极高的优化机制。
Tableau 不会在所有查询中执行数据源定义的全部 JOIN。如果某个 JOIN 不影响当前可视化结果(连接的表未被使用),Tableau 会自动丢弃该 JOIN——这就是 Join Culling。
启用前提: - 数据库中定义了外键关系(推荐方式) - 或 Tableau 中勾选 Data → Assume Referential Integrity
实现方式:
- ✅ 拖拽表构建数据源:Tableau 自动启用 Join Culling
- ❌ 自定义 SQL(Custom SQL):无法使用 Join Culling(因为 Tableau 将整个 Custom SQL 视为子查询)
折中方案:如果确实需要复杂的 SQL,在 Vertica 中创建 VIEW,然后从 Tableau 连接该 VIEW 并拖拽其他表。
4.4 筛选器策略¶
不同类型的筛选器对数据库的查询次数差异巨大,选择不当会严重影响性能。
筛选器卡片(Quick Filter)类型对比¶
| 筛选器类型 | 触发额外查询? | 建议 |
|---|---|---|
| 通配符匹配(Wildcard) | ❌ | 首选 |
| 自定义值列表(Custom Value List) | ❌ | 推荐 |
| 相对日期筛选器 | ❌ | 推荐 |
| 浏览期间日期筛选器 | ❌ | 推荐 |
| 多值列表 / 单值列表 / 紧凑列表 | ✅ | 大量值时加 Apply 按钮 |
| 滑块 / 度量筛选器 | ✅ | 同上 |
| 范围日期筛选器 | ✅ | 优于离散日期 |
上下文筛选器¶
Tableau 将上下文筛选器的结果写入临时表,后续筛选器仅处理该临时表。使用条件:
- 必须显著减小数据集(通常应筛选掉 85% 以上数据)
- 应作用于变化缓慢的维度(频繁变化会导致临时表反复重建)
优先使用 TDC 配置
CAP_QUERY_SUBQUERY_QUERY_CONTEXT=yes将上下文筛选器实现为子查询而非临时表。
操作筛选器(Action Filter)¶
相比筛选器卡片,操作筛选器更加高效:使用可视化元素(如点击柱状图)来筛选其他可视化,Tableau 向 Vertica 发送的查询更少。勾选 "Exclude all values" 可进一步减少查询数量。
筛选器最佳实践总结¶
- 筛选维度:通配符筛选器 > 含 Apply 按钮的列表筛选器;范围值 > 离散值列表;避免 "仅保留" 和 "排除"
- 筛选度量:范围值 > 离散值;大数据源先建 Set 再筛选
- 筛选日期:相对日期 / 范围日期 > 离散日期(离散日期生成大量 OR 条件)
- 跨数据源筛选器:Tableau 向每个数据源分别发送查询,尽量减少使用
4.5 计算下推策略¶
这是性能优化的核心原则:让计算在 Vertica 中执行,而不是在 Tableau 本地执行。
计算执行位置对照¶
在 Vertica 中执行(快) 在 Tableau 本地执行(慢)
───────────────────────── ────────────────────────
非粗体内置函数(ABS, DATE, CONTAINS...) 粗体内置函数(ASCII, CHAR, FIRST, INDEX, ISDATE)
LOD 表达式 表计算(RUNNING_SUM, WINDOW_SUM, MOVING_AVG)
透传函数(RAWSQL_*) Set(集)相关计算
数据源筛选器 上下文筛选器(临时表模式)
LOD 表达式 vs 表计算¶
表计算(Table Calculation)完全在 Tableau 本地执行,大数据集会被整体拉出 Vertica。处理大数据时优先使用 LOD(Level-of-Detail)表达式,LOD 表达式生成的 SQL(包含子查询 + 内连接/交叉连接)在 Vertica 中执行。
透传函数(RAWSQL)¶
当 Tableau 内置函数无法满足需求时,使用透传函数直接向 Vertica 发送 SQL:
-- 例如:计算中位数(Tableau 无内置 MEDIAN)
RAWSQLAGG_REAL("MEDIAN(%1)", [Sales])
-- 取模运算(Tableau 无内置 MOD)
RAWSQL_INT("MOD(%1, %2)", [Value], [Divisor])
为非 DBADMIN 用户启用透传函数:
正则表达式映射¶
Tableau 的正则表达式内置函数会转换为 Vertica 对应函数:
| Tableau 函数 | Vertica 实际执行 | 差异 |
|---|---|---|
REGEXP_MATCH(str, pattern) |
REGEXP_LIKE(str, pattern) |
行为相同 |
REGEXP_REPLACE(str, pattern, rep) |
REGEXP_REPLACE(str, pattern, rep) |
行为相同 |
REGEXP_EXTRACT(str, pattern) |
REGEXP_SUBSTR(str, pattern, 1, 1, '', 1) |
返回第一个捕获组 |
REGEXP_EXTRACT_NTH(str, pattern, n) |
REGEXP_SUBSTR(str, pattern, 1, 1, '', n) |
可指定捕获组索引 |
4.6 仪表板设计技巧¶
- 结合使用操作筛选器 + 数据源筛选器 + 参数,减少筛选器卡片数量
- 避免过多文本表(交叉表),如必须使用则保持小尺寸
- 复杂计算在 Vertica 中做聚合(如 Live Aggregate Projections),Tableau 只负责可视化
- 仪表板设计完成后,隐藏数据源中所有未使用的列——这会显著加快加载速度
- 使用通配符文本框替代含长值列表的下拉框
4.7 Vertica 侧调优¶
Database Designer¶
将 Tableau 生成的查询提交给 Database Designer 以优化物理设计:
-- 找 10 条最慢的查询作为输入样本
SELECT request FROM v_monitor.query_requests
WHERE request_type = 'QUERY'
ORDER BY request_duration_ms DESC LIMIT 10;
-- 找 10 条最高频的查询
SELECT request FROM (
SELECT request, COUNT(request) cnt
FROM v_monitor.query_requests
WHERE request_type = 'QUERY'
GROUP BY request
) T ORDER BY cnt DESC LIMIT 10;
检查生成的投影是否按 WHERE 子句重要列排序,低基数列应进行编码。
Live Aggregate Projections(实时聚合投影)¶
对基表的聚合数据做预计算,Tableau 直接读取聚合结果而非基表原始数据:
-- 创建实时聚合投影后,需刷新数据
SELECT START_REFRESH();
-- 为 Tableau 创建访问视图
CREATE VIEW <projection_name> AS SELECT * FROM <projection_name>;
专用资源池¶
为 Tableau 连接创建独立的资源池,实现负载隔离:
-- 创建专用资源池
GRANT USAGE ON RESOURCE POOL tableau_pool TO tableau;
ALTER USER tableau RESOURCE POOL tableau_pool;
级联资源池(超时保护)¶
设置 RUNTIMECAP 超时后自动切换到辅助池继续执行:
CREATE RESOURCE POOL tableau_pool_backup RUNTIMECAP '5 minutes';
ALTER RESOURCE POOL tableau_pool CASCADE TO tableau_pool_backup;
本地连接负载均衡¶
将客户端连接开销分散到所有节点:
-- Vertica 服务器侧启用负载均衡(需要服务器端配置)
-- 然后在 Tableau TDC 文件中添加:
-- <customization name='odbc-connect-string-extras' value='ConnectionLoadBalance=1' />
升级 Vertica 版本¶
最新版 Vertica 优化了 Tableau 的元数据查询(系统表扫描),升级可获得更快的连接初始化和字段加载速度。
5. TDC 文件配置¶
TDC(Tableau Data source Customization)文件是精细控制 Tableau-Vertica 连接行为的核心配置。TDC 文件对所有到 Vertica 的连接全局生效,需手动维护。
5.1 创建与位置¶
在 My Tableau Repository/Datasources/ 目录下创建 .tdc 文件(Tableau Desktop),或 Tableau Server 的对应数据源配置目录。
5.2 TDC 能力(Capabilities)自定义¶
| 自定义名称 | 推荐值 | 说明 |
|---|---|---|
CAP_CREATE_TEMP_TABLES |
no |
禁止 Tableau 创建临时表 |
CAP_SELECT_INTO |
no |
禁止 Tableau 即时建表 |
CAP_QUERY_SUBQUERY_QUERY_CONTEXT |
yes |
上下文筛选器用子查询代替临时表 |
CAP_ISOLATION_LEVEL_READ_COMMITTED |
yes |
强制 Read Committed 隔离级别(仅在遇到锁问题时启用) |
CAP_ODBC_EXPORT_ALLOW_CHAR_UTF8 |
yes |
允许单字节 char 绑定 Unicode 字符串为 UTF-8 |
CAP_ODBC_METADATA_SUPPRESS_EXECUTED_QUERY |
yes |
适用于 Vertica 7.1 之前版本 |
5.3 ODBC 连接属性(odbc-connect-string-extras)¶
⚠️ 此自定义项区分大小写,必须全小写。
<!-- 设置会话标签(便于 Vertica 侧追踪) -->
<customization name='odbc-connect-string-extras' value='Label=tableau_session_label' />
<!-- 增大结果缓冲区(解决 "Multiple commands cannot be active" 错误;0 = 无限) -->
<customization name='odbc-connect-string-extras' value='ResultBufferSize=500000' />
<!-- 启用本地连接负载均衡 -->
<customization name='odbc-connect-string-extras' value='ConnectionLoadBalance=1' />
<!-- 指定隔离级别 -->
<customization name='odbc-connect-string-extras' value='TransactionIsolation=Read Committed' />
<!-- 启用 SSL 服务器认证 -->
<customization name='odbc-connect-string-extras' value='SSLMode=require' />
多个参数用分号连接:
<customization name='odbc-connect-string-extras'
value='Label=tableau_session_label;ConnectionLoadBalance=1;BackupServerNode=10.0.50.153,10.0.50.151' />
5.4 完整 TDC 文件示例¶
<connection-customization class='vertica' enabled='true' version='any value'>
<vendor name='vertica' />
<driver name='vertica' />
<customizations>
<!-- 能力自定义 -->
<customization name='CAP_QUERY_SUBQUERY_QUERY_CONTEXT' value='yes' />
<customization name='CAP_CREATE_TEMP_TABLES' value='no' />
<customization name='CAP_SELECT_INTO' value='no' />
<customization name='CAP_ODBC_EXPORT_ALLOW_CHAR_UTF8' value='yes' />
<!-- ODBC 连接属性 -->
<customization name='odbc-connect-string-extras'
value='Label=TableauLbl;ConnectionLoadBalance=1;BackupServerNode=10.0.50.153,10.0.50.151' />
</customizations>
</connection-customization>
5.5 验证 TDC 是否生效¶
- 删除
My Tableau Repository\Logs中的所有日志文件 - 打开 Tableau Desktop 并连接到 Vertica 表
- 关闭 Tableau
- 打开日志文件,搜索自定义名称确认是否被加载
6. Kerberos 单点登录(SSO)¶
6.1 工作原理¶
在 Active Directory 域环境下,Tableau 可通过 Kerberos 实现从浏览器到 Vertica 的全链路单点登录:
6.2 Kerberos 受限制委派¶
Tableau Server 支持 Kerberos Constrained Delegation,使 Server 以服务账户运行的同时,可代表工作簿的查看者在 Vertica 中执行查询。域用户/查看者会显示在 Vertica 的 SESSIONS 系统表中,实现审计追踪。
6.3 配置条件¶
- Vertica 和 Tableau Server 均配置为 Kerberos 认证
- 单域环境(用户、Tableau Server、Vertica 在同一域)经测试确认可用
- 跨域环境未经官方测试验证
- 配置正确后,在 Tableau Desktop 中发布工作簿时可选择 Viewer Credentials 认证方式
测试基于 Windows 上的 Tableau Server(Linux 也支持,但官方未测试)。
7. 已知限制¶
7.1 数据类型限制¶
| 数据类型 | 限制 | 说明 |
|---|---|---|
| LONG VARCHAR | 最多 65,000 字符 | 超出部分截断 |
| TIMETZ / TIMESTAMPTZ | 不显示毫秒和时区值 | 右侧设置 Default Properties → Date Format 可调整格式 |
| TIME / TIMETZ | 格式化为 HH:mm:SS | 无毫秒精度 |
| NUMERIC | 最高 15 位精度 | 超出精度的右侧数字被截断(非四舍五入) |
7.2 跨数据库连接¶
Tableau 支持跨多个 Vertica 数据库 JOIN 表,但性能陷阱严重:
- Tableau 不会将跨数据库 JOIN 推送到 Vertica
- 对每个数据库分别查询,将所有数据传输到 Tableau Data Engine 后在本地做 JOIN 和聚合
- 性能取决于连接的数据库数量和传输的数据量,大数据场景下几乎不可用
建议:跨数据库查询应该通过 Vertica 侧的 ETL / External Table / COPY 等方式将数据集中到单个数据库再访问。
7.3 Custom SQL 的限制¶
- 无法利用 Join Culling
- Tableau 会将 Custom SQL 包裹为子查询,外层添加 GROUP BY / ORDER BY / WHERE
建议:将复杂 SQL 创建为 Vertica VIEW,然后从 Tableau 连接到该 VIEW 并拖拽其他表。
8. 故障排查¶
8.1 常见问题¶
问题一:Multiple commands cannot be active on the same connection¶
现象:
An error occurred during query preparation: Multiple commands cannot be active
on the same connection. Consider increasing ResultBufferSize or fetching all
results before initiating another command.
原因:Vertica 单个连接不支持同时执行多个查询。Tableau 在同一连接上并发推送查询时触发此错误。
解决:在 TDC 文件中增大 ResultBufferSize(0 = 无限缓冲):
问题二:表锁 / 事务冲突¶
解决:强制 Read Committed 隔离级别:
<!-- TDC 文件方式 -->
<customization name='CAP_ISOLATION_LEVEL_READ_COMMITTED' value='yes' />
<customization name='CAP_SET_ISOLATION_LEVEL_VIA_ODBC_API' value='yes' />
<!-- 或 ODBC 连接属性方式 -->
<customization name='odbc-connect-string-extras' value='TransactionIsolation=Read Committed;' />
8.2 性能诊断工具¶
Tableau Performance Recorder¶
录制 Tableau 生成的查询及其性能,帮助区分瓶颈在数据库查询还是可视化渲染:
- 瓶颈在查询执行 → 遵循本文第 4 章 Vertica 侧调优策略
- 瓶颈在可视化渲染 → 遵循本文 4.6 节仪表板设计建议
录制结果也是提交给 Vertica Database Designer 的理想查询样本来源。
识别并行查询¶
使用以下工具确认 Tableau 实际发送到 Vertica 的并发查询:
- Tableau Performance Recorder
- Vertica 系统表:QUERY_REQUESTS
会话标签¶
为 Tableau 连接设置标签,便于在 Vertica 日志和系统表中识别:
8.3 日志文件位置¶
| 日志 | 路径 / 启用方式 |
|---|---|
| Vertica ODBC Driver | Windows:注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Vertica\ODBC\Driver 的 LogLevel / LogPath 参数;MacOS/Linux:编辑 vertica.ini |
| ODBC Tracing | ODBC 数据源管理器 → Tracing 选项卡 → 启用 |
| Vertica 数据库日志 | 如 /home/dbadmin/vmart/v_vmart_node0001_catalog/vertica.log |
| Tableau Desktop 日志 | C:\Users\<user>\Documents\My Tableau Repository\Logs\log.txt |
| Tableau Server 日志 | C:\ProgramData\Tableau\Tableau Server\data\tabsvc\Logs\vizqlserver |
8.4 仪表板缓慢的诊断流程¶
仪表板加载慢
├─ 用 Performance Recorder 录制
│ ├─ 查询执行时间长?
│ │ ├─ 执行计划不佳? → Database Designer 优化投影
│ │ ├─ 资源不足? → 调整资源池 / 级联超时
│ │ ├─ 网络延迟? → 检查 ODBC ResultBufferSize
│ │ └─ 未用 LAP? → 创建 Live Aggregate Projection
│ └─ 渲染时间长?
│ ├─ 大量表计算? → 改用 LOD 表达式
│ ├─ 使用 Set? → 改 SQL 视图
│ ├─ 筛选器卡片过多? → 改用操作筛选器
│ └─ 未隐藏未使用列? → 隐藏无用字段
└─ 确定瓶颈后对症优化
9. 示例应用(QuickStarts)¶
Vertica 提供两个免费的 Tableau QuickStart 示例应用,用于演示和教育目的(不适合生产部署)。
9.1 Vertica QuickStart for Tableau(零售分析)¶
基于 VMart 示例数据库的零售分析仪表板集,包括以下仪表板:
| 仪表板 | 分析内容 |
|---|---|
| Executive Dashboard | 高层营收视图(2005/2006 年在线和门店销售) |
| Online Sales Overview | 在线业务(按交易类型:购买/退货) |
| Store Sales Overview | 实体店业务(按季度/月度) |
| Customer Overview | 客户画像(年龄、性别等维度) |
| Call Center & Employee | 销售/呼叫中心人员绩效 |
| Product Overview | 产品和类别的营收分布 |
| Vendor Performance | 供应商绩效(平均交货天数、订购量等) |
| Inventory Overview | 库存分析(产品类别、仓库等维度) |
前置条件:Vertica 集群 + VMart 示例数据库 + Tableau Desktop。 下载:https://www.vertica.com/quickstart/vertica-quickstart-for-tableau/
9.2 Vertica Partner QuickStart for Tableau(工单追踪)¶
由 Tableau 开发、Vertica 适配的工单追踪 BI 应用:
| 仪表板 | 分析内容 |
|---|---|
| Ticket Overview | 工单状态概览 + 月度分布(可下钻到具体月份) |
| Service Desk | 按地理位置的工单优先级分布(颜色编码区分优先级) |
前置条件:Vertica 集群 + Support Schema(SupportTicketTrackingScript.sql)+ CSV 数据导入 + Tableau Desktop。
下载:https://www.vertica.com/quickstart/vertica-partner-quickstart-tableau/
10. 交付检查清单¶
在实际项目中交付 Tableau 集成 Vertica 时,建议逐项确认:
连接层¶
- [ ] ODBC 驱动已安装在所有需要的机器(Desktop / Server / Bridge)
- [ ] Linux Server 的
/etc/odbcinst.ini已配置[Vertica]条目 - [ ] Tableau Cloud 场景已安装并激活 Tableau Bridge
- [ ] 防火墙已开放 Vertica 端口(默认 5433)
性能层¶
- [ ] 优先使用拖拽表创建数据源(而非 Custom SQL)
- [ ] 数据库外键已定义(或启用 Assume Referential Integrity)
- [ ] 默认选择 Live 连接(非必要不用 Extract)
- [ ] 表计算已尽可能替换为 LOD 表达式
- [ ] Tableau 专用资源池已创建
- [ ]
ConnectionLoadBalance=1已启用 - [ ] 仪表板设计完成后已隐藏未使用列
调优层¶
- [ ] 慢查询已提交 Database Designer
- [ ] LAP(Live Aggregate Projections)已用于高频聚合场景
- [ ] 级联资源池已配置(RUNTIMECAP + CASCADE TO)
- [ ] TDC 文件已创建并验证生效
- [ ] Vertica 已升级到较新版本
安全层¶
- [ ] 如需要,Kerberos SSO + 受限制委派已配置
- [ ] SSL 加密已启用(
SSLMode=require) - [ ] 会话标签已配置(便于审计追踪)
总结¶
Tableau 与 Vertica 的集成通过 ODBC 实现,架构简洁但优化空间巨大。核心优化理念可以归纳为三点:
- 尽量让 Vertica 干活:Live 连接、LOD 表达式、RAWSQL 透传、LAP 预聚合、Database Designer 优化投影——把计算留在 MPP 引擎里
- 减少不必要的工作:Join Culling 免去无用的 JOIN,操作筛选器减少查询次数,Context Filter 提前过滤掉大量数据
- 控制并发与资源:连接池上限、专用资源池、级联超时——防止 Tableau 的并发查询拖垮 Vertica
TDC 文件是连接 Tableau 最佳实践和 Vertica 最佳实践之间的胶水层,合理配置是交付高质量 BI 方案的关键。
原文来源:https://www.vertica.com/kb/Vertica-Integration-with-Tableau-Desktop-Connection-Guide/Content/Partner/Vertica-Integration-with-Tableau-Desktop-Connection-Guide.htm