Как объединить временные интервалы с группами мер в кубе в SSAS? - PullRequest
0 голосов
/ 12 апреля 2019

Я хотел бы создать пересечение между измерениями, имеющими следующие атрибуты:

Идентификатор клиента |Уровень клиента |Дата от |Дата до

1234 |Уровень 1 |01.01.2018 |31.12.2018

1234 |Уровень 2 |01.01.2019 |31.05.2019

И группа мер, такая как:

Купленный продукт |Дата покупки

Дешевое пиво |01.06.2018

Дешевое пиво |01.04.2019

На самом деле я застрял в определении отношений, которые соответствуют моей цели.Я думал о переопределении таблицы измерений, чтобы вместо временных интервалов для первой строки у меня была такая таблица:

Customer ID |Уровень клиента |Дата уровня

1234 |Уровень 1 |01.01.2018

1234 |Уровень 1 |02.01.2018

1234 |Уровень 1 |31.12.2018

Но если у меня есть таблица с 600 тыс. Клиентов, и я хотел бы определить временную зависимость «до конца света», тогда размер таблицы будет слишком большим.

Наконец, я хотел бы, чтобы один и тот же клиент (ID = 1234) был назначен на уровень 1 и июнь-18, а также уровень 2 и апрель-19.Я хотел бы попросить вас помочь мне, как построить таблицу измерений (или подтвердить, что моя верна) и как определить временную зависимость в Visual Studio, чтобы учитывать уровень клиента с даты покупки.

1 Ответ

0 голосов
/ 14 апреля 2019

Ну, я вижу два возможных подхода к вашей задаче.

  1. Разделите ваши основные данные клиента на интервалы, когда назначение уровня клиента не изменяется, присвойте идентификатор клиента для этого интервала и обратитесь к нему в данных транзакции.Как в вашем примере

    Идентификатор клиента |Уровень клиента |Дата от |Дата до
    12341 |Уровень 1 |01.01.2018 |31.12.2018
    12342 |Уровень 2 |01.01.2019 |31.05.2019

    Плюсы - простота реализации на стороне SSAS, сравнительно небольшой размер данных на SSAS.
    Минусы - вся логика идентификатора имеетбыть реализованным на уровне ETL.Структура атрибутов анализа фиксирована.

  2. Удаление уровня клиента из измерения клиента и создание отдельного затемнения уровня клиента.Вы получите ту же таблицу клиентов и таблицу уровня клиента с

    ID уровня клиента |Имя уровня клиента
    1 |Уровень 1
    2 |Уровень 2

    Затем - создайте отношение M2M между Customer Dim, Customer Level Dim и Date Dim.Для этого добавьте группу мер со следующей структурой

    Идентификатор клиента |ID уровня клиента |Дата ID
    1234 |1 |01.01.2018

    В этой группе мер - назовите ее Customer Level Date Bridge - определите меру счета.Затем на вкладке «Использование измерений» конструктора кубов в SSDT вы можете установить Dim уровня клиента для группы мер закупок (при условии, что она имеет прямые отношения с датой и измерениями клиента) как измерение M2M с мостом Customer Level Date Bridge.Подробнее об этом на MS Docs .

    Плюсы - Подход M2M очень гибок.Как следует из названия, вы можете иметь более 1-1 прямого назначения между Заказчиком и его уровнем.Например, вы можете разделить клиентов на группы с некоторыми пересечениями.
    Минусы - для этого требуется построить таблицу мостов и заполнить ее записью для каждой даты в интервале отношений.Это может повлиять на ETL, размер куба и обработку куба.

...