So this issues is work in progress, and result in the two piece contradict code. thank you for make me clear.
------------------ ???????? ------------------ ??????: "Alberto Ram??n"<a.ramonporto...@gmail.com>; ????????: 2017??11??18??(??????) ????5:59 ??????: "user"<user@kylin.apache.org>; ????: Re: Can hierarchyDims contain jointDims https://issues.apache.org/jira/browse/KYLIN-2149 Check this link, you need choose between use one or other Some times would be great use both together On 17 November 2017 at 06:43, doom <43535...@qq.com> wrote: So what's the second code segment mean in AggregationGroup build step??0?2 is it means replace the hierarchy dim with the joint dims witch contain it? ------------------?0?2?????????0?2------------------ ??????:?0?2"ShaoFeng Shi";<shaofeng...@apache.org>; ????????:?0?22017??11??17??(??????) ????2:02 ??????:?0?2"user"<user@kylin.apache.org>; ????:?0?2Re: Can hierarchyDims contain jointDims Joint could not be used in the hierarchy. Joint means treating multiple dimensions as one: they either all appeared, either all not; It is a conflict with hierarchy. 2017-11-16 21:29 GMT+08:00 doom <43535...@qq.com>: HI ALL: I read the src code of kylin 2.2, and find: In class CubeDes, if hierarchyDims contain jointDims will throw exception. public void validateAggregationGroups() { ?0?2 ?0?2 ... ?0?2 ?0?2 if (CollectionUtils.containsAny(hierarchyDims, jointDims)) { ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 logger.error("Aggregation group " + index + " hierarchy dimensions overlap with joint dimensions"); ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 throw new IllegalStateException( ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 "Aggregation group " + index + " hierarchy dimensions overlap with joint dimensions: " ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 + ensureOrder(CollectionUtils.intersection(hierarchyDims, jointDims))); } But in class AggregationGroup will replace the hierarchy dim with the joint dims witch contain it. private void buildHierarchyMasks(RowKeyDesc rowKeyDesc) { ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ..... ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 for (int i = 0; i < hierarchy_dims.length; i++) { ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 TblColRef hColumn = cubeDesc.getModel().findColumn(hierarchy_dims[i]); ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 Integer index = rowKeyDesc.getColumnBitIndex(hColumn); ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 long bit = 1L << index; ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 // combine joint as logic dim ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 if (dim2JointMap.get(bit) != null) {?0?2?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 bit = dim2JointMap.get(bit); ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 } ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 mask.fullMask |= bit; ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 allMaskList.add(mask.fullMask); ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 dimList.add(bit); ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 ?0?2 } } do i understand in a wrong way? -- Best regards, Shaofeng Shi ??????