添加BIT类型列后Qlik Sense加载MySQL查询脚本为何挂起?
Qlik Sense加载MySQL BIT类型列时挂起的解决方向
我在Qlik Sense中运行连接MySQL的脚本,未包含BIT类型列bitCol时,脚本数秒即可完成;但添加该列后,加载会持续挂起甚至耗时数小时。
正常运行的脚本
LIB CONNECT TO 'MySQL_.......'; First 5 LOAD col1, col2, col3; [my_table]: SELECT col1, col2, col3; FROM `db_name`.`table_name`;
添加BIT列后挂起的脚本
LIB CONNECT TO 'MySQL_.......'; First 5 LOAD col1, col2, col3, bitCol; [my_table]: SELECT col1, col2, col3, bitCol; FROM `db_name`.`table_name`;
解决方向
在MySQL层面转换BIT类型:
直接在SELECT语句中将BIT列转换为Qlik兼容的类型,避免Qlik的类型解析逻辑出问题。示例:SELECT col1, col2, col3, CAST(bitCol AS UNSIGNED) AS bitCol; -- 转为无符号整数 FROM `db_name`.`table_name`;也可以转成可读性更强的字符串:
SELECT col1, col2, col3, CASE WHEN bitCol = b'1' THEN '启用' ELSE '禁用' END AS bitCol; FROM `db_name`.`table_name`;升级Qlik MySQL连接器:
旧版本连接器可能对BIT类型存在兼容性Bug,尝试升级到最新版本的MySQL连接器,验证是否修复了类型解析导致的挂起问题。在Qlik中显式指定列类型:
在LOAD语句里强制转换BIT列的类型,跳过自动检测。示例:First 5 LOAD col1, col2, col3, Num(bitCol) AS bitCol; -- 强制转为数值类型或转为文本类型:
First 5 LOAD col1, col2, col3, Text(bitCol) AS bitCol; -- 强制转为文本类型排查MySQL端查询性能:
先在MySQL客户端单独执行包含BIT列的SELECT语句,确认是否是MySQL本身查询缓慢。如果MySQL端查询正常,问题则集中在Qlik的类型处理逻辑;如果MySQL端也慢,需检查表索引是否覆盖该BIT列,或优化查询执行计划。
内容的提问来源于stack exchange,提问作者Jonathan Garvey
相关产品推荐
相关产品推荐

