注意:

  1. 物化视图建表语句,必须base on本地表,不能base on分布式表。否则没有数据进来。
  2. 建表语句不能嵌套,即不能 select * from (select * from ...) tmp。这样试的时候报错了。

AggregatingMergeTree引擎示例

  1. -- 建本地视图
  2. CREATE MATERIALIZED VIEW coco_db.query_aggregate_table ENGINE = AggregatingMergeTree PARTITION BY dt
  3. ORDER BY
  4. (dt, query) AS
  5. select
  6. dt,
  7. query,
  8. uniqState(e) as imp_count
  9. from
  10. detail_table
  11. where
  12. type = 'IMP'
  13. and position in (1, -1)
  14. GROUP BY
  15. dt,
  16. r_query;
  17. -- 建分布式视图
  18. CREATE table coco_db.dist_query_aggregate_table as coco_db.query_aggregate_table ENGINE = Distributed(
  19. coco_cluster,
  20. coco_db,
  21. query_aggregate_table,
  22. rand()
  23. );
  24. -- 查询
  25. select
  26. dt,
  27. r_query,
  28. uniqMerge(imp_count) as count
  29. from
  30. coco_db.dist_query_aggregate_table
  31. group by
  32. dt,
  33. r_query
  34. order by
  35. count desc
  36. limit
  37. 10;