Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / OLAP и DWH Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Связывание мер  [new]
Коломиец Юрий
Member

Откуда:
Сообщений: 54
Здравствуйте!

Подскажите как правильно связать меры 3-х и более таблиц, какие виды связи правильный использовать?

Таблица 1
ID_1 Value_1
1 1
2 1
3 1


Таблица 2
ID_2 FK_ID_1 Value_2
1 1 1
2 1 1
3 2 1


Таблица 3
ID_3 FK_ID_1 Value_3
1 2 1
2 2 1


Сводная таблица ключей
ID_0 ID_1 ID_2 ID_3
1 1 1 0
2 1 2 0
3 2 3 1
4 2 3 2
3 0 0 0


Сейчас, кроме как использования сводной таблицы, куда собираются все уникальные значения 3 таблиц, с собственным идентификатором и данные которой используются как обычное измерение не придумал.
Далее через ссылочные измерения соединяю все. Но это какой-то тупиковый ход, т.к. таблица 1 уже является неким ключом для связывания 2 и 3 таблиц. К тому же кол-во записей в сводной может оказать очень большим. Но тут постоянно возникают ошибки про выключенную иерархию атрибута.
Мне кажется, что ключевым измерением должен быть идентификатор 1 таблицы и через него дальше как-то вязаться.
10 янв 17, 19:03    [20090824]     Ответить | Цитировать Сообщить модератору
 Re: Связывание мер  [new]
SkyTod
Member

Откуда:
Сообщений: 30
Коломиец Юрий,

Как связаны таблица 1,2,3 между собой? ID_1 = ID_2 = ID_3?
11 янв 17, 21:40    [20095828]     Ответить | Цитировать Сообщить модератору
 Re: Связывание мер  [new]
Коломиец Юрий
Member

Откуда:
Сообщений: 54
SkyTod,

Таблицы 1 и 2 через FK_ID_1
Таблицы 1 и 3 через FK_ID_1
Таблицы 2 и 3 прямой связи не имеют. Максимум через FK_ID_1.
12 янв 17, 09:19    [20096779]     Ответить | Цитировать Сообщить модератору
 Re: Связывание мер  [new]
SkyTod
Member

Откуда:
Сообщений: 30
Коломиец Юрий,

То есть связь Table1.ID_1 = Table2.FK_ID_1 = Table3.FK_ID_1 ?

Создавайте измерение на основе Table1, а потом вяжите все три таблицы к этому измерению.
12 янв 17, 17:18    [20099470]     Ответить | Цитировать Сообщить модератору
 Re: Связывание мер  [new]
Коломиец Юрий
Member

Откуда:
Сообщений: 54
SkyTod,

А как остальные измерения таблицы 2 (поля в примере не показаны), вязать, чтобы через измерение таблицы 2 увидеть данные таблицы 1 или 3?
12 янв 17, 17:36    [20099540]     Ответить | Цитировать Сообщить модератору
 Re: Связывание мер  [new]
Коломиец Юрий
Member

Откуда:
Сообщений: 54
SkyTod,

Допустим структуру таблицы 2 дополнил колонкой Проекты

ID_2 FK_ID_1 Value_2 Проекты
1 1 1 Проект 1
2 1 1 Проект 1
3 2 1 Проект 2
12 янв 17, 17:38    [20099554]     Ответить | Цитировать Сообщить модератору
 Re: Связывание мер  [new]
Коломиец Юрий
Member

Откуда:
Сообщений: 54
SkyTod,

1. Создал измерение 1 с ключевым атрибутом по полю ID_1 таблицы 1.
2. Соединил все таблицы по данному измерению.
3. Создал измерение 2 с ключевым атрибутом по полю ID_2 и атрибутом FK_ID_1 таблицы 2.
4. Соединил таблицу 2 с измерением 2 по полю ID_2, а таблицу 1 через ссылочное измерение 1 с таблицей 1 по полю FK_ID_1 = ID_1.
5. Создал измерение 3 с ключевым атрибутом Проекты таблицы 2. Соединил его с таблицей 2 по полю Проекты.

А как измерение 3 соединить с таблицей 1?
Надо в измерение 3 добавлять атрибут FK_ID_1 и затем вязать с измерением 1 по полю FK_ID_1 = ID_1?
Или надо в измерение 3 добавлять атрибут ID_2 и затем вязать с измерением 2 по полю ID_2 = ID_2?
В обоих случаях ключевой атрибут Проекты не будет уникальным и просто не сможет сделать процессинг.
12 янв 17, 18:33    [20099777]     Ответить | Цитировать Сообщить модератору
 Re: Связывание мер  [new]
Коломиец Юрий
Member

Откуда:
Сообщений: 54
SkyTod,

Если же в измерение 2 добавить атрибут Проекты, а в измерении 3 оставить только ключевой атрибут Проекты и затем попробовать соединить измерения, то получаю ошибку "Для промежуточного атрибута гранулярности Проекты измерения 2 не включена иерархия атрибута.". Хотя на самом деле она включена и в измерении и в измерении куба.
12 янв 17, 18:44    [20099834]     Ответить | Цитировать Сообщить модератору
 Re: Связывание мер  [new]
SkyTod
Member

Откуда:
Сообщений: 30
Коломиец Юрий
SkyTod,

А как остальные измерения таблицы 2 (поля в примере не показаны), вязать, чтобы через измерение таблицы 2 увидеть данные таблицы 1 или 3?
Вы не слышали обо many-to-many или в чем проблема?
13 янв 17, 00:50    [20100788]     Ответить | Цитировать Сообщить модератору
 Re: Связывание мер  [new]
Коломиец Юрий
Member

Откуда:
Сообщений: 54
SkyTod,

Про многие ко многим знаю. Но этот вариант для меры из таблицы 1 не отображает запись 3, т.к. на нее нет ссылки в таблице 2.
13 янв 17, 10:14    [20101456]     Ответить | Цитировать Сообщить модератору
 Re: Связывание мер  [new]
Коломиец Юрий
Member

Откуда:
Сообщений: 54
А в моем случае для 3 строки 1 таблицы все-равно надо вывести значение, при этом в измерении Проекты должно быть значение "Нет данных".
В само измерение Проекты я добавил такое значение.
13 янв 17, 11:40    [20101896]     Ответить | Цитировать Сообщить модератору
 Re: Связывание мер  [new]
SkyTod
Member

Откуда:
Сообщений: 30
Коломиец Юрий,

3 строки 1 таблицы? Это что? Table1.Value_1?
13 янв 17, 14:47    [20103101]     Ответить | Цитировать Сообщить модератору
 Re: Связывание мер  [new]
Коломиец Юрий
Member

Откуда:
Сообщений: 54
SkyTod,

3 строка в таблице 1 с ID_1 = 3
13 янв 17, 15:20    [20103317]     Ответить | Цитировать Сообщить модератору
 Re: Связывание мер  [new]
SkyTod
Member

Откуда:
Сообщений: 30
Коломиец Юрий,

Я так понимаю, нужно сделать меру на основе измерения? Это факт связь.

https://msdn.microsoft.com/en-us/library/ms167409.aspx
+
IgnoreUnrelatedDimensions = false
13 янв 17, 18:43    [20104198]     Ответить | Цитировать Сообщить модератору
 Re: Связывание мер  [new]
Коломиец Юрий
Member

Откуда:
Сообщений: 54
SkyTod,

Нет, это не то.

Во вложении картинка со схемой данных, использованием измерений и результатом, который получается. Красным прямоугольником обозначение проблемное место. В итогах значение равно 3, а по измерению сумма равна 2. А мне надо, чтобы строк было 3 и в первой колонке было 3 единицы. В измерении Project_Table_2 были значения "Проект 1", "Проект 2", "Нет данных". Значение "Нет данных" соответствует 3 строке таблицы 1, ID_1 которого отсутствует в таблице 2.

К сообщению приложен файл. Размер - 59Kb
16 янв 17, 10:36    [20109241]     Ответить | Цитировать Сообщить модератору
 Re: Связывание мер  [new]
Коломиец Юрий
Member

Откуда:
Сообщений: 54
SkyTod,

В предыдущем сообщении картинка неверная.

"Нет, это не то.

Во вложении картинка со схемой данных, использованием измерений и результатом, который получается. Красным прямоугольником обозначение проблемное место. В итогах значение равно 3, а по измерению сумма равна 2. А мне надо, чтобы строк было 3 и в первой колонке было 3 единицы. В измерении Project_Table_2 были значения "Проект 1", "Проект 2", "Нет данных". Значение "Нет данных" соответствует 3 строке таблицы 1, ID_1 которого отсутствует в таблице 2."

