Calculando o estoque disponível usando o DAX: modelo de inventário do Power BI
Você nem sempre tem o luxo de ter uma tabela de fatos instantâneos que tenha o valor do estoque disponível para cada dia, em cada oficina e para cada produto. Mesmo se você quiser construir uma mesa assim, ela pode ficar facilmente gigantesca. Nesta postagem, mostrarei como você pode usar o cálculo total da execução do DAX para obter estoque disponível sem ter a tabela de instantâneos em um modelo de inventário do Power BI.
Conjunto de dados de amostra
O conjunto de dados de exemplo para este exemplo é apenas uma única tabela (para simplificar, removi o produto, depósito e quaisquer outras tabelas), que é a movimentação de estoque:
A tabela acima mostra quantos produtos por dia foram adicionados ao depósito. neste exemplo, temos apenas um armazém.
Saída Desejada
Em uma análise de estoque, é importante saber quantos produtos temos em cada armazém em um determinado dia, algo assim é a saída desejada:
A apresentação pode ser diferente, no entanto, o fato de nos fornecer o valor total corrente da quantidade em um determinado período permanece o mesmo.
Por que não fazer um instantâneo da tabela de fatos?
A tabela de fatos de instantâneo é um tipo de tabela de fatos que armazena valores de maneira instantânea. Um valor em qualquer período e a combinação de outros atributos de dimensão. uma tabela de fatos de instantâneo pode ser assim em nosso exemplo:
No nosso caso, o período do instantâneo é todos os dias e, mesmo que não haja nenhuma transação nesse dia, a tabela de fatos do instantâneo ainda precisa ter um registro para esse dia. Em qualquer data, todos os produtos devem ser listados, ou seja, um registro por dia e por produto, você também pode imaginar que, se houver vários depósitos, seria um por dia, por produto e por depósito.
Esta tabela pode ficar muito grande muito rapidamente. Se tivéssemos 1000 produtos e 10 armazéns, por um período de 10 anos, esta tabela seria:
(10*365)*10*1000=36,5 milhões de linhas!
As tabelas de fatos de instantâneo devem ter uma linha por combinação do período e outros atributos de dimensão. As tabelas de fatos de instantâneos podem ficar muito grandes muito rapidamente.
Para mais produtos, mais armazéns ou mais períodos, você pode imaginar o tamanho dessa tabela. O Power BI, é claro, pode lidar com uma tabela tão grande e muito maior do que isso. No entanto, criar uma tabela tão grande apenas para calcular o estoque disponível não é a melhor maneira de fazê-lo. Existe uma maneira muito melhor.
Total em execução no DAX
Você pode calcular facilmente o total em execução no DAX usando uma expressão como abaixo.
Você pode até criá-lo usando Medidas Rápidas, o que lhe dá algo semelhante à expressão acima. Se você usar a tabela de data padrão, no entanto, precisará usar um “.[Data]” no final dos campos de data, como fiz na expressão acima.
Aqui está um resultado de amostra do total em execução para nosso cenário:
Como você pode ver, o total em execução funciona perfeitamente e nos dá a quantidade acumulada para essa data. Existem várias maneiras de calcular o total em execução. O que você vê aqui é apenas um dos métodos que usam as funções AllSelected e IsOnOrAfter no DAX para o cálculo.
No entanto, esse cálculo não é o resultado final, pois se houver uma data sem nenhuma transação, não haverá cálculo total em execução para essa data.
Como você pode ver, muitas das datas estão faltando na captura de tela acima. E se quisermos ver qual é o estoque disponível para o dia 21 de dezembro? ou 22? O cálculo total atual está faltando essas datas e não nos dá o resultado correto por esse motivo.
Calculando estoque disponível
Com algumas alterações na expressão acima, podemos calcular o valor total em execução para a última data que possui alguma transação e, em seguida, mostrar esse resultado em um determinado período. Aqui está uma versão personalizada dessa expressão:
Se você notar, desta vez eu usei uma variável, que ajuda na parte de pré-cálculo da expressão. Nesse caso, uso a data atual (a data fornecida no visual) e a uso para calcular o total em execução, e aqui está o resultado;
Como você pode ver, o visual da tabela tem todas as datas e não há data faltando. Mesmo que não haja nenhuma transação para essa data, ainda temos o cálculo do estoque disponível funcionando corretamente para essa data.
O método usou a função max para obter a data da linha atual da tabela, armazenada em uma variável, e a usou para calcular o total em execução. O resultado é o estoque disponível para aquela data.
Esse método está funcionando rápido e confiável, e o bom é que você não precisa de uma tabela com mais de 30 milhões de linhas para um resultado tão simples.
Soluções para ERP/Power BI/CRM/Fabrica de Software/Infra
Temos uma equipe de analistas e desenvolvedores que pode efetivamente realizar todas as suas aspirações em relação ao seu ERP.
Últimos posts por Soluções para ERP/Power BI/CRM/Fabrica de Software/Infra (exibir todos)
- Como Compartilhar Relatórios com Power BI - 21 de setembro de 2022
- Como Importar Dados do Excel para o Power BI - 20 de setembro de 2022
- O que é Power BI, Power Query e Power Pivot? - 19 de setembro de 2022