Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Diferença de resultado usando ALL(<tabela>) e ALL(<tabela>[campo])

Não consegui entender a diferença apresentada quando usamos

POSIÇÃO NO RANKING = RANKX(ALL(Produtos);[IMPOSTO EM R$])

de

POSIÇÃO NO RANKING = RANKX(ALL(Produtos[NOME DO PRODUTO]);[IMPOSTO EM R$])

Se a função RANKX faz o ranking de Imposto sobre a tabela toda, por que especificar que é sobre a coluna "Nome do Produto"? Todas as linhas estão com esta coluna preenchida. Sem especificar esta coluna o resultado sai diferente (por exemplo a posição 3 no ranking não aparece)

3 respostas

Oiii Decio, tudo bom?

Primeiro, vamos entender o porque é usado a função ALL. A função ALL() retorna todas as linhas de uma tabela ou todos os valores de uma coluna, ignorando todos os filtros que estiverem aplicados. Essa função é útil para limpar filtros e criar cálculos em todas as linhas em uma tabela. Documentação Função ALL

Nesse caso da aula, se utilizarmos a função sobre a tabela de produtos, o resultado vai vir diferente e ainda faltando posição, como disse acima. E também o instrutor quer saber qual o produto mais vendido de acordo com o imposto, por isso especificou a coluna "Nome do Produto".

Não sei se a explicação ficou clara, mas espero que te ajude. Qualquer coisa estou por aqui, tá bom? :)

Ola. Obrigado pela resposta. Olhei a documentação e inclusive o link que explica o autoexist (aqui preciso estudar um pouco melhor se seria aplicável ao nosso exemplo...). Mas sigo sem entender. Por que temos diferença usando ALL de ALL<tabela[coluna] se no nosso exemplo em específico todas as linhas da tabela (45) possuem todos os campos preenchidos.

Tenho uma suspeita. ;-) Nem todos os produtos estão presentes na tabela "Itens de Notas fiscais". E temos um produto duplicado na tabela Produtos. Mas mesmo assim, não faço ideia...

solução!

Oii Decio, tudo bom?

Desculpa pela demora em te retornar.

A função ALL() retorna valores distintos quando se utiliza uma coluna como parâmetro.

Pra fazer o teste, foi feito a contagem da coluna nome do produto de uma nova tabela criada. Com isso, retorna o mesmo valor do distinctcount da coluna nome do produto da tabela Produtos.

  • Verificando quantas linhas tem com a função ALL().

Imgur

  • Contagem de itens na coluna nome do produto da tabela Produtos

Imgur

  • Contagem distinta de itens na coluna nome do produto da tabela Produtos

Imgur

Espero que tenha sanado sua dúvida. Qualquer coisa estou por aqui, tá bom? :)