Compartilhar via


Lição 5-3 – Definir uma relação muitos para muitos

Aplica-se a: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

Ao definir uma dimensão, cada fato normalmente se une a somente um membro de dimensão, apesar de um único membro de dimensão poder ser associado a vários fatos diferentes. Por exemplo, cada cliente pode ter muitos pedidos, mas cada pedido pertence a somente um cliente. Na terminologia do banco de dados relacional, isso é conhecido como uma relação um-para-muitos. Porém, algumas vezes, um único fato pode se unir a vários membros de dimensão. Na terminologia de banco de dados relacional, isso é chamado de relação muitos-para-muitos. Por exemplo, um cliente tem vários motivos para efetuar uma compra, e um motivo de compra pode ser associado a várias compras. Uma tabela de junção é usada para definir os motivos de vendas relacionados a cada compra. Uma dimensão Motivo de Vendas formada por tais relações pode ter, então, vários membros relacionados a uma única transação de vendas. As dimensões muitos para muitos expandem o modelo dimensional além do esquema em estrela clássico e oferecem suporte a análises complexas quando as dimensões não estão relacionadas diretamente a uma tabela de fatos.

Em SQL Server Analysis Services, você define uma relação muitos para muitos entre uma dimensão e um grupo de medidas especificando uma tabela de fatos intermediária que é unida à tabela de dimensões. Uma tabela de fatos intermediária é unida, por sua vez, à tabela de dimensão intermediária à qual a tabela de fatos é unida. As relações muitos para muitos entre uma tabela de fatos intermediária e ambas as tabelas de dimensão na relação e a dimensão intermediária criam relações muitos para muitos entre membros da dimensão primária e medidas do grupo de medidas especificado pela relação. Para definir uma relação muitos para muitos entre uma dimensão e um grupo de medidas usando um grupo de medidas intermediário, esse grupo de medidas intermediário deve compartilhar uma ou mais dimensões com o grupo de medidas original.

Com uma dimensão muitos para muitos, os valores são somados distintamente, o que significa que eles não se agregam mais de uma vez ao membro Todos.

Observação

Para dar suporte a uma relação de dimensão muitos para muitos, uma relação chave-chave estrangeira primária deve ser definida na exibição da fonte de dados entre todas as tabelas envolvidas. Caso contrário, não será possível selecionar o grupo de medidas intermediário correto ao estabelecer a relação na guia Uso da Dimensão do Designer de Cubo.

Para obter mais informações, consulte Relações de dimensãoe Definir uma relação muitos-para-muitos e as propriedades da relação muitos-para-muitos.

Nas tarefas deste tópico, você definirá a dimensão Motivos de Vendas e o grupo de medidas Motivos de Vendas, além de uma relação muitos para muitos entre a dimensão Motivos de Vendas e o grupo de medidas Vendas pela Internet usando o grupo de medidas Motivos de Vendas.

Adicionando tabelas necessárias à exibição da fonte de dados

  1. Abra a exibição da fonte de dados Designer para a exibição da fonte de dados adventure works DW 2019.

  2. Clique com o botão direito do mouse em qualquer lugar do painel Organizador de Diagramas , clique em Novo Diagramae especifique Motivos do Pedido de Vendas pela Internet como o nome desse novo diagrama.

  3. Arraste a tabela InternetSales do painel Tabelas para o painel Diagrama .

  4. Clique com o botão direito do mouse em qualquer lugar no painel Diagrama e clique em Adicionar/Remover Tabelas.

  5. Na caixa de diálogo Adicionar/Remover Tabelas , adicione as tabelas DimSalesReason e FactInternetSalesReason à lista Objetos incluídos e clique em OK.

    Observe que as relações chave-chave estrangeira primária entre as tabelas envolvidas são estabelecidas automaticamente porque essas relações são definidas no banco de dados relacional subjacente. Se essas relações não foram definidas em um banco de dados relacional subjacente, talvez seja necessário defini-las na exibição da fonte de dados.

  6. No menu Formatar , aponte para Layout Automáticoe, em seguida, clique em Diagrama.

  7. Na janela Propriedades, altere o valor da propriedade FriendlyName da tabela DimSalesReason para SalesReason. Depois, altere a propriedade FriendlyName da tabela FactInternetSalesReason para InternetSalesReason.

  8. No painel Tabelas , expanda InternetSalesReason (dbo.FactInternetSalesReason), clique em SalesOrderNumbere examine a propriedade DataType desta coluna de dados na janela Propriedades.

    Observe que o tipo de dados da coluna SalesOrderNumber é cadeia de caracteres.

  9. Revise os tipos de dados das outras colunas na tabela InternetSalesReason .

    Observe que os tipos de dados das outras duas colunas nessa tabela são numéricos.

  10. No painel Tabelas , clique com o botão direito do mouse em InternetSalesReason (dbo.FactInternetSalesReason)e clique em Explorar Dados.

    Observe que, para cada número de linha dentro de cada pedido, um valor de chave identifica o motivo das vendas para a compra daquele item de linha, como mostra a imagem a seguir:

    Valor-chave para identificar o motivo das vendas para compras

