Kylin查询下压 例如,构建cube时使用的model是fact join dimension,在不开启查询下压时执行query会报错,在开启查询下压后执行可以提交至sparksql方式进行查询。对于cube不支持的查询sql,kylin4.0支持将这类查询下压至sparksql进行查询。(2)刷新配置(重启服务也可使配置生效,但为避免不可用建议页面刷新配置)(1)需要设置参数进行开启。
kylin使用注意事项 创建Model时设置的是fact left join dimension,在查询时不能使用其他方式的连接条件,如inner join。构建Cube时,选择了X,Y,Z三个维度,查询时只能按这三个维度或组合的维度聚合查询,使用其他Cube中没有的维度聚合时会报错。构建Cube时,只选择了sum(aa),默认有count(*),即只有两个度量值。4.做查询时必须事实表在前,维表在后,否则执行报错。2.只能按构建Cube时选择的维度字段分组统计。3.只能对构建Cube时选择的度量字段做统计。
kylin、druid、clickhouse 因为数据预聚合,Kylin可以说是最快的查询引擎(group-by查询这样的复杂查询,可能只需要扫描1条数据);Clickhouse的索引有点类似MySQL的联合索引,当查询前缀元组能命中的时候效率最高,可是一旦不能命中,几乎会扫描整个表,效率波动巨大;每个维度都有创建索引,所以每个查询都很快,并且没有类似Kylin的巨大的查询效率波动。Druid数据模型比较简单,它将数据进行预聚合,只不过预聚合的方式与Kylin不同,Kylin是Cube化,Druid的预聚合方式是将所有维度进行Group-by。
hql连续登录 表中有登录日期,user_id,统计连续登录3天及以上学员idselect user_id,count(*) as continuous_daysfrom (select login_date,user_id,date_sub(login_date,row_number() over(partition by user_id order by login_date)) as flag_datefrom (select '2020-12-30' as login_date,'001' as
doris-join优化 Broadcast/Shuffle Join系统默认实现 Join 的方式,是将小表进行条件过滤后,将其广播到大表所在的各个节点上,形成一个内存 Hash 表,然后流式读出大表的数据进行Hash Join。但是如果当小表过滤后的数据量无法放入内存的话,此时 Join 将无法完成,通常的报错应该是首先造成内存超限。如果遇到上述情况,建议使用 Shuffle Join 的方式,也被称作 Partitioned Join。即将小表和大表都按照 Join 的 key 进行 Hash,然后进行分布式的 Join
hive排序 order by:全局排序,因此只有一个reducer(多个reducer无法保证全局有序)如果指定了hive.mapred.mode=strict(默认值是nonstrict),这时就必须指定limit来限制输出条数,原因是:所有的数据都会在同一个reducer端进行,数据量大的情况下可能不能出结果,那么在这样的严格模式下,必须指定输出的条数。sort by:不是全局排序,分区内有序,其在数据进入reducer前完成排序在每个reducer端做排序,也就是说保证了局部有序(每个reducer出来.
分区表和分桶表区别 分区使用的是表外字段,需要指定字段类型 分区通过关键字partitionedby(partition_name string)声明 分区划分粒度较粗 将数据按区域划分开,查询时不用扫描无关的数据,加快查询速度 ...
hive之连续考题 select min(read_hour),max(read_hour),flagfrom (select read_hour,row_number() over( order by read_hour) as rowid,case when read_user_cnt>=10000 then 1 else 0 end as flagfrom (select 0 as read_hour,0 as flag union allselect 1 as read_hour,0 as .
hive谓词下推 关系型数据库借鉴而来,关系型数据中谓词下推到外部数据库用以减少数据传输 基本思想:尽可能早的处理表达式 属于逻辑优化,优化器将谓词过滤下推到数据源,使物理执行跳过无关数据 参数打开设置:hive.optimize.ppd=true ...
在doris实现lag时间字段 select id,wechat_id,online,happen_time,STR_TO_DATE(lag(happen_time,1,99991231000000)over(partition by wechat_id order by id ),'%Y%m%d%H%i%s')from rt_ods.rt_ods_skynet_statistic_online_status_record where wechat_id='wxid_8074350742812'
星型&雪花&星座模型 根据事实表和维度表之间的关系,我们将常见的模型分为星型模型、雪花模型。星型模型:当所有的维度表都是和事实表直接相连的时候,整个图形看上去就像是一个星星,我们称之为星型模型。星型模型是一种非正规化的架构,因为多维数据集的每一个维度都和事实表直接相连,不存在渐变维度,所以有一定的数据冗余,因为有数据的冗余,很多的统计情况下,不需要和外表关联进行查询和数据分析,因此效率相对较高...
归并、快排、二分查找 归并def MergeSort(lists): if len(lists) <= 1: return lists num = int( len(lists) / 2 ) left = MergeSort(lists[:num]) right = MergeSort(lists[num:]) return Merge(left, right)def Merge(left,right): r, l=0, 0 result=[]
Doris三种数据模型 在 Doris 中,数据以表(Table)的形式进行逻辑上的描述。一张表包括行(Row)和列(Column)。Row 即用户的一行数据。Column 用于描述一行数据中不同的字段。Column 可以分为两大类:Key 和 Value。从业务角度看,Key 和 Value 可以分别对应维度列和指标列。Doris 的数据模型主要分为3类:Aggregate Uniq DuplicateAggregate 模型 聚合模型假设有如下表,其中aggregate key为user_id,date
按不同维度组合并聚合 grouping sets 在一个 group by 查询中,根据不同的维度组合进行聚合,等价于将不同维度的 group by 结果集进行 union allcube 根据 group by 的维度的所有组合进行聚合rollup 是 cube 的子集,以最左侧的维度为主,从该维度进行层级聚合。grouping setsselect order_id, departure_date, count(*) as cnt from ord_test group by order_id..
hive日期时间函数 to_date(string timestamp):日期时间转日期函数:返回值: string说明: 返回日期时间字段中的日期部分。select to_date(’2021-02-08 10:03:01′) from dual;2021-02-08current_date():当前日期select current_date() --2021-02-09current_timestamp():当前日期时间selectcurrent_timestamp() ; --2.
Lateral View explode Lateral View explode使用过程中的问题一般使用select id,con,con_detailfrom (select 1 as id,'a,b,c' as conunion all select 2 as id,null as con union all select 3 as id,'' as con)tlateral view explode(split(con,',')) aa as con_detail结果如下,发现其中id为2的行不见了,原因是