Занятие 5-3-определение связи «многие ко многим»Lesson 5-3 - Defining a Many-to-Many Relationship

Область применения: ДаSQL Server Analysis Services неAzure Analysis ServicesAPPLIES TO: yesSQL Server Analysis Services noAzure Analysis Services

При определении измерения каждый из фактов, как правило, соединяется с одним и только одним элементом измерения, в то время как отдельные элементы измерения могут быть связаны с несколькими разными фактами.When you define a dimension, typically each fact joins to one and only one dimension member, whereas a single dimension member can be associated with many different facts. Например, клиент может иметь много заказов, но каждый заказ принадлежит только одному клиенту.For example, each customer can have many orders but each order belongs to a single customer. В терминологии реляционных баз данных такая связь имеет название связь "один ко многим".In relational database terminology, this is referred to as a one-to-many relationship. Однако в некоторых случаях один факт может быть соединен с несколькими элементами измерения.However, sometimes a single fact can join to multiple dimension members. В терминологии реляционных баз данных такая связь имеет название связь "многие ко многим".In relational database terminology, this is referred to as a many-to-many relationship. Например, клиент может иметь несколько причин для совершения покупки, а причина покупки может быть связана с несколькими покупками.For example, a customer may have multiple reasons for making a purchase, and a purchase reason can be associated with multiple purchases. Соединяемая таблица используется для определения причин покупок, которые связаны с каждой покупкой.A join table is used to define the sales reasons that relate to each purchase. Измерение «Причина покупки», основанное на таких связях, будет иметь несколько элементов, связанных с одной транзакцией продажи.A Sales Reason dimension constructed from such relationships would then have multiple members that relate to a single sales transaction. Связи «многие ко многим» выводят модель измерений за пределы классической схемы «звезда» и поддерживают комплексную аналитику, когда измерения не связаны напрямую с таблицей фактов.Many-to-many dimensions expand the dimensional model beyond the classic star schema and support complex analytics when dimensions are not directly related to a fact table.

В службах Службы Analysis ServicesAnalysis Servicesсвязь «многие ко многим» между измерением и группой мер определяется указанием промежуточной таблицы фактов, которая соединяется с таблицей измерения.In Службы Analysis ServicesAnalysis Services, you define a many-to-many relationship between a dimension and a measure group by specifying an intermediate fact table that is joined to the dimension table. В свою очередь, промежуточная таблица фактов соединена с промежуточной таблицей измерения, с которой связана эта таблица фактов.An intermediate fact table is joined, in turn, to an intermediate dimension table to which the fact table is joined. Связи «многие ко многим» между промежуточной таблицей фактов, таблицами измерений в этой связи и промежуточным измерением создают связи «многие ко многим» между элементами первичных измерений и мерами группы мер, которая указана данной связью.The many-to-many relationships between the intermediate fact table and both the dimension tables in the relationship and the intermediate dimension creates the many-to-many relationships between members of the primary dimension and measures in the measure group that is specified by the relationship. Чтобы определить связь «многие ко многим» между измерением и группой мер через промежуточную группу мер, промежуточная группа мер должна иметь одно или несколько общих измерений с исходной группой мер.In order to define a many-to-many relationship between a dimension and a measure group through an intermediate measure group, the intermediate measure group must share one or more dimensions with the original measure group.

С измерением «многие ко многим» значения суммируются отдельно, что означает, что они не вычисляются более одного раза для элемента «Все».With a many-to-many dimension, values are distinct summed, which means that they do not aggregate more than once to the All member.

Примечание

Для поддержки связи измерений многие ко многим, необходимо определить отношением первичного и внешнего ключа в представлении источника данных между всеми задействованными таблицами.In order to support a many-to-many dimension relationship, a primary key-foreign key relationship must be defined in the data source view between all the tables that are involved. В обратном случае будет невозможно выбрать верную промежуточную группу мер при определении связи на вкладке Использование измерений конструктора кубов.Otherwise, you will not be able to select the correct intermediate measure group when you establish the relationship in the Dimension Usage tab of Cube Designer.

