Самостоятельное присоединение к службам SSAS

У меня есть такая таблица:

PersonId    Job    City    ParentId
---------   ----   -----   --------
101          A      C1      105
102          B      C2      101
103          A      C1      102

Затем мне нужно получить правила ассоциации между работой человека и городом родителя.

Я использовал самоссылку и определял прецеденты/вложенные таблицы, но в результате графа зависимостей нет никакой разницы между работой или городом человека и работой или городом родителя!

Какое лучшее решение этой проблемы в проекте SSAS?


person ARZ    schedule 07.07.2011    source источник


Ответы (3)


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

person Aaron Deutsch    schedule 09.01.2015

Я столкнулся с подобной потребностью в своей работе. До сих пор я исследовал только табличные модели SQL Server Analysis Services. Я обновлю этот ответ дополнительной информацией, как только закончу изучение многомерных моделей.

Согласно отношениям (таблица SSAS) табличные модели SSAS не поддерживают самообъединения (см. соответствующую цитату ниже). В конечном итоге вам нужно разбить группу родительских элементов и каждый уровень их дочерних элементов на отдельные таблицы модели. После того, как у вас есть таблицы моделей, вы можете использовать представление схемы для построения соответствующих отношений.

Самообъединения и циклы

Самостоятельные соединения не разрешены в таблицах табличной модели. Самосоединение — это рекурсивная связь между таблицей и самой собой. Самосоединения часто используются для определения иерархий родитель-потомок. Например, вы можете соединить таблицу «Сотрудники» с самой собой, чтобы создать иерархию, показывающую цепочку управления в бизнесе.

Конструктор моделей не позволяет создавать циклы между отношениями в модели. Другими словами, следующий набор отношений запрещен. +

Таблица 1, колонка a – Таблица 2, колонка f

Таблица 2, столбец f – Таблица 3, столбец n

Таблица 3, столбец n к Таблице 1, столбец a

Если вы попытаетесь создать связь, которая приведет к созданию цикла, будет сгенерирована ошибка.

person JamieSee    schedule 15.08.2017

Не уверен точно, чего вы пытаетесь достичь, но следующий SQL будет хорошей отправной точкой:

select c.PersonId , p.City 
from ptable c, ptable p
where c.ParentId = p.PersonId
person James Anderson    schedule 07.07.2011
comment
спасибо, но мне нужно решение для правил ассоциации служб анализа SQL Server, а не для очереди Linq. - person ARZ; 07.07.2011