К сообщению приложен файл. Размер - 147Kb
16 янв 17, 10:38    [20109253]     Ответить | Цитировать Сообщить модератору
 Re: Связывание мер  [new]
SkyTod
Member

Откуда:
Сообщений: 30
Коломиец Юрий,

Если я правильно понял, вам нужно указать:
UnknownMember = Visible
UnknownMemberName = Нет данных

в свойствах измерения Project_Table_2.
16 янв 17, 13:07    [20110083]     Ответить | Цитировать Сообщить модератору
 Re: Связывание мер  [new]
Коломиец Юрий
Member

Откуда:
Сообщений: 54
SkyTod,

Указаны оба свойства.
16 янв 17, 13:34    [20110242]     Ответить | Цитировать Сообщить модератору
 Re: Связывание мер  [new]
SkyTod
Member

Откуда:
Сообщений: 30
Коломиец Юрий,

KeyErrorAction = ConvertToUnknown?
17 янв 17, 12:49    [20113893]     Ответить | Цитировать Сообщить модератору
 Re: Связывание мер  [new]
Коломиец Юрий
Member

Откуда:
Сообщений: 54
SkyTod,

Да.
17 янв 17, 13:01    [20113952]     Ответить | Цитировать Сообщить модератору
 Re: Связывание мер  [new]
Коломиец Юрий
Member

Откуда:
Сообщений: 54
SkyTod,

Может тут все-таки надо делать ссылочное измерение, предварительно добавив в измерение Project_Table_2 атрибут FK_ID_1 со всеми возможными ID_1 из таблицы 1. Для записей ID_1, которых нет в таблице 2 значение атрибута Project сделать равным "Нет данных". Хотя это какой-то тупиковый путь получается и я как раз пытаюсь уйти от этого.
17 янв 17, 13:22    [20114068]     Ответить | Цитировать Сообщить модератору
 Re: Связывание мер  [new]
Коломиец Юрий
Member

Откуда:
Сообщений: 54
Единственный вариант при котором я добился желаемого результата - это создание отдельного представления с полями ID_1 таблицы 1 и Project таблицы 2 через левую связь, добавив обработку поля Project на NULL.
Затем на основании данного представления создал новое измерение, которое связал с мерами таблицы 1 и 2 через обычную связь по соответствующим полям.

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

К сообщению приложен файл. Размер - 123Kb
18 янв 17, 10:50    [20117416]     Ответить | Цитировать Сообщить модератору
 Re: Связывание мер  [new]
SkyTod
Member

Откуда:
Сообщений: 30
Коломиец Юрий,

Возможно, many2many обрезает что-то на уровне UnknownMember, сейчас нет времени пробовать у себя. Но советую все считать в DWH - не пожалеете. Ибо many2many это тормозная и сложная штука. Я его не используют именно из-за плохого опыта. Затем трудно самому разобрать, как оно работает, а кому-то другому объяснить - легче переписать.
18 янв 17, 18:52    [20119877]     Ответить | Цитировать Сообщить модератору
 Re: Связывание мер  [new]
Коломиец Юрий
Member

Откуда:
Сообщений: 54
SkyTod,

В целом все и так рассчитано на уровне хранилища. Здесь стоит задача объединить две таблицы показателей.
А создавать на уровне хранилища общую таблицу показателей на мой взгляд не верно.
19 янв 17, 11:09    [20121827]     Ответить | Цитировать Сообщить модератору
 Re: Связывание мер  [new]
Коломиец Юрий
Member

Откуда:
Сообщений: 54
SkyTod,

Кроме того, если я правильно понял описание свойства UnknownMember, то оно работает со значениями NULL и вместо этого значения подставляет указанно значение, а не выводом строк, с которыми измерение не связано.

Видимо из-за того, что в таблице 2 нет никакого указания на ID_1 = 3 таблицы 1, то такую строку для измерения Project вывести нельзя.

Либо создавать какую-то сводную таблицу, где будут все возможные варианты таблицы 1 и таблицы 2.
19 янв 17, 11:34    [20121948]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / OLAP и DWH Ответить