Sobre a modelagem de cubos OLAP em pacotes de gerenciamento

 

Publicado: julho de 2016

Aplicável a: System Center 2012 SP1 - Service Manager, System Center 2012 R2 Service Manager, System Center 2012 - Service Manager

O recurso para definir elementos personalizados do pacote de gerenciamento foi usado para modelar os elementos do pacote de gerenciamento de cubos OLAP (processamento analítico online) que são incluídos no System Center 2012 - Service Manager. Esses elementos do pacote de gerenciamento possibilitam que o usuário defina e personalize de forma declarativa um cubo OLAP em um nível mais alto de abstração. Com base na definição, a implantação desses elementos do pacote de gerenciamento criam as relações, os componentes e os blocos de construção fundamentais corretos do cubo OLAP em um nível mais alto de detalhes, sem qualquer orientação adicional do usuário. Estes são os dois elementos principais de pacote de gerenciamento incluídos em cubos OLAP:

  • SystemCenterCube

  • CubeExtension

SystemCenterCube

O elemento SystemCenterCube define o cubo OLAP para um grau variável de detalhes, dependendo de suas necessidades específicas. Esse elemento contém os seguintes subelementos:

  • MeasureGroup

  • Substituição

  • CustomMDX

  • NamedCalculation

  • Medida

  • KPI

  • Ação (no entanto, apenas ações de detalhamento têm suporte no momento)

  • ManyToManyRelationship

MeasureGroup

Cada cubo OLAP contém uma coleção de fatos que existem no data mart, em que cada membro na coleção corresponde a um grupo de medidas. Cada grupo de medidas deve ter seu próprio nome exclusivo dentro do cubo OLAP. No entanto, um fato único pode corresponder a vários grupos de medidas em um cubo OLAP. Por exemplo, a relação abstrata WorkItemAssignedToUser pode ser definida três vezes em um cubo OLAP, com os nomes exclusivos de grupos de medidas ChangeRequestAssignedToUser, IncidentAssignedToUser e ProblemAssignedToUser. Conforme descrito na seção Substituição, você pode personalizar o fato de forma que apenas solicitações de alteração, incidentes e problemas sejam incluídos no respectivo grupo de medidas para o cubo OLAP.

O exemplo a seguir mostra o elemento de pacote de gerenciamento para o grupo de medidas IncidentAssignedToUser:

<MeasureGroup DateDimAlias="IncidentAssignedToUserDateDim" MeasureGroupName-"IncidentAssignedTouser" Fact="DWBase!WorkItemAssignedToUserFact"/>  

Quando o cubo OLAP é implantado, a dimensão, as subdimensões e as relações de chave estrangeira são automaticamente calculadas e o modo de exibição de fonte de dados é atualizado com esses novos elementos. A tabela a seguir descreve os atributos do grupo de medidas.

Atributo Necessária Valores Definição
DateDimAlias Não Cadeia de caracteres O nome da dimensão de data que filtrará neste grupo de medidas. Se nenhum alias for definido, o nome de execução da função date dim será automaticamente "(MeasureGroupName)_DateDim"
MeasureGroupName Sim Cadeia de caracteres O nome do grupo de medidas no cubo. Esse nome deve ser exclusivo dentro do cubo.
Fato Sim Relationship ou CustomFact O destino do grupo de medidas, que deve ser um fato no data warehouse.

Substituição

Como fatos de relação no data warehouse podem levar a relações e dimensões abstratas, você precisa substituir em dimensões concretas, de forma que o grupo de medidas conterá apenas instâncias que você deseja procurar.

Isso é ilustrado no exemplo a seguir.

<Substitution MeasureGroupName="IncidentAssignedTouser" RelationshipEndpoint="Source" Relationship="Workitem!System.WorkItemAssignedToUser" TargetDimension="DWBase!WorkItemDim" ReplacementDimension="IncidentDW!IncidentDim"/>  

Nesse exemplo, o grupo de medidas IncidentAssignedToUser aponta para a relação WorkitemAssignedToUser. No entanto, essa relação não conterá apenas incidentes, mas também conterá solicitações de alteração e problemas que também foram atribuídos a qualquer usuário. Para garantir que esse grupo de medidas contenha apenas incidentes, o Service Manager substitui WorkItemDim por IncidentDim. Isso significa que a tabela criada no modo de exibição de fonte de dados para o grupo de medidas executa automaticamente uma junção interna no WorkItemDim com IncidentDim e retorna apenas aquelas instâncias em que uma junção é válida com base no EntityDimKey ou no BaseManagedEntityId.

