Estou trabalhando em um cubo tabular no SSAS 2012 SP1 CU4. Eu tenho 3 dimensões (Requisição, Status da Requisição, Data) e 1 fato (Contagens de Requisição). Minha tabela de fatos está no nível de requisitionKEY, RequisitionStatusKEY, SnapshotDateKey.
Eu calculei medidas que essencialmente obtêm o último valor não vazio (como uma medida semiaditiva) para o período determinado, seja Ano, Mês ou Data:
Openings:=CALCULATE(Sum('Requisition Counts'[NumberOfOpeningsQT]),
Filter('Date','Date'[DateKey] = Max('Requisition Counts'[SnapshotDateKEY])))
Isso funciona bem até você incluir o Status da requisição na mistura. Tenho linhas para cada requisição para todos os dias em 2013. Para uma das requisições, o Status da Requisição foi Pendente nos primeiros 6 meses e depois mudou para Aprovado em todos os dados de 1º de julho até o momento. Ao resumir o número de vagas da requisição no nível do mês de julho, os usuários veem duas linhas: a soma das vagas do último dia preenchido de julho que estava pendente e a soma das vagas do último dia preenchido de julho que foi aprovado.
Embora o total de 2 esteja correto, preciso alterar esse cálculo para obter apenas o status de requisição mais atual para o período de data selecionado (Aprovado) e mostrar 0 ou nulo ou em branco para a linha de aprovação Pendente na tabela dinâmica.
A tabela Status da requisição tem a seguinte aparência:
Atualização: aqui está um link para um modelo PowerPivot que fiz que contém alguns dados limpos para ajudar a responder a essa pergunta. Isso deve explicar melhor os esquemas de tabela. O campo NumberOfOpeningsQT é basicamente o número de posições abertas que eles têm para aquele trabalho. Às vezes é 1, às vezes é mais de 1. Geralmente não muda com o tempo, mas acho que poderia. Estou tentando fazer o cálculo de Aberturas me dar a resposta desejada. Joguei alguns outros cálculos lá, então mostre algumas coisas que tentei que eram promissoras, mas que não consegui trabalhar.
Você pode tentar o seguinte cálculo:
A parte importante é definir o contexto de filtro correto para o arquivo
CALCULATE
.Com
CALCULATETABLE
, definimos as linhas específicas que queremos que o externoCALCULATE
considere: a data do último instantâneo não em branco para todas as requisições (ou para uma requisição específica, considerando o contexto de cada requisição em uma tabela dinâmica), independentemente de quaisquer filtros na status da requisição, que é alcançado usando aALL
função.A medida não funciona exatamente como você deseja; você diz que esperaria que o total de Aprovado fosse 2. Usando a
2013-11059
requisição do modelo Power Pivot como exemplo, como há 1 status Aprovado em 01/07/2013 e outro em 02/07/2013, apenas considera o último status para o total, resultando em 1.Ainda não modelei isso, mas o que me vem à mente é adicionar outro FILTER() ao seu escopo CALCULATE(), como: FILTER('Status da requisição', 'Status da requisição'[Chave] = MAX(' FactRequisition'[RequisitionKey])). Meu pensamento é que adicionar isso filtrará a tabela de requisição para incluir apenas a requisição mais recente - estou assumindo que uma requisição não pode ser alterada de aprovada para aprovação pendente, o que prejudicaria isso ...