Дополнительные сведения см. в разделах Связи измеренийи Определение связей "многие ко многим" и свойств связей "многие ко многим".For more information, see Dimension Relationships, and Define a Many-to-Many Relationship and Many-to-Many Relationship Properties.

В задачах этого раздела предстоит определить измерение Sales Reasons и группу мер Sales Reasons, а также создать связь «многие ко многим» между измерением Sales Reasons и группой мер Internet Sales через группу мер Sales Reasons.In the tasks in this topic, you define the Sales Reasons dimension and the Sales Reasons measure group, and you define a many-to-many relationship between the Sales Reasons dimension and the Internet Sales measure group through the Sales Reasons measure group.

Добавление необходимых таблиц к представлению источника данныхAdding Required Tables to the Data Source View

  1. Откройте конструктор представлений источника данных для представления источников данных Adventure Works DW 2012 .Open Data Source View Designer for the Adventure Works DW 2012 data source view.

  2. Щелкните правой кнопкой мыши панель Организатор диаграмм , выберите команду Создать диаграммуи укажите Причина заказа через Интернет в качестве имени созданной диаграммы.Right-click anywhere in the Diagram Organizer pane, click New Diagram, and specify Internet Sales Order Reasons as the name for this new diagram.

  3. Перетащите таблицу InternetSales с панели Таблицы на панель Диаграмма .Drag the InternetSales table to the Diagram pane from the Tables pane.

  4. Щелкните правой кнопкой мыши панель Диаграмма и выберите команду Добавить или удалить таблицы.Right-click anywhere in the Diagram pane, and then click Add/Remove Tables.

  5. В диалоговом окне Добавление или удаление таблиц добавьте в список Включенные объекты таблицы DimSalesReason и FactInternetSalesReason , а затем нажмите кнопку ОК.In the Add/Remove Tables dialog box, add the DimSalesReason table and the FactInternetSalesReason table to the Included objects list, and then click OK.

    Обратите внимание на то, что связи первичного и внешнего ключей между задействованными таблицами создается автоматически, так как эти связи определены в базовой реляционной базе данных.Notice that the primary key-foreign key relationships between the tables that are involved are established automatically because those relationships are defined in the underlying relational database. Если эти связи не определены в базовой реляционной базе данных, их следует определить в представлении источника данных.If these relationships were not defined in the underlying relational database, you would have to define them in the data source view.

  6. В меню Формат выберите команду Автоматический макети щелкните значок Диаграмма.On the Format menu, point to Auto Layout, and then click Diagram.

  7. В окне свойств измените свойство FriendlyName таблицы DimSalesReason на SalesReason, затем измените свойство FriendlyName таблицы FactInternetSalesReason на InternetSalesReason.In the Properties window, change the FriendlyName property of the DimSalesReason table to SalesReason, and then change the FriendlyName property of the FactInternetSalesReason table to InternetSalesReason.

  8. На панели Таблицы разверните узел InternetSalesReason (dbo.FactInternetSalesReason), щелкните столбец SalesOrderNumberи просмотрите в окне свойств свойство DataType для этого столбца данных.In the Tables pane, expand InternetSalesReason (dbo.FactInternetSalesReason), click SalesOrderNumber, and then review the DataType property for this data column in the Properties window.

    Обратите внимание, что в качестве типа данных для столбца SalesOrderNumber указан тип данных string.Notice that the data type for the SalesOrderNumber column is a string data type.

  9. Просмотрите типы данных для других столбцов таблицы FactInternetSalesReason .Review the data types for the other columns in the InternetSalesReason table.

    Обратите внимание, что для остальных двух столбцов этой таблицы указаны числовые типы данных.Notice that the data types for the other two columns in this table are numeric data types.

  10. На панели Таблицы щелкните правой кнопкой мыши таблицу InternetSalesReason (dbo.FactInternetSalesReason) и выберите пункт Просмотр данных.In the Tables pane, right-click InternetSalesReason (dbo.FactInternetSalesReason), and then click Explore Data.

    Обратите внимание, что для каждого номера строки каждого заказа значение ключа указывает причину покупки данной позиции линии, как показано на следующем рисунке.Notice that, for each line number within each order, a key value identifies the sales reason for the purchase of that line item, as shown in the following image.

    Ключ значение, определяющее причину продажиKey value to identify sales reason for purchases

