Гистограмма в MDX с icCube

Как можно сделать динамическую гистограмму с помощью MDX?

Например, наша схема основана на посещениях веб-сайтов, у нас есть количество сеансов и количество кликов. Мы хотели бы иметь количество сеансов с одним кликом, принимая во внимание, что это может зависеть от других параметров (страна, час, страница входа...).


person ic3    schedule 08.07.2015    source источник
comment
Пожалуйста, не могли бы вы добавить больше деталей к этому вопросу. Также стартовый скрипт mdx. Возможно также макет того, к чему вы стремитесь.   -  person whytheq    schedule 09.07.2015
comment
см. ответ ниже, это повторяющийся вопрос, который мы получаем. Поэтому я отвечаю здесь, чтобы поделиться им   -  person ic3    schedule 10.07.2015


Ответы (1)


Чтобы решить эту проблему, мы будем работать с двумя разными концепциями. Сначала создайте новую иерархию, а затем используйте MDX+.

Сначала мы должны создать новое измерение, [Гистрограмма]. Это новое измерение будет содержать определение сегментов с двумя свойствами элемента: start-bucket и end-bucket. Псевдотаблица, которая выглядит как

Name start-bucket end-bucket
0-1       0           1
1-2       1           2
2-3       2           3
...
10++     10   2147483647

Эта иерархия не связана с фактами и определяет для каждого члена два свойства, определяющие ведро.

Давайте применим это в MDX.

Предположим, у нас есть параметр [Сеансы] и показатель [клики]. Сначала мы воспользуемся объектно-ориентированными функциями icCube и создадим вектор, который для каждого сеанса вычисляет количество кликов.

-> Вектор( [Сеансы], [клики], EXCLUDEEMPTY )

У вектора есть функция hist(start,end), которая делает именно то, что нам нужно, и подсчитывает все вхождения между началом и концом (исключая).

Vector( [Sessions], [click-outs], EXCLUDEEMPTY )->hist(0,1)

Объединение этого с нашей недавно созданной иерархией позволяет автоматизировать расчет для всех сегментов. Функция const гарантирует, что вектор вычисляется только один раз, так как это может занять много времени.

Окончательный MDX выглядит следующим образом (обратите внимание, что члены function и calc. могут быть созданы в сценарии схемы по одному разу для каждой схемы):

WITH
 CONST FUNCTION ClicksBySession() AS Vector( [Sessions], [Measures].[click-outs], EXCLUDEEMPTY )
 MEMBER [Session/Clickout] AS  ClicksBySession()->hist( [Histogram].currentMember.properties("start-bucket", TYPED) , [Histogram].currentMember.properties("end-bucket", TYPED) 
SELECT
   {[Session/Clickout] } on 0,
  [Histogram].on 1
FROM [clickout]
--where  [Geography].[Europe]

И вот у вас есть гистограмма, которая рассчитывается динамически, которую можно легко вставить в информационную панель и использовать повторно.

person ic3    schedule 10.07.2015