Forum Discussion

Z3R0G3R10's avatar
Z3R0G3R10
Regular Visitor
3 years ago

Nova tabela

Saudações,

seguindo o exemplo acima, como calcular no Power BI em DAX uma tabela onde considerar na mesma linha o mesmo Motorista + Veículo + Dados, separando em uma coluna o KM inicial e o KM final. Observe que existe 1 exemplo em que o motorista fez a viagem de ida e volta no mesmo dia e depois há um outro exemplo onde o motorista inicia a viagem em um dia e finaliza em outro dia.

Aproveitando, tem como fazer em Linguagem M e tratar através de 2 novas colunas com KM INICIAL e KM FINAL?

 

 

 

dia | hora |Motorista | Carro | km |

01/08/2023 | 07:02:01 | João | FiurinoAET1052 | 7.000 |

01/08/2023 | 07:12:20 | João | FiurinoAET1052 | 7.450 |

02/08/2023 | 07:11:01 | João | FiurinoAET1052 | 7.450 |

03/08/2023 | 07:00:07 | João | FiurinoAET1052 | 8.000 |

 

 

 

Eu fiz esse código em DAX e deu erro "Muitos argumentos foram passados ​​para a função SUMX. Contagem superior de argumentos para a função: 2.":

 

 

 

OrdenacaoComDiferencaKM =

VAR TabelaAgrupada =

SUMMARIZE(

'dRespFormCheckList',

'dRespFormCheckList'[Motorista],

'dRespFormCheckList'[Data],

'dRespFormCheckList'[Carro],

"MenorHora", MIN('dRespFormCheckList'[Hora]),

"MaiorHora", MAX('dRespFormCheckList'[Hora])

)

RETURN

SUMX(

TabelaAgrupada,

IF(

RANKX(

FILTER(

'dRespFormCheckList',

'dRespFormCheckList'[Motorista] = EARLIER('dRespFormCheckList'[Motorista]) &&

'dRespFormCheckList'[Data] = EARLIER('dRespFormCheckList'[Data]) &&

'dRespFormCheckList'[Carro] = EARLIER('dRespFormCheckList'[Carro])

),

[MenorHora] + IF([MenorHora] = [MaiorHora], TIME(23, 59, 59), TIME(0, 0, 0)), , 1, Dense ) = 1, CALCULATE

(

SUMX

(

'

dRespFormCheckList

'

,

' dRespFormCheckList'[Km Final] - 'dRespFormCheckList'[Km Inicial],

'dRespFormCheckList'[Motorista] = EARLIER('dRespFormCheckList'[Motorista]),

'dRespFormCheckList'[Data] = EARLIER('dRespFormCheckList'[Data]),

' dRespFormCheckList'[Carro] = EARLIER('dRespFormCheckList'[Carro])

)

)

)

)

3 Replies

  • Z3R0G3R10 , Try like

     

    SortWithDifferenceKM =
    VAR TabelaAgrupada =
    SUMMARIZE(
    'dRespFormCheckList',
    'dRespFormCheckList'[Motorista],
    'dRespFormCheckList'[Data],
    'dRespFormCheckList'[Carro],
    "MenorHora", MIN('dRespFormCheckList'[Hora]),
    "MaiorHora", MAX('dRespFormCheckList'[Hora])
    )

    RETURN
    SUMX(
    GroupedTable,
    CALCULATE(
    IF(
    RANKX(
    FILTER(
    'dRespFormCheckList',
    'dRespFormCheckList'[Motorista] = EARLIER('dRespFormCheckList'[Motorista]) &&
    'dRespFormCheckList'[Data] = EARLIER('dRespFormCheckList'[Data]) &&
    'dRespFormCheckList'[Carro] = EARLIER('dRespFormCheckList'[Carro])
    ),
    [MenorHora] + IF([MenorHora] = [MaiorHora], TIME(23, 59, 59), TIME(0, 0, 0)), , 1, Dense ) = 1,
    'dRespFormCheckList'[Km Final] - 'dRespFormCheckList'[Km Inicial]
    )
    )
    )

    • Z3R0G3R10's avatar
      Z3R0G3R10
      Regular Visitor

      parece plausível essa solução, mas, ainda acusa um erro: "Falha ao resolver o nome 'GroupedTable'. Não é uma tabela, variável ou nome de função válidos."

  • Z3R0G3R10's avatar
    Z3R0G3R10
    Regular Visitor

    parece que é possível esta solução, falta apenas ajustar alguma coisa, retornou o seguinte erro: "Falha ao resolver o nome 'GroupedTable'. Não é uma tabela, variável ou nome de função válidos."