Definindo o grupo de medidas intermediário

  1. Alterne para Designer de Cubo para o cubo do Tutorial do SQL Server Analysis Services e clique na guia Estrutura do Cubo.

  2. Clique com o botão direito do mouse em qualquer lugar do painel Medidas e clique em Novo Grupo de Medidas. Para obter mais informações, consulte Criar medidas e grupos de medidas em modelos multidimensionais.

  3. Na caixa de diálogo Novo Grupo de Medidas , selecione InternetSalesReason na lista Selecione uma tabela na exibição da fonte de dados e clique em OK.

    Observe que o grupo de medidas Motivo de Vendas pela Internet agora é exibido no painel Medidas .

  4. Expanda o grupo de medidas Motivo de Vendas pela Internet .

    Observe que somente uma única medida está definida para esse novo grupo de medidas, a medida Contagem de Motivo de Vendas pela Internet .

  5. Selecione Contagem de Motivo de Vendas pela Internet e revise as propriedades dessa medida na janela Propriedades.

    Observe que a propriedade AggregateFunction dessa medida é definida como Contagem em vez de Soma. SQL Server Analysis Services escolheu Contagem porque o tipo de dados subjacente é um tipo de dados de cadeia de caracteres. As outras duas colunas na tabela de fatos subjacente não foram selecionadas como medidas porque SQL Server Analysis Services as detectou como chaves numéricas em vez de como medidas reais. Para obter mais informações, consulte Definir um comportamento semiaditivo.

  6. Na janela Propriedades, altere a propriedade Visible da medida Contagem do Motivo de Vendas pela Internet para False.

    Essa medida só será usada para unir a dimensão Motivo de Vendas que você definirá próxima ao grupo de medidas Vendas pela Internet. Os usuários não navegarão nessa medida diretamente.

    A imagem a seguir mostra as propriedades da medida Contagem do Motivo de Vendas pela Internet .

    Propriedades para a medida Contagem de Motivos de Vendas pela Internet

Definindo a dimensão muitos para muitos

  1. Em Gerenciador de Soluções, clique com o botão direito do mouse em Dimensões e clique em Nova Dimensão.

  2. Na página Bem-vindo ao Assistente para Dimensões , clique em Avançar.

  3. Na página Selecionar Método de Criação , verifique se a opção Usar uma tabela existente está selecionada e clique em Avançar.

  4. Na página Especificar Informações de Origem, verifique se a exibição da fonte de dados Adventure Works DW 2019 está selecionada.

  5. Na lista Tabela principal , selecione SalesReason.

  6. Na lista Colunas de chave , verifique se SalesReasonKey está listado.

  7. Na lista Coluna de nome , selecione SalesReasonName.

  8. Clique em Próximo.

  9. Na página Selecionar Atributos de Dimensão , o atributo Chave do Motivo de Vendas é selecionado automaticamente, pois se trata de um atributo de chave. Selecione a caixa de seleção ao lado do atributo Tipo de Motivo do Motivo de Vendas , altere o nome para Tipo do Motivo de Vendase, em seguida, clique em Avançar.

  10. Na página Concluindo o Assistente , clique em Concluir para criar a dimensão Motivo de Vendas.

  11. No menu Arquivo , clique em Salvar Tudo.

  12. No painel Atributos do Designer de Dimensão da dimensão Motivo de Vendas , selecione Motivo de Vendas Keye depois altere a propriedade Name na janela Propriedades para Motivo de Vendas.

  13. No painel Hierarquias do Designer de Dimensão, crie uma hierarquia de usuário Motivos de Vendas que contenha os níveis Tipo do Motivo de Vendas e Motivo de Vendas , nessa ordem.

  14. Na janela Propriedades, defina Todos os Motivos de Vendas como o valor da propriedade AllMemberName da hierarquia Motivos de Vendas.

  15. Defina Todos os Motivos de Vendas como o valor da propriedade AttributeAllMemberName da dimensão Motivo de Vendas.

  16. Para adicionar a dimensão recém-criada ao cubo do Tutorial do SQL Server Analysis Services como uma dimensão de cubo, alterne para Designer de Cubo. Na guia Estrutura do Cubo , clique com o botão direito do mouse no painel Dimensões e selecione Adicionar Dimensão do Cubo.

  17. Na caixa de diálogo Adicionar Dimensão do Cubo , selecione Motivo de Vendas e então clique em OK.

  18. No menu Arquivo , clique em Salvar Tudo.

