Ir para conteúdo
  • 0

Listar os valores apenas do décimo pedido.


Givanildo

Pergunta

  • Alunos

Prezados(as), bom dia. Preciso exibir os valores apenas do décimo pedido.

Exemplo: Tenho uma lista de pedidos de um cliente especifico. Esses pedidos estão ordenados em ordem decrescente por data. O que eu preciso é exibir as informações do décimo pedido, como: Data e valor.

O objetivo é informar o intervalo de tempo entre o primeiro e o décimo pedido, e também calcular a diferença de valores entre o primeiro pedido e o décimo pedido.

Muito obrigado.

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos

Olá Givanildo,

Se eu entendi direito, eu faria 4 medidas em separado para cada situação, usando a SUMX para para cada cliente e 
buscaria a primeira e a décima data pela função TOP N,  da mesma forma com os valores,  e por fim,  calcularia o resultado das medidas.
Provavelmente poderá ter outras soluções mais simples, mas essa foi a primeira que me veio à tona. OK

Medidas:

Data 1 = 

var vdata1 = 
  SUMX(  
         VALUES(Cliente[Nome Cliente]),
    CALCULATE(
            SelectedValue(Vendas[DataEmissão),   // guarda a DataEmissão do primeiro pedido pela DataEmissão
        TOPN(
             1,                                                                  // 1º Pedido pela DataEmissao
               ALL(Cliente[Nome Cliente]),
               max[DataEmissao]
            ),
            VALUES(Cliente[Nome Cliente])            // Através desta tabela nós trazemos de volta o contexto com o Nome dos Clientes que foi removido com o ALL dentro da TOPN 
      )
Return
    vdata1
================================================================================================================
Data 10   = 
var vdata10 = 
  SUMX(  
         VALUES(Cliente[Nome Cliente]),
    CALCULATE(
            SelectedValue(Vendas[DataEmissão),  // guarda a DataEmissão do décimo pedido pela DataEmissão
        TOPN(
             10,                                                             // 10º Pedido pela DataEmissao
               ALL(Cliente[Nome Cliente]),
               max[DataEmissao]
            ),
            VALUES(Cliente[Nome Cliente])          // Através desta tabela nós trazemos de volta o contexto com o Nome dos Clientes que foi removido com o ALL dentro da TOPN 
      )
Return
    vdata10
================================================================================================================
Val_Data1 = 

var vvaldata1 = 
  SUMX(  
         VALUES(Cliente[Nome Cliente]),
    CALCULATE(
            SelectedValue(Vendas[valor),        // guarda o valor do primeiro pedido pela DataEmissão
        TOPN(
             1,                                                        // 1º Pedido pela DataEmissao
               ALL(Cliente[Nome Cliente]),
               max[DataEmissao]
            ),
            VALUES(Cliente[Nome Cliente])     // Através desta tabela nós trazemos de volta o contexto  com o Nome dos Clientes que foi removido com o ALL dentro da TOPN 
      )
Return
    vvaldata1

================================================================================================================
Val_Data10 = 

var vvaldata10 = 
  SUMX(  
         VALUES(Cliente[Nome Cliente]),
    CALCULATE(
            SelectedValue(Vendas[valor),     // guarda o valor do décimo pedido pela DataEmissão
        TOPN(
             10,                                                   // 10º Pedido pela DataEmissao
               ALL(Cliente[Nome Cliente]),
               max[DataEmissao]
            ),
            VALUES(Cliente[Nome Cliente])    // Através desta tabela nós trazemos de volta o contexto com o Nome dos Clientes que foi removido com o ALL dentro da TOPN 
      )
Return
    vvaldata10
==============================================================================================================

No final, comparar as medidas com ( DateDIF) para as Datas retornadas e ( DIVIDE) para os valores encontrados para traçar o percentual.

#Dif  Dias= DateDIF(Data1,Data10, DAY)
% Valores = DIVIDE([val_Data10] - [val_Data1], [Val_Data1])

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Boa tarde, @Givanildo, tudo bem, amigo?

Sua dúvida precisava ser melhor contextualizada, além de incluir uma base de dados ou um PBIX pra poder lhe ajudar melhor.

De qualquer forma, eu elaborei uma solução que talvez possa atender a sua necessidade.

Primeiro eu tive que criar uma tabela virtual dentro das medidas para conseguir encontrar o valor do décimo pedido.

Parti do pressuposto que cada linha da tabela fato seria um pedido, então uma contagem de linhas seriam a quantidade de pedidos, e consequentemente, a sua contagem acumulada, chegaríamos aos números de quantos pedidos realizados até a data do contexto - guarde essa informação para compreender a medida criada.

Cheguei então nos seguintes resultados:

image.png.3bf52ca014069d81c7b850fca5f6fdd2.png

Considerei que cada dia da minha tabela fato seria um pedido único. 

A coluna soma é uma medida de soma dos valores dos pedidos.

A coluna contagem acumulada é a contagem acumulada de quantos pedidos realizados até a data daquele contexto.

A coluna Menor representa o valor do primeiro pedido realizado - e consequentemente a data do pedido também.

A coluna Solução R1 é o valor do décimo pedido realizado - e sua data.

Os cartões são a diferença de dias entre o primeiro e o 10º pedido e o cartão abaixo é a diferença de valor entre eles, conforme pode-se verificar pela imagem.

Vamos para as medidas:

Soma = sum(fDados[Valor])

 

Contagem = COUNTROWS(fDados)

 

contagem acumulada = CALCULATE(

[Contagem],

filter(all(dCalendario),

dCalendario[Data] <= max(dCalendario[Data])))

 

Menor =

var menordata = MINX(all(dCalendario[Data]),

dCalendario[Data])

 

var resultado = CALCULATE(

[Soma],

FILTER(

all(dCalendario),

dCalendario[Data] = menordata),

VALUES(dCalendario[Data]))

return

resultado

 

Solução R1  =

var tabela = ADDCOLUMNS(VALUES(dCalendario[Data]),

"Pedidos", [Contagem Acumulada],

"valores", [Soma])

 

var maior10 =

MAXX(

FILTER(tabela,

[Pedidos] = 10),

[Soma])

return

maior10

 

diferença dias =

var tabela =

ADDCOLUMNS(VALUES(dCalendario[Data]),

"Pedidos", [contagem acumulada],

"valores", [Soma])

 

var menordia =

MIN(

dCalendario[Data])

 

var maiordia =

CALCULATE(

VALUES(dCalendario[Data]),

FILTER(

tabela,

[Pedidos] = 10))

return

DATEDIFF(menordia, maiordia, DAY)

 

Diferença valor =

[Solução R1] - [Menor]

 

Bom...a medida Solução R1 foi feita através de tabela virtual, sendo o Dax Studio uma excelente ferramenta para visualizar a tabela "materializada", conforme abaixo:

image.png.745ed256a4321de810e65dcb13d55ae3.png

Veja que a partir dessa tabela virtual, podemos usar as suas colunas como filtro dentro das medidas - como foi usado: Pedido = 10.

A medida de diferença de dias também segue o mesmo raciocínio lógico....

Enfim...agora precisa ajustar o que eu apresentei acima, a sua realidade/necessidade.

Pois ainda poderá haver necessidade de mais algum ou outro ajuste nas medidas - talvez usar ALLSELECTED ao invés de ALL na medida de Min para encontrar a data mínima do primeiro pedido....talvez seu modelo ainda tenha alguma coluna que represente o seu cliente e vc queira alguma visualização por clientes, etc.

Agora é contigo para ajustar....rsrsrs

Espero que eu tenha conseguido lhe ajudar, amigo.

Sucesso aí.

image.png

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Bom, sem saber como é seu modelo de dados fica amis difícil, mas segue uma tentativa. Eu não testei antes, então pode ser que tenha que fazer algum ajuste.

Medida = 
	VAR vData10 = 
		MINX(
			TOPN(
				10,
				VALUES(Tabela[Emissão Pedido]),
				MAX(Tabela[Emissão Pedido]),
				DESC
			),
			[Emissão Pedido]
		)
	VAR vValor10 = 
		CALCULATE(
			SUM(Tabela[R$ Unit. NF),
			FILTER(
				ALL(dCalendario[Data]),
				dCalendario[Data] = vData10
			)
		)
RETURN
	vValor10

 

Link para o comentário
Compartilhar em outros sites

Faça login para comentar

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



Entrar Agora
×
×
  • Criar Novo...