Docs 菜单
Docs 主页
/
BI Connector
/

类型转换模式

在此页面上

  • 模式比较表

版本 2.6 中的新增内容

MongoDB Connector for BI尝试将SQL查询转换为MongoDB 聚合管道。 当BI Connector无法将查询转换为聚合管道时,它会在内存中执行查询,从而导致延迟增加。 在版本2.6之前, mongosqld无法将类型转换转换为聚合表达式,这会阻止转换依赖于类型转换的任何查询。

从版本 2.6 开始, mongosql类型转换模式将所有类型转换下推到运行 4.0 或更高版本的 MongoDB Server,以提高表达式性能。此模式默认启用,但您可以通过将type_conversion_mode会话变量设置为以下值之一,在每个会话的基础上进行配置:

模式
说明
mongosql
默认。 将所有类型转换下推到运行 4.0 或更高版本的 MongoDB Server。对于 4.0 之前的 MongoDB 版本,BI Connector 在内存中执行类型转换。
mysql
指示 BI Connector 尽可能匹配 MySQL 的类型转换语义。 如果 BI Connector 可以用聚合语言重现 MySQL 的类型转换行为,它就会将表达式下推到 MongoDB Server 上执行。否则, mongosqld在内存中执行表达式。

以下示例将type_conversion_mode变量设置为mysql

SET SESSION type_conversion_mode = 'mysql';

重要

mongosql 是推荐的类型转换模式,除非您需要紧密复制 MySQL 的行为。 上面的示例设置了mysql类型转换模式,因为mongosql是默认模式,不需要显式设置。

类型转换模式适用于:

  • 显式类型转换。 例如:

    CAST("123" AS unsigned)
  • 隐式类型转换。 例如, "123" + 456

下表概述了 MySQL 的类型转换行为与 BI Connector 的默认类型转换行为( mongosql模式)的不同之处:

来源类型
要键入
MySQL 行为
mongosql-mode 行为
Varchar
数值
从各种不同格式的string中解析出数字。 有关更多信息,请参阅MySQL 数字字面 量 文档。
解析十进制格式字符串中的数字,并带有可选的前导符号字符。
Varchar
时间戳
从各种不同格式的string中解析日期。 有关详细信息,请参阅MySQL 日期和时间文字
"%Y-%m-%dT%H:%M:%S.%LZ"格式的字符串中解析日期。
Int
时间戳
尝试从 int 的 varchar 表示形式解析日期。 例如,整数20180809183456变为日期2018-08-09 18:34:56.000000
将输入视为自 Unix 纪元以来的毫秒数。 例如, 1533839696000
时间戳
Long
将时间戳解析为YYYYMMDDHHMMSS格式的长整型。 例如, 20180701123400
将时间戳解析为表示自 UNIX 纪元以来的毫秒数的长整型值。 例如, 1530448440000
时间戳
Varchar
将时间戳解析为YYYY-MM-DD HH:MM:SS.MMMMMM格式的 varchar。 例如, “2018-07-01 12:34:00.000000”
将时间戳解析为YYYY-MM-DDTHH:MM:SS:MMMZ格式的 varchar。 例如, “2018-07-01T12:34:00.000Z”

注意

mongosql 是推荐的类型转换模式,除非需要紧密复制 MySQL 的行为。

后退

日志消息

在此页面上