从 MongoBI 迁移到 MongoSQL
Looker 现在支持 MongoSQL,并建议从 MongoDB Connector for BI 迁移到 MongoSQL。
由于 MongoDB Connector for BI (MongoBI) 和 MongoSQL 之间的 SQL 语法存在差异,因此使用自定义 SQL 块、日期格式或数据库函数的现有 LookML 模型可能需要进行语法调整。不要在未先验证 LookML 代码的情况下,将现有的生产连接直接切换到 MongoSQL,因为这可能会破坏仪表板、外观、计划或警报。
要安全地从 MongoBI 迁移到 MongoSQL,请按照以下步骤操作:
- 查看 MongoDB 文档中 MongoBI 和 MongoSQL 之间的 SQL 语法差异 从 Atlas BI 连接器过渡到 MongoSQL。
- 在 Looker 中为 MongoSQL 创建一个新的连接 作为辅助连接。
- 在 LookML 项目的新开发分支中,更新模型文件中的
connection参数,使其指向新的 MongoSQL 连接。 - 在 SQL Runner 中,测试并运行来自 Explore 的示例查询,以验证查询语法和结果。
- 请验证您的项目和内容:
- 解决所有验证错误后,将更改部署到生产环境。
使用 MongoDB Connector for BI (MongoBI)
Looker 可以通过 MongoDB Connector for BI 使用两种方式访问 MongoDB:
- 在 MongoDB Atlas 中使用 MongoDB Connector for BI。
- 使用安装在与 MongoDB 数据库同一服务器上的 MongoDB Connector for BI。
MongoDB Atlas
您的 MongoDB Atlas 必须使用 M10+ 集群。要让 Looker 使用在 MongoDB Atlas 上运行的 MongoDB 数据库,您必须使用 MongoDB Connector for BI (MongoBI)。启用 Atlas 的 BI 连接器需要 MongoDB Atlas 使用 M10+ 集群。
您还必须创建一个对所选数据库具有读取权限的用户账号。
配置用于 BI 的 MongoDB 连接器
在 Looker 中创建连接之前,您的 MongoDB 或 Atlas 管理员需要按照以下步骤设置 MongoDB BI 连接器,这些步骤在本页中有详细说明:
将 Looker 服务器添加到 Atlas IP 访问列表中
Atlas 只允许来自项目 IP 访问列表中的条目的客户端连接。将 Looker IP 地址添加到 Atlas 项目的 IP 访问列表中:
- 获取 Looker IP 地址。
- 按照 Atlas IP 访问列表设置 说明将 Looker IP 地址添加到 Atlas IP 访问列表中。
启用 MongoDB BI 连接器
启用 MongoDB BI 连接器:
MongoDB 位于同一服务器上
在 Looker 中创建连接之前,您的 MongoDB 管理员应按照以下步骤设置 MongoDB 和 Mongo Connector for BI,这些步骤在本页中有详细说明:
安装用于 BI 的 MongoDB 连接器
按照 在本地安装 BI 连接器 MongoDB 文档页面中的说明,将 MongoDB Connector for BI 安装在与 MongoDB 数据库相同的服务器上。
加密网络流量
MongoDB BI 连接器要求在 MongoDB 服务器和 Looker 应用程序之间使用 SSL 加密。请按照 MongoDB 文档页面上的 配置 BI 连接器的 SSL 说明进行 SSL 设置。
设置 Looker 用户和权限
在 MongoDB shell 中,输入 use 命令切换到 Looker 将要连接的数据库。然后,为 Looker 创建一个用户,权限为 db.createUser(),角色为 readWrite:
use looker_database
db.createUser({ user: looker,
pwd: `some_password_here`,
roles: [ "readWrite" ]
})
安装 MongoBI JDBC 驱动程序文件
对于 MongoDB Connector for BI 的两种选项,Looker 都需要通过以下步骤配置 JDBC 驱动程序文件:
下载这两个 JAR 文件:
请使用以下值,按照 未打包的 JDBC 驱动程序 文档页面上的步骤进行操作:
驱动符号: mongobi
驱动程序条目:
- name: mongobi
dir_name: mongobi
module_path: com.mysql.jdbc.Driver
override_jdbc_url_subprotocol: mysql
如果您使用的是 Looker 6.2 或更早版本:
- name: maria15x
dir_name: mongobi
module_path: com.mysql.jdbc.Driver
override_jdbc_url_subprotocol: mysql
对于将驱动程序添加到方言目录中的步骤这些文件的路径将如下所示:
looker/custom_jdbc_drivers/mongobi/mongosql-auth-1.0.0-rc0.jarlooker/custom_jdbc_drivers/mongobi/mysql-connector-java-5.1.47.jar
允许使用常规派生表(推荐)
派生表是 Looker 中的重要工具,可帮助您扩展分析的复杂性。它们在提升查询性能方面也能发挥重要作用。从宏观层面来说,Looker 派生表功能提供了一种创建数据库中尚不存在的新表的方法。
MongoDB BI 连接器支持临时 常规派生表,但不支持 持久派生表。
由于常规派生表是临时的,因此不需要存储。因此,您无需为它们创建模式。但是,您需要授予dbOwner角色looker_tmp即使该模式不存在,也应采用该模式。
请按照本文档中的“修改 MongoDB 用户”部分进行操作。MongoDB 文档页面,介绍如何配置数据库用户添加dbOwner角色looker_tmpLooker 将使用该用户进行连接。
db.grantRolesToUser("looker", [ {role: "dbOwner", db: "looker_tmp"} ])
创建 Looker 与数据库的连接
请按照以下步骤创建从 Looker 到数据库的连接:
- 在 Looker 的管理部分中,选择连接,然后点击添加连接。
从 方言 下拉菜单中选择 MongoBI。
填写连接详情。这些设置中的大多数设置对于大多数数据库方言都是通用的。如需了解相关信息,请参阅将 Looker 连接到您的数据库文档页面。
如需验证连接是否成功,请点击连接设置页面底部状态详情部分中的测试连接按钮。
如果 Looker 显示可以连接,请按连接以创建连接。
然后,您的数据库连接会添加到 Looker 连接 管理页面上的列表中。
在 MongoDB Connector for BI 中使用 SQL 函数和运算符
在使用 MongoDB Connector for BI 连接进行开发时,您可以使用 MongoDB 文档中列出的 SQL 函数和运算符。
支持的 JDBC 参数
对于 MongoDB Connector for BI,Looker 在连接的 附加 JDBC 参数 字段中支持以下 JDBC 参数。如需了解这些参数,请参阅数据库的相关文档。
allowMultiQueriesappNameauthSourceautoReconnectcachePrepStmtscharacterEncodingconnectTimeoutconnectTimeoutMSelideSetAutoCommitsenabledSslProtocolSuitesenabledTLSProtocolsexplainSlowQueriesmaxAllowedPacketpasswordqueryInterceptorsqueryTimeoutKillsConnectionreplicaSetrewriteBatchedStatementssocketTimeoutsslsslModetcpKeepAliveuseCompressionuseCursorFetchuseLocalSessionStateuseruseServerPrepStmtsuseSSLverifyServerCertificatezeroDateTimeBehavior
功能支持
为了让 Looker 支持某些功能,您的数据库方言也必须支持这些功能。
从 Looker 26.16 版本开始,MongoBI 支持以下功能:
| 功能 | 是否支持? |
|---|---|
| Looker (Google Cloud Core) | |
| 对称聚合 | |
| 派生表 | |
| 基于 SQL 的永久性派生表 | |
| 原生永久性派生表 | |
| 稳定视图 | |
| 终止查询 | |
| 基于 SQL 的透视 | |
| 时区 | |
| SSL | |
| 小计 | |
| 其他 JDBC 参数 | |
| 区分大小写 | |
| 位置类型 | |
| 列表类型 | |
| 百分位 | |
| 不同值百分位 | |
| SQL Runner “Show Processes” | |
| SQL Runner “Describe Table” | |
| SQL Runner “Show Indexes” | |
| SQL Runner “Select 10” | |
| SQL Runner “Count” | |
| SQL “Explain” | |
| OAuth 2.0 凭证 | |
| 上下文注释 | |
| 连接池 | |
| HLL 草图 | |
| 汇总感知 | |
| 增量 PDT | |
| 毫秒 | |
| 微秒 | |
| 具体化视图 | |
| 环比指标 | |
| 近似计数不同 | |
| 数据库内分析模型 | |
| 自定义日历 |
此外:
- MongoDB 不支持维度组的 毫秒和微秒时间范围。
- MongoDB 不支持维度 的 毫秒、毫秒 X 和微秒类型。
- Looker 将从 MongoBI 获取的所有时间戳视为协调世界时 (UTC) 时区。