Ir para conteúdo
  • 0

Informar na dimensão qual entidade tem um número de clientes acima de 100


Gustavo Dassie

Pergunta

  • Membros

Olá, boa noite.

Estou apanhando em uma medida.

Estou precisando adicionar uma coluna calculada em uma dimensão, baseado no valor da fato.

Eu tenho uma dimensão chamada dEntidadeClasse e ela precisa ter uma coluna informando se aquela entidade será atendida pelo pessoal do Relacionamento ou não. 

Retorno esperado: Relacionamento e Não relacionamento.

Para isso, eu preciso analisar na fato carteira (fCarteira) se, em alguma competência (YYYYMM) em todo o histórico, a soma da coluna qtd_vidas para cada entidade_classe está acima de 100 ou abaixo. 

Se está acima, retornará Relacionamento. Se está abaixo, retornará Não relacionamento.

Vale ressaltar que, como a Fato tem outras colunas, então a entidade poderá se repetir pela mesma competência, variando apenas produto, cliente, ou qualquer outra coluna. Por isso precisa ser somado a qtd_vidas por competência e entidade_classe, para saber se está acima de 100 ou não.

Eu criei (para fins de testes) uma tabela através da seguinte medida:

TabelaAgregada = 
        FILTER(
            SUMMARIZECOLUMNS(
                fCarteira[sk_entidade_classe],
                fCarteira[dt_competencia],
                "SomaQtdVidas", SUM(fCarteira[qtd_vidas])),
            [SomaQtdVidas] > 100
        )

Porém, na dEntidadeClasse, eu preciso trazer apenas se a entidade está contida nessa tabela.

Se estiver muito confuso, posso preparar um arquivo com as tabelas kkkk

Obrigado desde já!

 

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
  • Membros

Consegui, pela criando a tabela, chegar nesse resultado:
Tabela Filtrada = 
VAR TabelaAgrupada =
FILTER(
    ADDCOLUMNS (
        SUMMARIZE (
            fCarteira,
            fCarteira[sk_entidade_classe],
            fCarteira[dt_competencia],
            "Total_qtd_vidas", SUM ( fCarteira[qtd_vidas] )
        ),
        "Max_total_qtd_vidas",
            CALCULATE (
                MAXX (
                    SUMMARIZE (
                        fCarteira,
                        fCarteira[sk_entidade_classe],
                        fCarteira[dt_competencia],
                        "Total_qtd_vidas", SUM ( fCarteira[qtd_vidas] )
                    ),
                    [Total_qtd_vidas]
                ),
                ALLEXCEPT (
                    fCarteira,
                    fCarteira[sk_entidade_classe]
                )
            )
    ), [Total_qtd_vidas] > 100)
VAR TabelaResultado = 
    SELECTCOLUMNS (
            FILTER (
                TabelaAgrupada,
                [Total_qtd_vidas] = [Max_total_qtd_vidas]
            ),
            "sk_entidade_classe", fCarteira[sk_entidade_classe],
            "dt_competencia", fCarteira[dt_competencia],
            "Total_qtd_vidas", [Total_qtd_vidas]
        )
RETURN
    TabelaResultado

Ele trás apenas a sk_entidade_classe,  a dt_competencia que teve a maior quantidade de vidas e o total_qtd_vidas dessa competencia.
Agora é questão de, ao invés de criar uma tabela para isso, adicionar apenas a coluna na dimensão kkkk

Link para o comentário
Compartilhar em outros sites

  • 0
  • Membros

E consegui retornar com a medida a coluna calculada:
Relacionamento = 
VAR Resultado =
    LOOKUPVALUE(
        'Tabela Filtrada'[Total_qtd_vidas],
        'Tabela Filtrada'[sk_entidade_classe],
        dEntidadeClasse[sk_entidade_classe]
    )
RETURN
IF(
    Resultado >= 100, "Relacionamento", "Não relacionamento")

Agora a questão é, é possível fazer isso sem a necessidade de criar uma tabela?

Link para o comentário
Compartilhar em outros sites

  • 0
  • Membros

@Gustavo Dassie, veja se funciona:

ColunaSimNao =
VAR vTabela = //Monta tabela identificando os valores maiores ou iguais a 100
ADDCOLUMNS(
    SUMMARIZE(
        dEntidadeClasse[sk_entidade_classe],
        fCarteira[dt_competencia],
        "@SomaQtdVidas", SUM(fCarteira[qtd_vidas])
    ),
    "@MaiorCem", IF([@SomaQtdVidas] >= 100, 1, 0)
)
 
VAR vMaiorCem = //Pega as entidades que tiveram valores maiores ou iguais a 100
MAXX(
    vTabela,
    [@MaiorCem]
)
RETURN
IF(//Cria o filtro onde, se o valor máximo for igual a 1, ou seja em algum contexto a condição foi atingida, relacionamento. Senão, não relacionamento.
    vMaiorCem = 1,
    "Relacionamento",
    "Não relacionamento"
)


Caso não, consegue compartilhar o pbix ou uma base de exemplo???
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...