Lembre-se de que você deve definir o ponto de extremidade de relação onde você deseja executar a substituição. Esse elemento é necessário porque é possível que as dimensões de origem e ponto de extremidade sejam idênticas e uma metodologia é necessária para identificar exclusivamente qual dimensão substituir. Um exemplo de tal relação é WorkItemRelates to WorkItem.

O elemento de substituição também é usado para definir as dimensões de alias para o cubo. Em outras palavras, é possível definir um nome de alias para uma dimensão, mas não é necessário substituir de fato uma dimensão. De fato, a substituição nesse caso não está na dimensão, mas na dimensão de cubo ou no nome da dimensão de alias, como mostrado no seguinte exemplo:

<Substitution MeasureGroupName="IncidentAssignedToUser" RelationshipEndpoint="Target" Relationship="Workitem!System.WorkItemAssignedToUser" AliasTargetDimensionAs="AssignedToUserDim" TargetDimension="DWBase!UserDim"/>  

Neste exemplo, o nome de dimensão do cubo de alias é AssignedToUserDim. Esse é o nome da dimensão que será usado para realmente filtrar esse cubo. Ao permitir que os usuários definam nomes de alias, os nomes podem ser especificamente personalizados para habilitar as relações muitos para muitos desejadas no cubo. Isso possibilita a filtragem mais avançada e recursos analíticos.

Por fim, as substituições são válidas não somente para fatos de relação, mas também para fatos personalizados. Neste cenário, o ponto de extremidade da relação será definido como None. A tabela a seguir descreve atributos de substituição.

Atributo Necessária Valores Definição
MeasureGroupName Sim Cadeia de caracteres O nome do grupo de medidas no qual executar a substituição
RelationshipEndPoint Sim (Destino, Origem, Nenhum) O ponto de extremidade da relação para executar a substituição. Por padrão, o valor é Nenhum para fatos personalizados.
Relationship Não ManagementPackRelationship A relação a ser usada para a substituição.
AliasTargetDimensionAs Não Cadeia de caracteres O nome do alias da dimensão de destino original
AliasReplacementDimensionsAs Não Cadeia de caracteres O nome do alias para a dimensão substituída
DimensionAlias Não ManagementPackDimension O alias da dimensão de um fato personalizado, se existir um

MDX Personalizado

Você pode usar scripts personalizados de expressão MDX para modificar e personalizar o cubo OLAP para as especificações exatas que atendam suas necessidades. Como o Service Manager é baseado em modelo, não é possível determinar todas as necessidades semânticas possíveis ao levar em consideração o amplo espectro de requisitos e especificações exatas para as necessidades de negócios específicas do domínio de um usuário específico. A expressão MDX personalizada possibilita que você defina scripts MDX que serão aplicados ao cubo OLAP para habilitar cenários específicos que os usuários precisam medir e instrumentar.

Cálculo nomeado

Você pode usar cálculos nomeados para definir novos atributos em uma dimensão que uma medida personalizada pode direcionar posteriormente. Isso possibilita que você estenda o esquema dimensional e personalize o esquema para se adequar às suas necessidades exatas. O exemplo a seguir é proveniente do SystemCenterWorkItemsCube:

<NamedCalculation ID="IncidentsPastTargetResolutionTime" Target="IncidentDW!IncidentDim" ColumnType="Int">  
<Calculation>(case when ( (([Status] = 'IncidentStatusEnum.Resolved' OR [Status] = 'IncidentStatusEnum.Closed') AND ResolvedDate > TargetResolutionTime) OR (([Status] != 'IncidentStatusEnum.Resolved' AND [Status] != 'IncidentStatusEnum.Closed') AND GETUTCDATE() > TargetResolutionTime)) then 1 else 0 end )</Calculation>  
</NamedCalculation>  

Neste exemplo, a dimensão Incident contém dados, como o status do incidente e o tempo de resolução de destino. No entanto, não há medida nativa que calcula o número de incidentes que excederam o tempo de resolução de destino, embora esse tipo de dados seja muito útil para um administrador de sistema. Você pode criar este cenário usando um cálculo nomeado e pode agregar os dados de forma que uma medida personalizada possa direcionar o novo atributo e apresentar as informações a um usuário final.

Lembre-se que o Service Manager oferece suporte apenas às dimensões de destino NamedCalculation. NamedCalculation não pode direcionar os fatos. A tabela a seguir descreve os atributos de cálculo nomeados.

Atributo Necessária Valores Definição
ID Sim Cadeia de caracteres Nome do cálculo nomeado.
Destino Sim ManagementPackDimension A dimensão de destino para a medida
ColumnType Sim (Int, Double) O tipo de linguagem SQL (Structured Query Language) da coluna
Tipo Não (Count, Sum) O tipo da medida

O subelemento <Calculation> contém, como seu valor, a definição do cálculo nomeado. O valor é armazenado como uma expressão MDX.

Medida

Você pode usar medidas personalizadas para agregar e exibir dados com base em atributos numéricos de dimensões. O Service Manager não dá suporte a medidas personalizadas com base em fatos. Continuando com o exemplo do Cálculo Nomeado acima, o Service Manager define uma medida personalizada em IncidentsPastTargetResolutionTime como a seguinte:

<Measure ID="IncidentsPastTargetResolutionTimeCount" Target="IncidentDW!IncidentDim" Type="Sum" Property="IncidentsPastTargetResolutionTime"/>  

Analisando esse código XML, o destino da medida é IncidentDimension e a propriedade específica é IncidentsPastTargetResolutionTime. Essa é a propriedade personalizada que foi definida anteriormente. Medidas personalizadas podem atingir propriedades nativas ou calculadas na dimensão.

Finalmente, o tipo de medida é definido para ser uma soma. Os valores possíveis para um tipo de medida incluem Sum e Count. Por causa dessas considerações de desempenho, os tipos de medida Contagem Distinta do Service Manager não são permitidas. A tabela a seguir descreve atributos de medida.

Atributo Necessária Valores Definição
ID Sim Cadeia de caracteres Nome da medida
Destino Sim ManagementPackDimension A dimensão de destino para a medida
Propriedade Sim Cadeia de caracteres A propriedade de dimensão de destino
Tipo Não (Count, Sum) O tipo da medida

ManyToManyRelationship

O ManyToManyRelationship possibilita que você, o designer do cubo, adicione dimensões personalizadas muitas para muitas a um cubo OLAP, para habilitar cenários analíticos avançados. A definição de relações muitos para muitos vai além do escopo deste documento. No entanto, você pode investigar esse conceito e seus benefícios.Para obter mais informações sobre o ManyToManyRelationship, consulte O Many-to-Many Revolution 2.0.

Durante a implantação do cubo, o Service Manager adiciona automaticamente dimensões muitos para muitos ao cubo de todas as relações "um salto", sem nenhuma interação por parte do usuário. No entanto, o Service Manager não adiciona dimensões muitos para muitos para relações em cascata (vários saltos) por causa do aumento exponencial de possíveis relações que poderão ser adicionadas. A adição de todas essas relações pode reduzir significativamente o desempenho quando o cubo OLAP é procurado. Isso ocorre porque as agregações de relações muitos para muitos geralmente não são calculadas durante o processamento e porque as junções serão avaliadas enquanto o cubo OLAP for procurado. Se você desejar uma relação muitos para muitos específica em cascata, poderá definir a relação usando um elemento de pacote de gerenciamento e ele será adicionado ao cubo OLAP. De modo contrário, você pode substituir uma relação muitos para muitos gerada automaticamente para usar um grupo de medidas intermediário diferente em instâncias em que existem vários grupos intermediários. Nesse caso, o Service Manager usa automaticamente o primeiro grupo encontrado. Este é um exemplo de um elemento de relação de pacote de gerenciamento muitos para muitos:

<ManyToManyRelationship CubeDimension="ServiceDim" TargetMeasureGroup="AlertAboutConfigItem" IntermediateMeasureGroup="ServiceContainsConfigItem" />  

A tabela a seguir descreve os atributos da relação muitos para muitos.

Atributo Necessária Valores Definição
CubeDimension Sim Cadeia de caracteres Nome da dimensão do cubo muitos para muitos
TargetMeasureGroup Sim Cadeia de caracteres O grupo de medidas de destino para criar a relação muitos para muitos
IntermediateMeasureGroup Sim Cadeia de caracteres O grupo de medidas intermediário para criar a relação muitos para muitos

KPI

