Wednesday 25 October 2017

Powerpivotpro Moving Average


No PowerPivot: existem 2 ficha de fato - FactFree amp. FactPaid. Eles compartilham a mesma guia DimDate, juntam-se com dateKey. Eu crio um slicer usando a coluna dateKey na guia DimDate. Crie 2 gráficos separados (diretamente) para cada um deles. Os gráficos parecem bem. Eu adiciono mover avg em ambos os gráficos. Eles estão bem. O problema aparece enquanto eu selecionar o slicer compartilhado, factFree tem registro para 2013432014, FactPaid só tem 2014. Se eu selecionar 2013, o gráfico de FactPaid desapareceu. Sua por design. Eu compreendo - nenhum dado em tudo. Mas quando eu selecionar 2014, ambos os gráficos aparecem. Mas a linha avg em movimento de FactPaid está permanentemente desaparecida. Conclusão: Parece que se o slicer compartilhado tocar no buraco negro de join, a linha avg em movimento será removida forçadamente pelo excel. Segunda-feira, 21 de abril de 2014 22:47 Respostas parece que este problema está relacionado ao Excel e não especificamente para Power Pivot Depois de selecionar um período sem valores as linhas de tendência get removido, mas voltar a um período com valores não adiciona essas linhas de tendência Novamente Gerhard Brueckl blogging blog. gbrueckl. at trabalhando pmOne Proposta como resposta por Michael Amadi Moderador quarta-feira, 23 de abril de 2014 7:56 Marcado como resposta por Elvis Long Pessoal de contingente de Microsoft, Moderador segunda-feira, maio 05, 2014 6:47 Eu só me deparei com esta postagem no blog de Bill Anton, onde ele discute várias abordagens para calcular a mediana de um determinado conjunto em T-SQL, MDX e DAX. No final do seu post quando se trata do cálculo DAX, ele se refere a vários post por Marco. Alberto e Javier (post1. Post2) que já abordam esse tipo de cálculo em DAX. Mas ele também afirma que não das soluções é elegante. Bem, razão suficiente para eu tentar por conta própria e aqui está o que eu vim acima com. Cabe a você decidir se esta solução é mais elegante do que os outros ou não Em geral, o cálculo mediano sempre varia dependendo do número de itens e se este número é par ou ímpar. Para uma população par, a mediana é a média dos valores no meio: a mediana de 3. 5. 7. 9 é (5 7) / 2 6 Para uma população ímpar, a mediana é o valor no meio: a mediana de é 5 Em ambos os casos, os valores têm de ser ordenados antes do cálculo. Observe que não faz diferença se os valores são classificados em ordem crescente ou decrescente. Neste exemplo, o nosso conjunto contém 12 itens (meses), por isso temos de encontrar os 2 itens no meio do conjunto ordenado dezembro e fevereiro e calcular a média. Então, como podemos resolver esse problema usando DAX A maioria das mensagens que eu mencionei acima usam algum tipo de combinação de classificação RANKX () e filtragem FILTER (). Para minha abordagem eu vou usar nenhum desses, mas usar TOPN em vez (sim, eu realmente gosto dessa função como você provavelmente sabe se você seguiu o meu blog por algum tempo). Neste caso especial, TOPN () pode fazer tanto, classificação e filtragem para nós. Mas antes de mais nada precisamos saber quantos itens existem no nosso conjunto: CntMonths: DISTINCTCOUNT (8216Date8217 Mês) Esse valor será usado posteriormente em nossos próximos cálculos. Para encontrar o valor (s) no meio eu uso TOPN () duas vezes, primeiro para obter a primeira metade dos itens (semelhante ao TopCount) e, em seguida, uma segunda vez para obter os últimos valores que precisamos para o nosso cálculo mediano (semelhante Para BottomCount): Como o cálculo mediano é diferente para pares e pares, isso também tem que ser considerado em nosso cálculo. Para ambos os cálculos, a função MOD () - é usada para distinguir ambos os casos: ItemsTopCount: IF (MOD (CntMonths, 2) 0, (CntMonths / 2) 1, (CntMonths 1) / 2) Para um número par de itens ) Nós simplesmente dividimos a contagem de itens por 2 e adicionamos 1 o que nos dá um (12/2) 1 7 para nossa amostra. Para um número ímpar de itens (por exemplo, 5), primeiro adicionamos 1 à nossa contagem de itens e depois dividimos por 2 o que nos dá (5 1) / 2 3 ItemsBottomCount: IF (MOD (CntMonths, 2) 0, 2, 1) Para um número par de itens temos que considerar os últimos 2 valores, enquanto que para um número ímpar de itens, temos apenas de considerar o último valor. Esses cálculos são então usados ​​em nosso cálculo mediano: Median SA Months: CALCULATE (SumSA, TOPN (ItemsBottomCount, TOPN (ItemsTopCount, VALUES (8216Date8217 Mês), SumSA)) / ItemsBottomCount Como DAX não tem built-in BOTTOMN (), Precisamos de abusar da função TOPN () e multiplicar o valor OrderBy por 1 para obter a funcionalidade BOTTOMN (). Como você pode ver a maioria da lógica já é tratada por nossas medidas ItemsTopCount e ItemsBottomCount e este padrão pode ser reutilizado muito facilmente. É claro que todos esses cálculos também podem ser combinados eo uso de IF () pode ser evitado: Median SA Meses v2: CALCULATE (SumSA, TOPN (2 8211 MOD (CntMonths, 2), TOPN ((CntMonths 1) / 2, VALUES Nota: para uma população par (CntMonths 1) / 2 retorna X.5 que é automaticamente arredondado para cima quando é usado em (CntMonths 1) / 2 Uma função que espera um número inteiro. (12 1) / 2 6,5 gt 7 Estes são os resultados finais: Podemos também usar AVERAGEX () para calcular a nossa mediana, mas eu acho que é algum tipo de sobrecarga para usar AVERAGEX () apenas Para dividir por 1 ou 2 dependendo do número de itens que retornam as funções TOPN: Média SA Meses AvgX: AVERAGEX (TOPN (2-MOD (CntMonths, 2), TOPN ((CntMonths 1) / 2, VALUES (8216Date8217 Mês SumSA), SumSA), SumSA) Como você pode ver, existem várias abordagens para calcular a mediana, cabe a você que você gosta mais. Eu não testei nenhum deles em termos de desempenho sobre conjuntos maiores isso pode ser tema para um próximo post. Download Final Model (Office 2013) Isso está funcionando apenas para a dimensão Time, eu tenho feito a solução trabalhando para outras dimensões e agregações: Trick é usar a tabela de fatos ID, IFFACT e SUMMARIZE (8216FFACTS82178217FFACTSIDFACT8217FFACTSMMEASURE) Mediana de MMEASURE: CALCULATE (SUM (MMEASURE) TopN (ItemsBottomCount TopN (ItemsTopCount SUMMARIZE (8216FFACTS82178217FFACTSIDFACT8217FFACTSMMEASURE) MMEASURE) MMEASURE 1)) / ItemsBottomCount E isso evitar duplicações de MMEASURE: Median de medida: Calcule (SUM (MMEASURE) TopN (ItemsBottomCount TopN (ItemsTopCount SUMMARIZE (8216FFACTS82178217FFACTSIDFACT8221tmpMMEASURE8221SUM (8216FFACTSMMEASURE)) tmpMMEASURE) TmpMMEASURE Oi Kazo, obrigado por você comentários sobre isso há dois problemas que vejo com a sua solução: 1) usando o colum da tabela de fatos dá resultados diferentes apenas presumir que você deseja calcular a mediana para um determinado ano e mês atual é junho Então você só terá 6 meses em sua tabela de fatos, enquanto você terá 12 meses em sua tabela de tempo e, claro, calcular a mediana de mais de 6 meses retorna resultados muito diferentes em comparação com 12 meses eu diria isso muito depens sobre o negócio - , Em geral, ambos os cálculos são válidos 2) fazer a mediana em uma coluna em sua tabela de fatos exigiria que você mover esta coluna para a tabela de fatos (por exemplo, Usando RELATED ()) que pode resultar em uma sobrecarga no seu fábricas e i substituiria o SUMMARIZE () por um simples ADDCOLUMNS (): ADDCOLUMNS (VALUE (8216FFactsIDFACT), 8220tmpMMEASURE8221, MMEASURE) também você não tem que usar SUM () Novamente se MMEASURES já calcula a soma sobre sua tabela de fatos Hi Gerhard Eu sou um pouco novo para DAX e também precisa de uma função mediana. Não tenho certeza se as soluções sugeridas aqui poderiam funcionar para mim. Posso ter um cálculo mediano para uma célula (durante a navegação pivotável a partir do excel) que funcionaria de forma semelhante a uma função soma ou avg (não depende de outra coluna, mas apenas das colunas filtradas na célula excluindo valores em branco). Isto é para calcular medianas no campo de quantidade de hipoteca, qualquer que seja a seleção feita pelo usuário que eles querem ter a mediana para essa seleção. A função precisa lidar com 8216s vazio / nulo e também muitas duplicações na quantidade (parece que a função TOPN traz nos laços com ele, pode haver milhares de duplicações no campo de quantidade para hipotecas em EUA etc) Obrigado Hi Gokhan, o Abordagem I descrito aqui calcula a mediana com base em uma determinada coluna ea quantidade agregada de uma medida se eu entendi você corretamente Você precisa deste cálculo para trabalhar para cada coluna que você pode puxar para a tabela dinâmica isso só seria possível se o cálculo É feito no menor grão / grão da tabela de fatos é isso que você precisa Obrigado pela solução para a mediana. É possível exibir a mediana final em todos os meses8217 linhas. Ou seja, janeiro a dezembro para todas as 12 linhas 8211 A mediana deve ser 564,035 este cálculo retornará o valor de ano para todos os meses: Median SA Ano: CALCULATE (Median SA Meses v2, ALL (8216DateMonth), ALL (8216DateMonth Name) Para você Obrigado Gerhard para pronta resposta. Ele funciona quando não há duplicatas. Mas os meus dados tem um monte de duplicatas que precisa ser levado em consideração. O que você quer dizer com duplicatas O mesmo valor para dois ou mais meses isso não deve fazer qualquer diferença para o seu cálculo Mediano A questão é que quando há uma gravata, ele soma o total dos laços como o valor mediano. Por exemplo: 1, 1, 2, 2, 3, 3, a mediana seria 4 em vez de 2. Talvez it8217s porque eu substituí os valores de data com toda a minha tabela CALCULAR (SumSA, TOPN (ItemsBottomCount, TOPN (ItemsTopCount, VALUES Sim, algumas pessoas já relataram problemas com valores duplicados se você estiver usando o Power BI, você também pode usar a função MEDIAN nativa em vez disso, tipo de observação, - gerhard Eu tenho um desafio na esperança de que eu possa Obter algumas respostas. Eu tenho uma tabela com 3 colunas e coluna 4 deve ser uma coluna calculada com base nos dados em 3 colunas. SO Data PO Arr (campo calculado) 123 2/1/2013 PO1 123 234 4/1/2013 PO1 123 345 5/1/2013 PO1 123 Arr Para o SO que tem o mesmo PO, Arr será a data mais antiga do SO Você por favor me ajude como fazer isso usando DAX. Sua ajuda é greatlly apreciada. Vou continuar a verificar esta página web para obter quaisquer respostas. Obrigado novamente oi, isso deve funcionar CALCULATE (VALORES (Table1SO), TOPN (1, FILTER (ALL (Table1), PO EARLIER (PO))), porém, eu acho que também deve haver uma solução usando FIRSTDATE () Eu não tenho tempo no momento Gerhard, eu poderia backtack para Gokhans e-mail 11 de agosto de 2013 às 19:07 Ele estava perguntando se ele poderia ter uma versão celular da mediana, e você respondeu apenas possível no menor grão / grão do fato - table Talvez eu poderia expandir um pouco que eu tenho uma tabela de fatos (totalmente desnormalizada) que tem força relativa das ações na NYSE. Tem campos para setor / indústria / ticker e força relativa. Em uma tabela dinâmica muito simples eu teria uma hierarquia de 3 camadas para linha, força relativa como um valor, e avg rel str para a coluna. No nível de grão, um tickers avg rel str o original rel str. No nível da indústria, a média da média de todos os preços dos tickers na indústria. No nível do setor, faça como para a indústria mas agora para todos os tickers das indústrias no setor. O que você tem para Median. Usando TOPN contando meses, daria o seguinte: 1. mediana rel str original rel str no nível ticker grãos Sim 2. mediana indústria rel str. No nível da indústria 1up do nível de grão 3. setor mediano rel str. No nível do setor 2up do nível de grão Iff a função de hierarquia poderia expandir o escopo para contar os tickers adicionais contar os meses adicionais. É assim que as tabelas dinâmicas obtém a média para expandir o escopo eu acho. Então eu acho que eu estou perguntando se isso é factível Ou é que basicamente a razão mediana não faz parte da tabela básica pivô valores opções E não faz parte da dax Oi Ron, o principal problema é que DAX não é muito conseguido em fazer cálculos diferentes em diferentes Colunas ou manipulação de hierarquias. Gokhans solicitação foi para torná-lo dinamicamente para que ele funciona para todas as colunas que não é realmente possível, a menos que você defina o cálculo de cada coluna separadamente. No seu caso, você só tem 3 colunas que também estão em uma hierarquia que torna a abordagem já descrita por Alberto Ferrari viável: sqlbi / articles / inteligente-hierarquia-handling-in-dax / Confira o RatioToParent cálculo no final de O post. Você basicamente tem que fazer o mesmo: 1) use ISFILTERED () para descobrir em que nível você está atualmente 2) adotar o cálculo para usar VALUES (DAX em si não está ciente de qualquer hierarquiasI estou criando um dashboard e quero mostrar o Eu tenho novos itens sendo adicionados a cada mês e usando a minha abordagem atual, quando um novo item é adicionado, seu valor está sendo dividido por 3, mas ele só tem uma pontuação de 1 dos 3 meses no intervalo, por isso Por exemplo, se o valor da métrica ABC for 1 para outubro de 2014 e for adicionado em outubro de 2014, ele não terá valores em setembro de 2014 e agosto de 2014, portanto sua média móvel de 3 meses é de 0,33 se a O usuário final seleciona outubro 2014 como o mês de âncora. Eu segui esta abordagem do PowerPivotpro. Como faço para obtê-lo para não incluir os meses em que não havia valores Editado por jmc5319 segunda-feira, 02 de fevereiro de 2015 1:42 segunda-feira, 2015 1:42 Respostas Você pode substituir o quot3quot por uma medida que calcula o número de meses no contexto do filtro atual Somthing como: Proposta como resposta por Ed Price - MSFT Microsoft empregado, Proprietário Wednesday, February 04, 2015 7:09 PM Marcado como resposta por Michael Amadi Moderador quarta-feira, 11 de fevereiro de 2015 3:20 PM segunda-feira, 02 de fevereiro de 2015 6:21 eu iria tentar algo parecido com isto 3Máquina: AverageX (FILTRAR (CALCULATETABLE (Date DATE DateDate) -3MONTH)) DateMonth Name) Sales ltgt 0) Sales) há uma abundância de blog-post que você pode encontrar via google, você simples necessidade de estendê-los e adicionar o FILTER () - parte e / ou o SUMMARIZE () - parte de agregado por mês primeiro Gerhard Brueckl blogging blog. gbrueckl. at trabalho pmOne Proposta como resposta por Ed Price - MSFT Microsoft empregado, Proprietário Quarta-feira, 04 de fevereiro de 2015 7:09 Marcado como resposta por Michael Amadi Moderador Quarta-feira, 11 de fevereiro de 2015 15:20 Terça-feira, 03 de fevereiro de 2015 8:52 Eu iria tentar algo parecido com isto 3Máquina: AverageX (FILTER (SUMMARIZE (CALCULATETABLE (Date DATEPERATE (DateDate MAX (DateDate) -3MONTH) Ltgt 0) Vendas) há uma abundância de blog-post que você pode encontrar através do google, você simples necessidade de estendê-los e adicionar o FILTER () - parte e / ou o SUMMARIZE () - parte para agregar primeiro mês Gerhard Brueckl blogging Blog. gbrueckl. at trabalho pmOne Proposta como resposta por Ed Price - MSFT Microsoft empregado, Proprietário Quarta-feira, fevereiro 04, 2015 7:09 Marcado como resposta por Michael Amadi Moderador quarta-feira, fevereiro 11, 2015 3:20 PM terça-feira, 03 de fevereiro de 2015 8:52 AMTrended Meias móveis Ive sempre foi um crente firme que as médias móveis provavelmente dão uma visão melhor sobre as tendências dentro de um negócio do que uma simples linha de tendência associada a um conjunto de valores, como as vendas mensais (embora eu tendem a rever Estes dois valores juntos). A razão para isso é que uma tendência pode ser distorcida por um ou dois valores que podem não ser representativos do negócio subjacente, tais como picos associados à sazonalidade ou um evento específico. Quando BillD destacou uma consulta sobre este conceito em seus comentários sobre Profit amp Loss (Parte 2) Compare e Analise. Eu pensei que seria uma ótima idéia para flex nosso conjunto de dados PampL para fornecer alguma capacidade de média móvel. Neste post, vou explicar o que as médias móveis são destinados a fornecer e explicar como calculá-los usando os elementos de vendas dos dados de exemplo usados ​​na série Profit amp Loss de posts. Em seguida, adicionarei a flexibilidade para que os usuários selecionem o intervalo de tempo que o cálculo da média móvel deve considerar, o número de períodos de tendência a serem exibidos ea data de término do relatório. O que é uma média móvel A medida média móvel mais comum é geralmente referida como uma média móvel de 12 meses. No caso de nossos dados de vendas, para cada período, essa medida somará os últimos 12 meses de vendas anteriores e incluindo o mês analisado e, em seguida, dividir por 12 para mostrar um valor médio de vendas para esse período. Em termos financeiros, a equação é, portanto, muito simples: 12 meses Mover média soma das vendas dos últimos 12 meses / 12 Isso tudo parece muito simples, mas há muito de complexidade envolvida se quisermos colocar o tempo médio móvel (representado como 12 No exemplo acima) nas mãos do usuário, dar-lhes o poder de selecionar o número de períodos de tendência a ser exibido eo mês que o relatório deve exibir até. O conjunto de dados O conjunto de dados que estava usando parece algo como abaixo. Observação Estou usando o PowerPivot V1. O visor do projeto está disponível em V2 mas Ive hashed este junto nada inteligente Você observará que FACTTran (nosso dataset a ser analisado) é ligado a DIMHeading1, DIMHeading2 e DIMDataType para fornecer alguma categorização a nosso dataset. Ive também vinculado a datas, que é um conjunto seqüencial de datas que mais do que abrange o tempo de nosso conjunto de dados. Esta tabela carrega alguma informação adicional estática baseada na data: Uma vez que outra vez, não estava registrando completamente na escala picante de Robs O descanso assegurou que você estará começando um workout mais intenso de DAX como nós vamos sobre. Como estas medidas de data não são esperadas para ser dinâmico, Ive codificado-los na janela do PowerPivot. Isso permite que eles sejam calculados na atualização de arquivos, mas eles não precisarão recalcular para cada operação de slicer que remove a sobrecarga de desempenho de nossa medida dinâmica final. Por razões que eu venha para mais tarde, eu também preciso da data de término do mês na minha tabela de fatos como eu não posso usar a data de término do mês na minha tabela de datas em minhas medidas. No entanto, posso puxar o mesmo valor em toda a minha tabela FACTTran usando a seguinte medida: Então, o que são essas mesas de mesas não vinculadas A razão para essas tabelas deve tornar-se aparente à medida que avançamos. Em resumo, eles vão ser usados ​​como parâmetros ou títulos em nosso relatório. A razão que eles existem e que theyre não ligados ao resto dos nossos dados é simplesmente porque eu não quero que eles sejam filtrados por nossas medidas. Em vez disso, eu quero que eles conduzam a filtragem. Initial PivotTable Setup Vou mostrar uma série de dados organizados em colunas mensais. O usuário receberá os cortadores para definir a data de término do mês (o último período a ser mostrado no relatório), o número de períodos para a média móvel (que será, em última instância, parte do cálculo do divisor) eo número de períodos para a tendência O número de colunas mensais que iremos exibir na nossa tendência). Podemos estabelecer estas fatias imediatamente e ligá-las ao pivô. Eu obviamente preciso de uma data de fim de mês como um cabeçalho de coluna, mas que um Até certo ponto Ive dado isso afastado mais cedo. Em suma, eu preciso usar meu campo MADatesMonthEndDate. A razão é que este campo não está ligado ao nosso conjunto de dados e, portanto, não será afetado por quaisquer outros filtros. Se eu usar um campo de data que faz parte do meu conjunto de dados ou parte de uma tabela vinculada, os valores disponíveis podem ser filtrados pelas seleções de usuários. Eu posso contornar isso usando uma expressão ALL () para me dar os valores corretos, mas o problema é que a coluna ainda é filtrada e meus resultados serão exibidos em uma coluna. É difícil de explicar até que você vê-lo por favor, vá em frente e tentar o seu valor bater a parede de tijolos para realmente entender Calculando Soma de Vendas para Últimos X Meses A primeira parte da nossa equação é calcular o valor total para as vendas em todos os períodos dentro Um período de tempo dinâmico a ser selecionado pelo usuário. Para isso, eu uso uma função Calculate que se parece com isto: Im usando uma medida base chamada CascadeValueAll que foi criado em Profit amp Loss A arte do subtotal em cascata. Im, em seguida, filtrar essa medida para limitar o meu conjunto de dados para os registros que se relacionam com as vendas e um tipo de dados de real (ou seja, eliminar o orçamento). Esta é a filtragem simples de uma função CALCULATE. No entanto, ele fica um pouco mais saboroso com o terceiro filtro que limita o conjunto de dados para uma série de datas que são dependentes das seleções de usuários em fatias e nosso título de coluna de data. A função DATESBETWEEN tem a sintaxe DATESBETWEEN (datas, startdate, enddate) e funciona como este: Eu definir o campo que requer a filtragem (DatesData). Ive descobriu que isso funciona melhor se esta é uma tabela vinculada de datas seqüenciais, sem quebras. Se você tiver alguma pausa, há uma chance de você não obter uma resposta como a resposta que você avalia para tem que estar disponível na tabela. Minha data de início é uma função DATEADD que calcula a data do cabeçalho da coluna menos o número de meses que o usuário selecionou na slicer de número médio de períodos de movimento. Eu uso a função LASTDATE (VALUES (MADatesNextMonthStartDate)) para recuperar o valor NextMonthStartDate da tabela MADates que se refere à data representada no cabeçalho da coluna. Eu então rebobinar pelo número de meses selecionados no cortador usando MAX (MAFunctionPeriodsMovingAverageNoPeriods) -1. O -1 é usado para voltar no tempo. A razão de eu usar NextMonthStartDate e um múltiplo de 1 é mais claramente explicado em Slicers para selecionar últimos períodos X. Minha data final é simplesmente o MonthEndDate como mostrado no cabeçalho da coluna do relatório. Isso é calculado usando LASTDATE (VALORES (MADatesMonthEndDate). Isso é ótimo, mas minha medida não está tomando qualquer conta da minha seleção de Períodos de Exibição Até a seleção e do Número de Tendência de Períodos que Ive selecionado. Nós, portanto, precisamos limitar a medida para executar apenas quando certas Os parâmetros são mantidos como verdadeiros com base nessas seleções. Eu só quero que valores sejam exibidos quando a minha data de título da coluna for: Menor ou igual à Data de Término do Mês selecionada em meus Períodos de Exibição Até Slicer AND Maior que ou igual ao Mês Date LESS o número selecionado de períodos no meu Trend n º de períodos slicer. Para fazer isso, eu uso uma instrução IF para determinar quando a minha função CALCULATE deve executar. Leve chamar essa medida SalesMovingAverageTotalValue A declaração IF funciona da seguinte forma: Primeiro eu preciso determinar Que eu estou avaliando apenas onde eu tenho um valor para MADateMonthEndDate. Se eu não fizer isso, eu recebo que o velho erro favorito na minha avaliação subsequente que diz que uma tabela de vários valores foi fornecido Eu, em seguida, avaliar para determinar se a minha data título da coluna (VALUES (MADatesMonthEndDate) é menor ou igual à data selecionada no slicer Month End Period (LASTDATE (datesDateMonthEnd) AND (ampamp) A minha data do cabeçalho da coluna é maior ou igual a uma data calculada que é X períodos anteriores aos períodos de exibição selecionados Up To como selecionado no Slicer. Eu uso uma função DATEADD para este semelhante à usada na minha função CALCULATE, exceto que estavam ajustando a data pelo valor selecionado no Trend No of Periods slicer. Com isso em vigor, temos as vendas totais para o período selecionado relacionadas com as seleções dos usuários. Portanto, minha tabela agora está limitada ao número de períodos de tendência selecionados e representa a data final do mês selecionada. Então agora nós apenas dividimos por Moving Average Nº de Períodos Right eh NO Weve calculou nossas vendas totais para o período referente às seleções dos usuários. Você seria perdoado por sugerir que simplesmente dividir pelo número de média móvel períodos selecionados. Dependendo de seus dados, você poderia fazer isso, mas o problema é que o conjunto de dados pode não conter o número selecionado de períodos, especialmente se o usuário pode selecionar uma data de término do mês que vai voltar no tempo. Como resultado, precisamos descobrir como os períodos estão presentes em nossa medida SalesMovingAverageTotalValue. Esta medida é essencialmente a mesma que minha medida SalesMovingAverageTotal. A única diferença real é que contamos os valores de data distintos em nosso conjunto de dados ao contrário de chamar a medida CascadeValueAll. Eu mencionei mais cedo que havia uma razão porque eu necessitei a data de término do mês a ser prendida em minha tabela de FACTTran e este é porque. Se eu usar qualquer outra tabela segurando a data de término do mês, essa tabela não vai ter sido filtrada da maneira que o conjunto de dados principal foi filtrado. Como exemplo, minha tabela Datas tem uma série de datas que abrange o período de tempo do meu conjunto de dados e muito mais. Como resultado, a avaliação em relação a esta tabela deduzirá que a tabela de fato tem datas que precedem meu conjunto de dados e, portanto, não há nenhuma avaliação se existe uma transação mantida no conjunto de dados para essa data. Como você pode ver, desde o meu conjunto de dados é executado a partir de 1 de julho de 2009, eu só tenho 9 períodos de dados para avaliar para a minha 31/03/2010 coluna. Se eu tivesse dividido por 12 (como por meu Moving Average No of slicer seleção), eu teria uma resposta muito errada. Obviamente, isso é um pouco artificial, mas é digno de consideração. E agora o bocado simples Eu posso compreender que as duas últimas medidas tomaram alguma absorção, especialmente elaborando quando os campos específicos da data devem ser usados. Para algum alívio de luz, a próxima medida não vai realmente imposto você Esta é uma divisão simples com um pouco de verificação de erro para evitar qualquer nasties. Quando tudo estiver em conjunto Uma vez que todas estas medidas são portáteis, posso criar outra tabela dinâmica da mesma forma que a anterior (com o SalesMovingAverageValue dado um alias da média móvel), mover algumas coisas, adicionar uma medida para as vendas reais Valor para o mês (eu não vou entrar em que agora, mas é uma medida simples CALCULATE com algum tempo de inteligência) e eu, em seguida, reconfigurar para se parecer com o seguinte: Posso então dirigir um gráfico de linha simples e aplicar uma linha de tendência para a minha medida real Com o gráfico convenientemente escondendo a minha grade de dados que o impulsiona. Como você pode ver, uma tendência na minha medida real mostra um declínio constante. Minha Média Móvel, no entanto, mostra uma tendência relativamente estável, senão ligeiramente melhorando. A sazonalidade de alguns outros picos está, obviamente, envolvida e a realidade é que ambas as medidas provavelmente precisam ser revisadas lado a lado. Para aqueles de vocês que lêem isso que estão interessados ​​em ver a pasta de trabalho deste exemplo, vou olhar para postar isso em um post futuro quando eu tomar esta análise um passo adiante para cobrir toda a PampL. Desculpe por fazer você esperar. Espero que isso ajude você a descobrir BillD Um Mais Ponto a Nota Aqueles águia eyed DAX pros lá fora, provavelmente, percebi que as minhas funções IF só contêm um cálculo para avaliar quando o teste lógico chega a uma resposta verdadeira. A razão é que a função assume BLANK () quando uma condição de avaliação falsa isnt fornecida. Eu não consegui descobrir se há algum impacto no desempenho usando este método em grandes conjuntos de dados. É até você o que você escolheu fazer e se qualquer um puder me convencer porque codificando a condição falsa como o BLANCO () é a mais melhor prática, mim mudará rapidamente meus hábitos Este borne tem 6 comentários Renato Lyke diz: Mover Médias, Sums, etc. A Linha Azul Suaviza Flutuações Aleatórias, Diz uma Tendência Menos Reativa Eu percebi recentemente que este tópico nunca foi abordado antes, na sua forma mais direta, neste site Na verdade, foi o tema de um post convidado pelo David estimado Churchward. E também pelo igualmente estimado Kasper de Jonge. Mas nenhum desses postos beneficiou das funções v2 disponíveis para nós hoje). Para ilustrar o que podemos fazer com as fórmulas Power Pivot mais avançadas, vamos começar com este modelo simples: E um pivô simples: A unidade vendida é a linha vermelha irregular no gráfico no topo da mensagem e Sua fórmula é muito simples: Unidades Vendidas SUM (SalesQtySold) E nós queremos uma versão de Unidades Vendidas que é suavizada ao longo de um período de 3 meses. Moving Sum Permite começar com uma fórmula que é uma soma dos últimos 3 meses (incluindo o atual): 3 meses Moving Sum Unidades vendidas CALCULATE (Unidades vendidas, DATESINPERIOD (CalendarDate, LASTDATE (CalendarDate), - 3, Month)) E ver o que se parece com: Mover Soma de 3 Meses Reflete o Mês Atual e os Dois Meses Anterior Mover Primeira Tentativa Média OK, mas esse número é maior que um único mês e não corresponde à escala do nosso negócio do mundo real, por isso nós Wouldnt querem gráfico que queremos a versão média do que. É uma quantia móvel de 3 meses, de modo a obter a média, poderíamos apenas dividir por 3: 3 Mês Divisão média 3 3 Mês Movendo Soma Unidades Vendidas / 3 Qual parece: 3 Mês Movendo Médio Via Divide por 3 Tem um inconveniente Aqueles Primeiros dois meses, já que são os dois primeiros meses em nosso calendário, estão somando menos de 3 meses de vendas, mas ainda dividindo por 3. Então, injustamente, diminui sua média. Média Móvel Corrigida Podemos explicar isso mudando nosso denominador para usar uma lógica semelhante ao numerador: 3 Mês Mover Média Corrigido 3 Mês Mover Soma Unidades Vendidas / CALCULAR (DISTINCTCOUNT (Calendário Mês), DATESINPERIOD (CalendarDate, LASTDATE (CalendarDate) -3, mês)) Em inglês: tomar a medida de soma de 3 meses que já temos e dividi-la pelo número de meses distintos (únicos) que temos sobre esse mesmo período de 3 meses. Esta Calc é mais justa para os meses no início variações Há uma série de variações nesta abordagem diária / semanal / trimestral versões, corrigindo para calendários que se estendem para além do intervalo de datas onde você tem vendas, adaptando-o para calendários personalizados através do A maior fórmula do mundo. Etc, mas vou esperar e ver o que as pessoas perguntam sobre os comentários antes de cavar em qualquer um desses. Um dos engenheiros fundadores da Power Pivot durante sua carreira de 14 anos na Microsoft e criador do primeiro serviço Power Pivot da nuvem, Rob é uma das principais autoridades na inteligência de negócios de auto-atendimento e na tecnologia de planilha de próxima geração. Este post tem 27 comentários É complicado controlar 8220X meses moving8221 do Excel Ter uma célula no Excel onde podemos colocar 3, 6, 12 ou mesmo 1. Ele funciona But8230 .. Eu estou trabalhando com dias 8211 especificamente, eu preciso para obter Uma média contínua de 28 dias de uma das minhas medidas. Isso funciona bem quando eu exibir o resultado com meu atributo de data. No entanto, a minha dimensão do calendário também tem um atributo discreto e não contínuo chamado DateMonth (que se parece com 1-Jan, 2-Jan, etc.) Eu estava esperando que isso me permitiria então pegar meu atributo de ano e comparar a média de 28 dias para O primeiro de janeiro através de vários anos. Assim, você poderia ter um gráfico de linha onde o eixo é 1-Jan to 31-Dec (sem referência ao ano) ea categoria série é por ano, então uma linha para cada ano. Espero que alguém poderia ajudar A última equação fornecida 8211 Moving Average Corrigido 8211 oferece um denominador com um valor de 12 (ou seja, é dependente de quando meu Calendaryear mês começa. Então, para ter uma correta 12 meses de média móvel, os meus dados e calendário precisa Iniciar ao mesmo tempo). Todas as sugestões que eu descobri: O que eu fiz foi começar a contar meus meses a partir da primeira data das minhas vendas (ou seja, 40663 é a última data antes de eu querer começar a contar os meses em que minhas vendas foram). Espero que isso possa ajudar alguém a procurar neste post do blog William, você é uma poupança de vida. Eu estava tentando descobrir por que meu denominador detido 3 para o mês mais antigo de dados que eu estava trabalhando. Agradeço seu exemplo e explicação que se aplicam exatamente à minha situação. John pullin diz: Eu tenho uma melhor solução para o comentário final aqui 8211 um que calcula o número de meses para dividir, se os seus dados e calendário não iniciar ao mesmo tempo. Este foi o calc original: mês 3 Mês Mover Mover Mover Mover Unidades vendidas / CALCULATE (DISTINCTCOUNT (CalendarYear mês), DATESINPERIOD (CalendarDate, LASTDATE (CalendarDate), - 3, mês)) e está dentro do divisor que a edição é Necessário 8211 para corretamente trabalhar para fora onde dividir por 2 e, em seguida, 1 (para os primeiros 3 meses em seus dados). O seguinte trabalha um deleite: Média móvel de 3 meses 8211 Trabalhando 3 meses Mover Sum / CALCULATE (CALCULATE (COUNTROWS (VALDOS (DimDateCalendarMonth)), DATESINPERIOD (DimDateDatekey, LASTDATE (DimDateDatekey), - 3, MÊS)) Onde FactSales é Sua tabela de fatos obvs. Espero que isso ajude alguém a sair 8211 como ele me levou louco Vikas Gautam diz: Eu tenho uma pergunta. E se precisarmos da média dos últimos 30 dias de negociação ou dias úteis. Naturalmente, nós teríamos uma coluna da data que representa dias negociando. E quantidade de vendas correspondente. 1 mês de média com a sua fórmula won8217t ser a mesma coisa. Como Exact 30 dias8217s média é necessária aqui. Você poderia por favor sugerir uma fórmula. O difícil é que o cálculo se baseie na data financeira diferente da data do calendário, uma vez que quase todas as funções de data inteligentes existentes não podem ser utilizadas. Qualquer fórmula de cálculo de amostra com base na data financeira eu tenho uma abundância de informações sobre os cálculos com base no cliente datas a partir do link acima 8220Greatest Fórmula no mundo8221. It8217s muito helpful8230 .. Esta é uma grande postagem por todos. Eu quero saber o que se as vendas em um dos últimos três meses é zero ou nenhuma venda em tudo, então como as fórmulas sugeridas trabalho. Eu quero descobrir o número de meses do mês atual para últimos três meses tendo vendas. Digamos que estou em maio de 2014 nos últimos três meses estará incluindo maio de 2014. março de 2014, abril de 2014 e maio de 2014. Mas abril de 2014 não tem vendas. Portanto, deve ser a soma de março e maio de 2014 vendas dividido por 2 e não 3. Suponha que temos vendas para Jun 2014 e Jul 2014. Para junho de 2014 a média dos últimos 3 meses deve ser (My 2014 Jun 2014) / 2. Para Jul 2014 a média dos últimos 3 meses deve ser (May 2014 Jun 2014 Jul 2014) / 3. Qualquer ajuda para alcançar este objectivo será muito apreciada. Ei, solução brilhante. Mas agora estou procurando a mesma adição que CheenuSing mencionou. Algumas séries em meus dados don8217t têm vendas no último período, mas outros fazem. CheenuSing, você encontrou a solução para que I8217d ser muito grato, obrigado. Im novo com todas as funções DAX e bastante lutando com o meu cálculo de média móvel. Eu só preciso a média móvel de 3 meses de volta não incluindo o mês atual. Eu tentei usar 8220IF8221 mas nunca funcionou. Alguém pode me ajudar com isso

No comments:

Post a Comment