Определение промежуточной группы мерDefining the Intermediate Measure Group

  1. Переключитесь в конструктор кубов на куб Службы Analysis ServicesAnalysis Services Tutorial и откройте вкладку Структура куба .Switch to Cube Designer for the Службы Analysis ServicesAnalysis Services Tutorial cube, and then click the Cube Structure tab.

  2. Щелкните правой кнопкой мыши панель Меры и выберите команду Создать группу мер.Right-click anywhere in the Measures pane, and then click New Measure Group. Дополнительные сведения см. в разделе Создание мер и групп мер в многомерных моделях.For more information, see Create Measures and Measure Groups in Multidimensional Models.

  3. В диалоговом окне Создание группы мер в списке Выберите таблицу из представления источников данных выберите таблицу InternetSalesReason и нажмите кнопку ОК.In the New Measure Group dialog box, select InternetSalesReason in the Select a table from the data source view list, and then click OK.

    Обратите внимание, что на панели Меры теперь отображается группа мер Internet Sales Reason .Notice that the Internet Sales Reason measure group now appears in the Measures pane.

  4. Разверните группу мер Internet Sales Reason .Expand the Internet Sales Reason measure group.

    Обратите внимание, что для этой группы мер определена единственная мера, Internet Sales Reason Count .Notice that only a single measure is defined for this new measure group, the Internet Sales Reason Count measure.

  5. Выберите меру Internet Sales Reason Count и просмотрите свойства этой меры в окне свойств.Select Internet Sales Reason Count and review the properties of this measure in the Properties window.

    Обратите внимание, что свойство AggregateFunction для этой меры определено как Число , а не Сумма.Notice that the AggregateFunction property for this measure is defined as Count instead of Sum. Службы Analysis ServicesAnalysis Services Число Число , поскольку базовый тип данных — строковый.chose Count because the underlying data type is a string data type. Другие два столбца в базовой таблице фактов не были выделены как меры, поскольку в службах Службы Analysis ServicesAnalysis Services они определены как числовые ключи, а не фактические меры.The other two columns in the underlying fact table were not selected as measures because Службы Analysis ServicesAnalysis Services detected them as numeric keys instead of as actual measures. Дополнительные сведения см. в разделе Определение полуаддитивного режима.For more information, see Define Semiadditive Behavior.

  6. В окне «Свойства» измените значение свойства Visible меры Internet Sales Reason Count на False.In the Properties window, change the Visible property of the Internet Sales Reason Count measure to False.

    Эта мера будет использована только для соединения измерения Sales Reason, которое предстоит определить после группы мер Internet Sales.This measure will only be used to join the Sales Reason dimension that you will define next to the Internet Sales measure group. Пользователи не смогут просматривать эту меру.Users will not browse this measure directly.

    На следующем рисунке демонстрируются свойства меры Internet Sales Reason Count .The following image shows the properties for the Internet Sales Reason Count measure.

    Свойства меры Internet Sales Reason CountProperties for Internet Sales Reason Count measure

