Apache Kylin: настройки куба

Я создал куб в Apache Kylin (1.5.3) с двумя таблицами, которые выглядят так:

Facttable   || Dimensiontable
id_a | id_b ||  id  | pos
------------------------------
01   | 011  || 011  | 1
01   | 011  || 012  | 1
01   | 011  || 013  | 0
01   | 012  || 021  | 1
01   | 013  || 022  | 0
02   | 021  || 023  | 0
02   | 022  || 031  | 1
02   | 023  || 032  | 0
03   | 031  || 033  | 0
03   | 032  || 034  | 1
03   | 033  || 035  | 1
03   | 034  ||
03   | 034  ||
03   | 034  ||
03   | 035  ||
03   | 035  ||

Таблицы объединены по facttable.id_b = dimensiontable.id. В «конструкторе кубов - дополнительные настройки» я создал одну группу агрегации с id_a, id_b и pos в «включает».

Теперь я хочу знать каждый id_a, где 'pos = 1' более одного раза связан с.

Итак, в случае с таблицами выше:

id_a | count
------------ 
01   | 2
03   | 3

На вкладке "Insight" я попробовал запрос

select ft.id_a, count(ft.id_a)
from(
    select id_a, id_b
    from facttable
    group by id_b, id_a
) as ft inner join (
    select id
    from dimensiontable
    where pos = 1
) as dt on (ft.id_a = dt.id)
group by ft.id_a
having (count(ft.id_a) > 1);

Но он возвращается

Ошибка при выполнении SQL «[запрос]»: null

Кто-нибудь знает, в чем проблема? Мне нужно изменить некоторые настройки в «создании модели» или «создании куба»?

Любая помощь приветствуется!


person Søren    schedule 18.08.2016    source источник


Ответы (1)


Ваше требование для меня звучит так, как показано ниже.

select
    id_a, count(distinct id_b)
from
    facttable
    inner join dimensiontable
    on facttable.id_b = dimensiontable.id
where
    pos = 1
group by
    id_a
having
    count(distinct id_b) > 1
person Li Yang    schedule 21.08.2016
comment
запуск вашего запроса работает, но возвращает счетчик 4 для id_a = 01 и 6 для id_a = 03 - person Søren; 23.08.2016
comment
Эм .. так что вы только подсчитываете разные id_b, тогда исправленный ответ должен работать. - person Li Yang; 27.08.2016