Ir para conteúdo
  • 0

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


Pergunta

  • Alunos
Postado

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á!

 

3 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
Postado

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

  • 0
  • Alunos
Postado

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?

  • 0
  • Alunos
Postado

@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???

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...