Определение измерения «многие ко многим»Defining the Many-to-Many Dimension

  1. В обозревателе решений щелкните правой кнопкой мыши узел Измеренияи выберите команду Создать измерение.In Solution Explorer, right-click Dimensions, and then click New Dimension.

  2. На странице Вас приветствует мастер измерений нажмите кнопку Далее.On the Welcome to the Dimension Wizard page, click Next.

  3. На странице Выбор метода создания выберите параметр Использовать существующую таблицу и нажмите кнопку Далее.On the Select Creation Method page, verify that the Use an existing table option is selected, and then click Next.

  4. На странице Определение исходных сведений убедитесь, что выбрано представление источника данных Adventure WorksAdventure Works DW 2012.On the Specify Source Information page, verify that the Adventure WorksAdventure Works DW 2012 data source view is selected.

  5. В списке Основная таблица выберите таблицу SalesReason.In the Main table list, select SalesReason.

  6. Убедитесь, что в списке Ключевые столбцы присутствует столбец SalesReasonKey .In the Key columns list, verify that SalesReasonKey is listed.

  7. В списке Столбец имени выберите SalesReasonName.In the Name column list, select SalesReasonName.

  8. Нажмите кнопку Далее.Click Next.

  9. На странице Выбор атрибутов измерения атрибут Sales Reason Key автоматически выбран, поскольку он является ключевым.On the Select Dimension Attributes page, the Sales Reason Key attribute is automatically selected because it is the key attribute. Установите флажок рядом с атрибутом Sales Reason Reason Type , измените его имя на Sales Reason Typeи нажмите кнопку Далее.Select the check box beside the Sales Reason Reason Type attribute, change its name to Sales Reason Type, and then click Next.

  10. На странице Завершение работы мастера нажмите кнопку Готово , чтобы создать измерение Sales Reason.On the Completing the Wizard page, click Finish to create the Sales Reason dimension.

  11. В меню Файл выберите команду Сохранить все.On the File menu, click Save All.

  12. На панели Атрибуты конструктора измерений для измерения Sales Reason выберите Sales Reason Keyи в окне свойств задайте для свойства Name значение Sales Reason.In the Attributes pane of the Dimension Designer for the Sales Reason dimension, select Sales Reason Key, and then change the Name property in the Properties window to Sales Reason.

  13. На панели Иерархии конструктора измерений создайте пользовательскую иерархию Sales Reasons , которая будет содержать уровни Sales Reason Type и Sales Reason (в указанном порядке).In the Hierarchies pane of the Dimension Designer, create a Sales Reasons user hierarchy that contains the Sales Reason Type level and the Sales Reason level, in that order.

  14. В окне свойств задайте значение Все причины покупки для свойства AllMemberName иерархии Sales Reason.In the Properties window, define All Sales Reasons as the value for the AllMemberName property of the Sales Reasons hierarchy.

  15. Укажите значение Все причины покупки для свойства AttributeAllMemberName измерения Sales Reason.Define All Sales Reasons as the value for AttributeAllMemberName property of the Sales Reason dimension.

  16. Чтобы добавить созданное измерение в куб Службы Analysis ServicesAnalysis Services Tutorial, переключитесь в Конструктор кубов.To add the newly created dimension to the Службы Analysis ServicesAnalysis Services Tutorial cube as a cube dimension, switch to Cube Designer. На вкладке Структура куба щелкните правой кнопкой мыши панель Измерения и выберите команду Добавить измерение куба.On the Cube Structure tab, right-click in the Dimensions pane and select Add Cube Dimension.

  17. В диалоговом окне Добавление измерения куба выберите Sales Reason и нажмите кнопку ОК.In the Add Cube Dimension dialog box, select Sales Reason and then click OK.

  18. В меню Файл выберите команду Сохранить все.On the File menu, click Save All.

Определение связи «многие ко многим»Defining the Many to Many Relationship

  1. Переключитесь в конструкторе кубов на куб Службы Analysis ServicesAnalysis Services Tutorial и откройте вкладку Использование измерений .Switch to Cube Designer for the Службы Analysis ServicesAnalysis Services Tutorial cube, and then click the Dimension Usage tab.

    Обратите внимание, что измерение Sales Reason имеет обычную связь, определенную группой мер Internet Sales Reason , но не имеет связи, определенной группами мер Internet Sales или Reseller Sales .Notice that the Sales Reason dimension has a regular relationship defined with the Internet Sales Reason measure group, but has no relationship defined with the Internet Sales or Reseller Sales measure groups. Обратите внимание, что измерение Подробности заказа через Интернет имеет обычную связь, определенную измерением Причина продажи через Интернет , которое в свою очередь имеет Fact Relationship с группой мер Internet Sales .Notice also that the Internet Sales Order Details dimension has a regular relationship defined with the Internet Sales Reason dimension, which in turn has a Fact Relationship with the Internet Sales measure group. Если измерение не найдено (или не найдено другое измерение со связью с обеими группами мер: Причина покупки через Интернет и Продажи через Интернет ), не получится определить связь "многие ко многим".If this dimension was not present (or another dimension with a relationship with both the Internet Sales Reason and the Internet Sales measure group were not present), you would not be able to define the many-to-many relationship.

  2. Щелкните ячейку на пересечении группы мер Продажи через Интернет и измерения Причина покупки , а затем нажмите кнопку обзора (...).Click the cell at the intersection of the Internet Sales measure group and the Sales Reason dimension and then click the browse button (...).

  3. В диалоговом окне Задание связи в списке Выберите тип связи укажите значение Многие ко многим .In the Define Relationship dialog box, select Many-to-Many in the Select relationship type list.

    Требуется определить промежуточную группу мер, соединяющую измерение Sales Reason и группу мер Internet Sales.You have to define the intermediate measure group that connects the Sales Reason dimension to the Internet Sales measure group.

  4. В списке Промежуточная группа мер выберите значение Internet Sales Reason.In the Intermediate measure group list, select Internet Sales Reason.

    На следующем рисунке отражены изменения, сделанные в диалоговом окне Задание связи .The following image shows the changes in the Define Relationship dialog box.

    Диалоговое окно Определение связиDefine Relationship dialog box

  5. Нажмите кнопку ОК.Click OK.

    Обратите внимание на значок «многие ко многим», который отражает связь между измерением Sales Reason и группой мер Internet Sales.Notice the many-to-many icon that represents the relationship between the Sales Reason dimension and the Internet Sales measure group.