Organizações e empresas podem usar KPIs (indicadores-chave de desempenho) para calcular rapidamente a integridade de uma empresa medindo seu progresso com relação a uma meta predefinida. Cada KPI tem um valor de destino e um valor real. O valor de destino é uma meta quantitativa fundamental para o sucesso da organização. Grandes quantidades de dados são filtradas para um valor discreto que pode ser usado para monitorar o desempenho e o andamento com relação a metas e referências. Alguns exemplos de KPIs são uma faculdade que tem uma meta de que 90% de seus alunos se graduem em quatro anos ou um time de basquete com uma meta de não deixar o time adversário fazer mais de 50% de arremessos em um jogo. Você pode usar um scorecard para mostrar um grupo de KPIs, fornecendo em uma captura instantânea a integridade geral de uma empresa. Este é um exemplo de KPI:

<KPI ID="IncidentResolutiuonKpi" >  
<Caption> The ratio of incidents resolved </Caption>  
<Value>IIF(([Measures].[IncidentDimCount])> 0,([Measures].[IncidentsResolvedCount]/[Measures].[IncidentDimCount]),null)</Value>   
<Goal>1.0</Goal>   
<GreenThreshold> 0.75</GreenThreshold>  
<YellowThreshold>0.5 </YellowThreshold>  
<Direction>Up</Direction>  
<StatusGraphic>Thermometer</StatusGraphic>   
</KPI>  

A tabela a seguir descreve atributos de KPI.

Atributo Necessária Valores Definição
ID Sim Cadeia de caracteres Nome do KPI
Legenda Sim Cadeia de caracteres Descrição do KPI
Valor Sim Cadeia de caracteres Script MDX que define o valor numérico do KPI
Goal Sim Cadeia de caracteres ​O valor de destino do KPI
Limite Verde Sim String (entre 0,1 e 1) ​Qualquer número que esteja acima ou abaixo desse limite, dependendo da direção, é marcado como verde no símbolo de status.
​Limite Amarelo Sim String (entre 0,1 e 1) Qualquer número que esteja acima ou abaixo do limite, dependendo da direção, mas que não atende ao limite verde, é marcado como amarelo no símbolo de status. Um número que não está de acordo com o limite amarelo é marcado como vermelho no símbolo de status.
​Direction Sim ​(Acima, Abaixo) ​Se a direção for para cima, qualquer número acima do limite verde ou amarelo é marcado com o símbolo correspondente. Da mesma forma para baixo, números abaixo dos limites verdes ou amarelos são marcados com o símbolo correspondente.
​Gráfico de Status Sim ​(Shapes, TrafficLight, RoadSigns, Gauge, ReversedGauge, Thermometer, Cylinder, Faces, VarianceArrow) ​O símbolo que representará o KPI.

Ação

Ações são eventos que você pode disparar em um cubo OLAP quando está acessando dados no cubo. O Service Manager dá suporte apenas para ações de detalhamento. Este é um exemplo de uma ação:

<Action ID="DrillThroughOnWICreatedByUser" MeasureGroupName="CreatedByUser" ActionType="DrillThrough">   
<DrillThroughColumns CubeDimension="WorkItemCreatedByUser_UserDim">   
<Property PropertyName="FirstName" />   
<Property PropertyName="LastName" />   
<Property PropertyName="Company" />   
<Property PropertyName="Department" />   
<Property PropertyName="Office" />   
</DrillThroughColumns>   
</Action>  

A tabela a seguir descreve atributos de ações.

Atributo Necessária Valores Definição
ID Sim Cadeia de caracteres Nome da ação de detalhamento
MeasureGroupName Sim Cadeia de caracteres Grupo de medidas de destino da ação
ActionType Sim (DrillThrough) Tipo de ação. O Service Manager dá suporte apenas para ações de detalhamento.
CubeDimension Sim Cadeia de caracteres ​A dimensão de cubo que é o destino da ação, que deve ser uma segmentação de dados no Grupo de Medidas.
PropertyName Sim Cadeia de caracteres Atributo da dimensão que é exibido quando a ação de detalhamento é executada

CubeExtension

O principal objetivo do elemento CubeExtension é possibilitar que você modifique o cubo OLAP depois que ele foi implantado no SSAS, sem precisar desinstalar e reinstalar o cubo. Em situações em que o cubo OLAP foi totalmente processado com anos de dados, a recriação do cubo consome tempo, pois todas as partições precisam ser completamente reprocessadas.

O elemento CubeExtension pode definir os seguintes elementos:

  • NamedCalculation

  • ManyToManyRelationship

  • KPI

  • Medida

  • Ação

  • CustomMdx

Cada personalização que é definida em um elemento CubeExtension também pode ser definida em um objeto SystemCenterCube. A única personalização não permitida é a adição de fatos ou grupos de medidas e substituições ao cubo.

Consulte também

Noções básicas sobre cubos OLAP