dremio 官方提供了不只是基于ui 的反射操作,同时也提供了基于类似sql 的命令方便进行反射操作
创建反射
- 原始
ALTER DATASET <DATASET_PATH>
CREATE RAW REFLECTION <REFLECTION_NAME>
USING
DISPLAY (
field1,
field2,
field3
)
[PARTITION BY (field1)]
[LOCALSORT BY (field2)]
[DISTRIBUTE BY (field2)]
- 聚合
ALTER TABLE <Source_PDS_OR_VDS_NAME>
CREATE AGGREGATE REFLECTION <reflection_name>
USING
DIMENSIONS (x by day, y)
MEASURES (b (COUNT, MIN, MAX, SUM, APPROXIMATE COUNT DISTINCT))
--PARTITION BY (col1,col2
--LOCALSORT BY (col1,col2
--ARROW CACHE
--DISTRIBUTE BY (col1,col2
- 外部
ALTER DATASET <SOURCE_DATASET_PATH>
CREATE EXTERNAL REFLECTION <REFLECTION_NAME>
USING <TARGET_DATASET_PATH>
删除反射
ALTER DATASET <DATASET_PATH> DROP REFLECTION <REFLECTION_NAME>
说明
dremio 提供的sys 内存数据表已经提供了好多内部信息,通过reflections我们可以方便的查看反射的状态(记录数,大小,分片信息)
同时系统提供的物化视图信息可以查看数据分布情况
参考资料
http://docs.dremio.com/sql-reference/sql-commands/acceleration/