Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Assuntos relacionados a criação de medidas, fórmulas e funções DAX, relacionamentos etc
#55956
Olá, pessoal!

Estou desenvolvendo meu primeiro projeto de BI e acabei empacando em um problema que não sei como resolver.
O problema é o seguinte: Dado uma tabela com os registros de ativação e inativação dos usuários de um plano de saúde, eu consiga saber quais beneficiários encontravam-se ativos até determinada data.


Tenho, como exemplo, a tabela abaixo com os registros de ativação e inativação de alguns beneficiários da empresa.

Imagem

Existem vários registros para cada beneficiário.
Cada registro apresenta uma data, o status do beneficiário a partir daquela data e o tipo de registro.
Os registros do tipo "Entrada" representam o dia em que o beneficiário foi adicionado ao plano (existe apenas um registro deste tipo por beneficiário).
Os registros "Histórico" são as mudanças de status que o beneficiário sofreu ao decorrer do seu tempo de contrato, que podem ser nenhuma ou várias. Caso uma pessoa não tenha registros do tipo "Histórico", seu status será sempre ativo (status padrão do registro de "Entrada").

Um registro apresentará, sempre, apenas um dos dois valores na coluna STATUS:
  • A = Ativo
  • I = Inativo
Tendo esses dados em mãos, eu preciso saber, dado uma determinada data limite, quais beneficiários encontravam-se ativos até esta data. Por exemplo:

Suponhamos que minha data limite seja 31/03/2020 e que meu histórico se resuma aos registros abaixo.

Imagem

Eu teria 01 beneficiário ativo. No entanto, se minha data limite fosse 30/04/2020, ou superior, eu não teria nenhum beneficiário ativo.

RESUMINDO:
  1. Primeiro eu filtro os registros cuja data seja menor ou igual a minha data limite;
  2. Com a tabela filtrada, eu tenho que pegar o registro mais recente de cada beneficiário;
  3. Filtrar novamente para só restar os beneficiários ativos naquele período ;
Não consegui fazer essa filtragem de forma dinâmica. O mais próximo que cheguei foi criando uma nova coluna calculada que retorna True para o registro com maior data por beneficiário e False para os demais registros.
Código: Selecionar todos
isMaxDate = HIST_BENEFICIARIO[BEN_DATA_INCLUSAO_CONTRATO] = 
	CALCULATE(
		MAX(HIST_BENEFICIARIO[BEN_DATA_INCLUSAO_CONTRATO]), 
		FILTER(ALL(HIST_BENEFICIARIO), HIST_BENEFICIARIO[BEN_COD_BENEFICIARIO]=EARLIER(HIST_BENEFICIARIO[BEN_COD_BENEFICIARIO]))
	)
Imagem

Envio, neste link, um .xlsx contendo um exemplo da tabela histórico. Ficarei muito feliz se alguem puder ajudar-me a resolver essa questão. Estou a uma semana testando soluções mas sem sucesso.

Desde já, muito obrigado!
#56103
Estava olhando sua base de dados e fiquei com uma duvida. O beneficiário 9901320000000 teve 116 letras "A" seguidas desde o dia 30/10/2013 até 08/01/2014, e no dia 11/02/2014 teve uma letra "I". Esta letra "I" inativa todas as letras "A" que estavam para tras, ou inativa apenas uma delas?
#56104
Olá Vilmar!

Sim, Todos os registros anteriores são invalidados. Por exemplo:
Se minha data limite for 10/02/2014, o beneficiário 9901320000000 retornaria como ATIVO. No entanto se minha data limite é igual ou maior que 11/02/2014, o mesmo beneficiário retornaria como INATIVO e permaneceria com esse status até uma data futura em que ele venha a ser ativado novamente.

Espero ter esclarecido sua dúvida.
Muito obrigado por sua disposição em ajudar-me. ;)
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord