Thursday 7 September 2017

Moving Average Power Bi


Navegação postal Cálculo de uma média móvel no PowerPivot Duas semanas atrás, prometi falar sobre como gerar uma média móvel no PowerPivot, mas na semana passada eu me desviei informando sobre uma ótima maneira de exibir vídeos do YouTube em suas páginas do SharePoint usando uma web Parte encontrou no CodePlex que alguns dos membros da minha equipe de trabalho encontraram. Era tão fácil de implementar, eu só tinha que compartilhá-lo com todos vocês. No entanto, retornando ao tópico do cálculo de uma média móvel, a primeira pergunta pode ser o que é uma média móvel e, em seguida, por que você quer usar uma. Uma média móvel é simplesmente a soma de dois ou mais valores dependentes do tempo em que a soma é então dividida pelo número de valores utilizados. Por exemplo, se eu estivesse falando sobre os preços das ações, talvez eu queira usar algo como uma média móvel de 7 dias para atenuar o efeito de picos de dia individuais ou quedas no preço das ações que não são indicativos da tendência geral de estoque. (Alguns investidores de longo prazo usam médias móveis ainda mais longas.) Isso não significa que, se um estoque cair ou diminuir, eu me sentaria até que a média móvel me diga para agir. Qualquer investidor de boa ação irá dizer-lhe que existem muitos outros fatores internos e externos a uma empresa que poderia forçar sua mão para vender ou comprar qualquer estoque específico. Mas o ponto é, e esta é a resposta para a segunda pergunta, uma média móvel atenua a aleatoriedade para que eu possa ver mais facilmente o padrão geral dos números que eu estou rastreando. Ok, então suponho que eu trabalho para a Contoso e queria saber se as vendas estão subindo, caindo ou geralmente planas. Se eu olhar para as vendas diárias, é provável que os números flutuem para cima e para baixo em nenhum padrão específico impedindo-me de detectar uma tendência geral. A figura a seguir mostra as vendas contábeis diárias da Contoso durante um período de 3 meses durante o verão de 2008. Eu escolhi mostrar os dados como um gráfico para ajudar a mostrar como as vendas flutuam por dia revelando informações que eu não poderia ver tão facilmente que eu Criou uma tabela dos mesmos valores. Claro, eu poderia traçar um ano inteiro ou mais, mas para ver dias individuais, eu teria que ampliar o gráfico substancialmente. No entanto, mesmo com este período de tempo menor, posso ver que as vendas flutuam bastante bem. Mas eu posso pedir que as vendas aumentem, diminuam ou permaneçam iguais. Se eu tiver um bom olho, posso dizer que as vendas atingem o pico em relação ao final de julho e, em seguida, recuam um pouco enquanto o gráfico se move em agosto. Mas isso não é tão óbvio quanto o fato de que há uma grande quantidade de flutuações diárias. Então, como posso exibir as tendências visualmente com o Moving Average Sales. Agora, com o propósito desta ilustração, vou criar uma média móvel de quatro dias, mas honestamente, não há um número certo de períodos em uma média móvel. Na verdade, eu deveria experimentar diferentes períodos de tempo para ver qual período de tempo me permite detectar não só as tendências gerais, mas também neste caso, onde estou exibindo vendas na loja, em mudanças sazonais. Eu já sei que se eu exibir dados por dia, eu posso usar a seguinte fórmula para calcular as vendas diárias de apenas nosso canal de loja. (Sim, eu poderia simplesmente usar o SalesAmount e aplicar um slicer de canais para usar apenas as vendas da loja, mas deixa o exemplo.) Posso então usar essa medida calculada para calcular as vendas de dias anteriores para qualquer dia criando a seguinte medida. StoreSales1DayAgo: CALCULATE (StoreSales, DATEADD (DimDateDateKey, -1, dia)) Você pode adivinhar que a fórmula para calcular as vendas há dois dias e três dias, respectivamente: StoreSales2DayAgo: CALCULATE (StoreSales, DATEADD (DimDateDateKey, - 2, dia)) StoreSales3DayAgo: CALCULATE (StoreSales, DATEADD (DimDateDateKey, -3, dia)) Com estes quatro valores calculados para cada dia, posso calcular a soma desses valores e dividir por 4 para obter uma média móvel de 4 dias usando O seguinte valor calculado: FourDayAverage: (StoreSales StoreSales1DayAgo StoreSales2DayAgo StoreSales3DayAgo) 4.0 Agora, se eu voltar para a página do meu gráfico, eu deveria ver que o Excel atualiza a lista de campos para incluir as novas medidas calculadas. Se eu adicionar o campo FourDayAverage à caixa Valores criando uma segunda série no gráfico, agora tenho as vendas diárias reais e a média móvel de quatro dias exibida no mesmo gráfico. O único problema é que eu também gostaria de alterar o formato do gráfico para exibir as vendas diárias (minha primeira série de dados) como colunas e minha média móvel (minha segunda série de dados) como uma linha. Quando eu clicar com o botão direito do mouse no gráfico e selecionar Alterar tipo de gráfico, eu posso selecionar Combo como o tipo de gráfico como mostrado na figura a seguir. Nesse caso, o gráfico da Linha de Colunas em Cluster é exatamente o que eu quero. Como adicionei a série de média móvel à última área de Valores, torna-se, por padrão, a linha e todas as outras séries de dados aparecem como colunas em cluster. Como eu só tenho um valor para cada dia, o gráfico mostra uma coluna individual por dia. Se eu tivesse inserido minhas séries de dados na área de Valores na ordem errada, eu poderia simplesmente usar essa caixa de diálogo para selecionar o tipo de gráfico para cada série. Quando eu clicar em OK nesta caixa de diálogo, meu gráfico agora se parece com o seguinte, o que mostra mais claramente a maior tendência geral e menor flutuação diária. Mas espere, há uma maneira mais fácil de fazer isso. Por que sim existe. Mas para aprender a fazer isso, você terá que esperar até a semana que vem. Postar navegação Meus arquivos Assinatura de e-mail Tópicos Eu falo sobre várias maneiras de abordar isso. Aqui está um casal para você. Estes dois requerem uma tabela de dados totalmente preenchida, separada da tabela de dados principal (fatos). 1. Calcule a média nos últimos 84 dias (12 semanas completas) assim. Onde AvgSalesAmt é uma média simples de SalesAmount para suas transações. FILTER apenas captura o conjunto de datas que estão na janela de 84 dias a partir da data MAX. 2. Calc a média nas últimas 12 semanas com base em um número de seqüência de semana na sua tabela de datas. O número de seqüência da semana começaria em 1 durante a primeira semana em sua tabela de Data e continuaria em todos os anos da tabela (sem reset no final do ano). Seqüência de semanas pode ser realizada assim no DAX. Nota: seria mais eficiente obter esta pré-calculada a partir de uma dimensão de data relacional ou em SQL. Independentemente disso, se você precisa fazer isso no DAX, isso funciona. O DimDateCalendarYearWeek está no formato quotyyyy-wwquot. Isso lhe dará uma seqüência a partir de 1. Então você pode calcular as 12 semanas que se seguem com isso: Deixe-me saber se isso ajuda. Brent Greenwood, MS, MCITP, CBIP Por favor, marque as respostas corretas e as postagens úteis brentgreenwood. blogspot Editado por Brent Greenwood Editor quinta-feira, 16 de maio de 2013 2:18 PM Proposta como resposta por Elvis Long equipe do contingente da Microsoft, Moderador sexta-feira, 17 de maio de 2013 7:28 Marcado como resposta por equipe de contingentes de Elvis Long Microsoft, Moderador segunda-feira, 27 de maio de 2013 2:58 AM Quinta-feira, 16 de maio de 2013 2:18 PM Várias maneiras de abordar isso. Aqui está um casal para você. Estes dois requerem uma tabela de dados totalmente preenchida, separada da tabela de dados principal (fatos). 1. Calcule a média nos últimos 84 dias (12 semanas completas) assim. Onde AvgSalesAmt é uma média simples de SalesAmount para suas transações. FILTER apenas captura o conjunto de datas que estão na janela de 84 dias a partir da data MAX. 2. Calc a média nas últimas 12 semanas com base em um número de seqüência de semana na sua tabela de datas. O número de seqüência da semana começaria em 1 durante a primeira semana em sua tabela de Data e continuaria em todos os anos da tabela (sem reset no final do ano). Seqüência de semanas pode ser realizada assim no DAX. Nota: seria mais eficiente obter esta pré-calculada a partir de uma dimensão de data relacional ou em SQL. Independentemente disso, se você precisa fazer isso no DAX, isso funciona. O DimDateCalendarYearWeek está no formato quotyyyy-wwquot. Isso lhe dará uma seqüência a partir de 1. Então você pode calcular as 12 semanas que se seguem com isso: Deixe-me saber se isso ajuda. Brent Greenwood, MS, MCITP, CBIP Por favor, marque as respostas corretas e as postagens úteis brentgreenwood. blogspot Editado por Brent Greenwood Editor quinta-feira, 16 de maio de 2013 2:18 PM Proposta como resposta por Elvis Long equipe do contingente da Microsoft, Moderador sexta-feira, 17 de maio de 2013 7:28 Marcado como resposta por Elvis Long Pessoal contingente da Microsoft, moderador Segunda-feira, 27 de maio de 2013 2:58 AM Quinta-feira, 16 de maio de 2013 2:18 PMRelando 12 meses de média em DAX Computação da média de 12 meses em DAX Como uma tarefa simples, mas esconde alguma complexidade. Este artigo explica como escrever a melhor fórmula evitando armadilhas comuns usando funções de inteligência de tempo. Começamos com o modelo usual de dados AdventureWorks, com produtos, vendas e tabela de calendário. O Calendário foi marcado como uma tabela de calendário (é necessário trabalhar com qualquer função de inteligência do tempo) e nós construímos uma hierarquia simples ano-mês-data. Com esta configuração, é muito fácil criar uma primeira tabela dinâmica mostrando vendas ao longo do tempo: ao fazer análise de tendências, se as vendas estiverem sujeitas à sazonalidade ou, em geral, se você deseja remover o efeito de picos e queda nas vendas, A técnica comum é a de calcular o valor em um determinado período, geralmente 12 meses, e a média. A média móvel em 12 meses fornece um indicador suave da tendência e é muito útil em gráficos. Dado uma data, podemos calcular a média móvel de 12 meses com esta fórmula, que ainda possui alguns problemas que resolveremos mais tarde: O comportamento da fórmula é simples: calcula o valor de Vendas depois de criar um filtro no calendário que Mostra exatamente um ano completo de dados. O núcleo da fórmula é o DATESBETWEEN, que retorna um conjunto inclusivo de datas entre os dois limites. O menor é: lendo-o do mais íntimo: se estamos mostrando dados por um mês, digamos, julho de 2007, tomamos a última data visível usando LASTDATE, que retorna o último dia em julho de 2007. Então, usamos NEXTDAY para tomar o primeiro De agosto de 2007 e finalmente usamos SAMEPERIODLASTYEAR para mudar de volta um ano, produzindo 1 de agosto de 2006. O limite superior é simplesmente LASTDATE, ou seja, final de julho de 2007. Se usarmos esta fórmula em uma tabela dinâmica, o resultado parece ser bom, mas nós Tem um problema para a última data: de fato, como você pode ver na figura, o valor é calculado corretamente até 2008. Então, não há valor em 2009 (o que é correto, não temos vendas em 2009), mas existe Um valor surpreendente em dezembro de 2010, onde nossa fórmula mostra o grande total em vez de um valor em branco, como seria de esperar. Na verdade, em dezembro, o LASTDATE retorna o último dia do ano e NEXTDAY deve retornar o 1 de janeiro de 2011. Mas NEXTDAY é uma função de inteligência do tempo e espera-se que retornem conjuntos de datas existentes. Este fato não é muito evidente e vale mais algumas palavras. As funções de inteligência do tempo não executam matemática nas datas. Se você quiser tomar um dia após uma determinada data, você pode simplesmente adicionar 1 a qualquer coluna de data e o resultado será no dia seguinte. Em vez disso, as funções de inteligência do tempo mudam os conjuntos de datas de ida e volta ao longo do tempo. Assim, NEXTDAY adquire a sua entrada (no nosso caso uma tabela de uma única linha com o 31 de dezembro de 2010) e desloca-a um dia depois. O problema é que o resultado deve ser 1 de janeiro de 2011, mas, como a tabela do Calendário não contém essa data, o resultado é BLANK. Assim, nossa expressão calcula as vendas com um limite inferior em branco, o que significa o início dos tempos, resultando como resultado do grande total de vendas. Para corrigir a fórmula, basta alterar a ordem de avaliação do limite inferior: como você pode ver, agora NEXTDAY é chamado após a mudança de um ano de volta. Desta forma, nós levamos 31 de dezembro de 2010, movê-lo para 31 de dezembro de 2009 e levamos no dia seguinte, que é 1 de janeiro de 2010: uma data existente na tabela do calendário. O resultado é agora o esperado: neste ponto, precisamos apenas dividir esse número em 12 para obter a média móvel. Mas, como você pode facilmente imaginar, nem sempre podemos dividi-lo em 12. De fato, no início do período não há 12 meses para agregar, mas um número menor. Precisamos calcular o número de meses para os quais há vendas. Isso pode ser feito usando a filtragem cruzada da tabela do calendário com a tabela de vendas depois de aplicarmos o novo contexto de 12 meses. Definimos uma nova medida que calcula o número de meses existentes no período de 12 meses: você pode ver na próxima figura que a medida Mess12M calcula um valor correto: Vale ressaltar que a fórmula não funciona se você escolher um período Mais de 12 meses, porque o CalendarMonthName possui apenas 12 valores. Se você precisar de períodos mais longos, você precisará usar uma coluna YYYYMM para poder contar mais do que 12. A parte interessante desta fórmula que usa filtragem cruzada é o fato de que ele calcula o número de meses disponíveis mesmo quando você filtra usando outro atributos. Se, por exemplo, você selecionar a cor azul usando um cortador, as vendas começam em julho de 2007 (não em 2005, como acontece com muitas outras cores). Usando o filtro cruzado em Vendas, a fórmula calcula corretamente que, em julho de 2007, há um único mês de vendas disponíveis para o Blue: neste ponto, a média móvel é apenas um DIVIDE: quando usamos isso em uma tabela dinâmica, nós ainda Tem um pequeno problema: de fato, o valor é calculado também por meses para os quais não há vendas (ou seja, meses futuros): isso pode ser resolvido usando uma declaração IF para evitar que a fórmula mostre valores quando não há vendas. Eu não tenho nada contra IF, mas, para o desempenho viciado em você, sempre vale a pena lembrar que IF pode ser um assassino do desempenho, porque poderia forçar o mecanismo de fórmula DAX a entrar. Neste caso específico, a diferença é insignificante, mas , Como regra geral, a melhor maneira de remover o valor quando não há vendas é confiar em fórmulas de mecanismo de armazenamento puro como esta: Comparando um gráfico usando o Avg12M com outro que mostra as Vendas, você pode facilmente apreciar como a média móvel Descreve as tendências de uma maneira muito mais limpa: mantenha-me informado sobre os próximos artigos (boletim informativo). Desmarque para baixar livremente o arquivo.

No comments:

Post a Comment