Просмотр куба и измерения «многие ко многим»Browsing the Cube and the Many-to-Many Dimension

  1. В меню Сборка выберите команду Развернуть Analysis Services Tutorial.On the Build menu, click Deploy Analysis Services Tutorial.

  2. После успешного завершения развертывания перейдите на вкладку Браузер в конструкторе кубов Службы Analysis ServicesAnalysis Services Tutorial и нажмите кнопку Повторное соединение.When deployment has successfully completed, switch to the Browser tab in Cube Designer for the Службы Analysis ServicesAnalysis Services Tutorial cube, and then click Reconnect.

  3. В область данных панели "Данные" добавьте меру Продажи через Интернет — объем продаж .Add the Internet Sales-Sales Amount measure to the data area of the data pane.

  4. Добавьте определенную пользователем иерархию Причины покупки из измерения Причина покупки в область строк панели данных.Add the Sales Reasons user-defined hierarchy from the Sales Reason dimension to the row area of the data pane.

  5. На панели метаданных разверните узлы Заказчик, Расположение, География заказчика, Члены, Все заказчики, Австралия, щелкните правой кнопкой мыши элемент Квинсленди выберите команду Добавить в фильтр.In the metadata pane, expand Customer, expand Location, expand Customer Geography, expand Members, expand All Customers, expand Australia, right-click Queensland, and then click Add to Filter.

  6. Раскройте каждый из элементов уровня Sales Reason Type , чтобы просмотреть суммы в долларах для каждой из причин, которые выдвинул заказчик из штата Квинсленд (Queensland) в обоснование покупки товара Adventure WorksAdventure Works через Интернет.Expand each member of the Sales Reason Type level to review the dollar values that are associated with each reason a customer in Queensland gave for their purchase of an Adventure WorksAdventure Works product over the Internet.

    Обратите внимание, что итоговые суммы по каждой из причин покупки в совокупности больше, чем общая сумма продаж.Notice that the totals that are associated with each sales reason add up to more than the total sales. Это вызвано тем, что некоторые заказчики указали несколько причин покупки.This is because some customers cited multiple reasons for their purchase.

    На следующем рисунке показаны панели конструктора кубов Фильтр и Данные .The following image shows the Filter pane and Data pane of Cube Designer.

    Фильтрация и данных панели конструктора кубовFilter and Data panes of Cube Designer

Следующая задача занятияNext Task in Lesson

Определение степени гранулярности измерения в группе мерDefining Dimension Granularity within a Measure Group

См. такжеSee Also

Работа с диаграммами в конструкторе представлений источника данных (службы Analysis Services)Work with Diagrams in Data Source View Designer (Analysis Services)
Связи измеренийDimension Relationships
Определение связей "многие ко многим" и свойств связей "многие ко многим"Define a Many-to-Many Relationship and Many-to-Many Relationship Properties