文章目录
- 前言
- 利用MySQL隐式类型转化,使spotfire发起的SQL可以走分区
- 强制用户必须对某列进行按需设置才可以打开数据
-
- 方一:改信息链接SQL
- [方二:在information designer添加提示](#方二:在information designer添加提示)
前言
starrocks在spotfire侧可以视为MySQL型的数据库,笔者在配置starrocks数据源的时候,在configuration工具里选择了启用所有 MySQL 相关的 data source template(包括 MySQL、MySQL5 等)

但在information designer里配置时,只有MySQL5这种方式连接上了SR数据库(原因未知,怀疑和configuration工具里的配置有关,没对比过。)
- MySQL 中,可使用形如 '2026-06-06' 的字符串作为条件查询 DATE 类型列,MySQL 会自动完成隐式类型转换。
- spotfire支持的时间格式大概率是形如'M/d/yyyy HH:mm:ss',这种格式的数据直接传给starrocks执行的话,是无法利用分区键的
利用MySQL隐式类型转化,使spotfire发起的SQL可以走分区
将spotfire信息
date类型分区键
对于date型的分区键,笔者猜测由于spotfire连接MySQL的数据库配置,

会做格式转换,抛给starrocks执行的sql里,会强制转换时间类型,数据库执行的sql形如:

这种格式也无法使用分区键。
可以将信息链接里该分区键格式改为string,然后参考如下表达式对待查时间进行按需设置:
sql
Year(DateAdd('dd',-3,DateTimeNow()))
& '-'
& right(String(Month(DateAdd('dd',-3,DateTimeNow())) + 100),2)
& '-'
& right(String(Day(DateAdd('dd',-3,DateTimeNow())) + 100),2)
& ' '
& right(String(Hour(DateTimeNow()) + 100),2)
& ':'
& right(String(MINUTE(DateTimeNow()) + 100),2)
& ':'
& right(String(SECOND(DateTimeNow()) + 100),2)
自动生成的分区表达式列
starrocks里bigint、date型的列作为分区列时,会有一个名为'__generated_partition_column_0'的实体列,spotfire里可以使用这一列进行按需加载设置,这么设置可以利用分区键,sql执行效率较高。

强制用户必须对某列进行按需设置才可以打开数据
方一:改信息链接SQL

sql
d1.`date_timekey` = ?DATETIME -- DATETIME类似变量名,可改为其他的,这么写只有一个条件
信息链接打开时,会提示必填项

-- 如何作为不传参的修改
方二:在information designer添加提示
单独为某一列添加提示,勾选强制性后为必填项