Definindo a relação muitos para muitos

  1. Alterne para Designer de Cubo para o cubo do Tutorial do SQL Server Analysis Services e clique na guia Uso da Dimensão.

    Observe que a dimensão Motivo de Vendas tem uma relação regular definida com o grupo de medidas Motivo de Vendas pela Internet , mas não tem relação definida com o grupo de medidas Vendas pela Internet ou Vendas do Revendedor . Observe também que a dimensão Detalhes do Pedido de Vendas pela Internet tem uma relação regular definida com a dimensão Motivo de Vendas pela Internet que, por sua vez, tem uma Relação de Fato com o grupo de medidas Vendas pela Internet . Se essa dimensão não existir (ou outra dimensão com uma relação com os grupos de medidas Motivo de Vendas pela Internet e Vendas pela Internet não existir), você não conseguirá definir a relação muitos-para-muitos.

  2. Clique na célula na interseção do grupo de medidas Vendas pela Internet e da dimensão Motivo de Vendas e clique no botão Procurar (...).

  3. Na caixa de diálogo Definir Relação , selecione Muitos-para-Muitos na lista Selecionar tipo de relação .

    Você tem que definir o grupo de medidas intermediário que conecta a dimensão Motivo de Vendas ao grupo de medidas Vendas pela Internet.

  4. Na lista Grupo de medidas intermediário , selecione Motivo de Vendas pela Internet.

    A imagem a seguir mostra as alterações na caixa de diálogo Definir Relação :

    Caixa de diálogo Definir Relação

  5. Clique em OK.

    Observe o ícone muitos para muitos que representa a relação entre a dimensão Motivo de Vendas e o grupo de medidas Vendas pela Internet.

Navegando no cubo e na dimensão muitos para muitos

  1. No menu Compilar , clique em Implantar Tutorial do Analysis Services.

  2. Quando a implantação for concluída com êxito, alterne para a guia Navegador no Cubo Designer para o cubo do Tutorial do SQL Server Analysis Services e clique em Reconectar.

  3. Adicione a medida Vendas pela Internet/Valor das Vendas à área de dados do painel de dados.

  4. Adicione a hierarquia definida pelo usuário Motivos de Vendas da dimensão Motivo de Vendas à área de linha do painel de dados.

  5. No painel de metadados, expanda Cliente, Local, Geografia do Cliente, Membros, Todos os Clientes, Austrália, clique com o botão direito do mouse em Queenslande, por fim, clique em Adicionar ao Filtro.

  6. Expanda cada membro do nível Tipo de Motivo de Vendas para examinar os valores em dólar associados a cada motivo que um cliente em Queensland deu para comprar um produto da Adventure Works pela Internet.

    Observe que os totais associados a cada motivo de vendas são maiores do que as vendas totais. Isso acontece porque alguns clientes citaram vários motivos para suas compras.

    A imagem a seguir mostra os painéis Filtro e Dados do Designer de Cubo:

    Filtrar e painéis de dados dos

Próxima tarefa da lição

Definindo a granularidade da dimensão dentro de um grupo de medidas

Consulte Também

Trabalhar com diagramas em um Designer de exibição da fonte de dados (Analysis Services)
Relações de dimensão
Definir uma relação muitos-para-muitos e as propriedades da relação muitos-para-muitos