Moving-Average que exclui registros específicos. Moving-Average que exclui registros específicos. Software: Cognos BI 8211 Report Studio, Banco de Dados Relacional, v10.0 Objeto: Mover-Média das vendas por 2 semanas atrás, considerando somente produtos que tenham pelo menos 4 semanas de venda. Data Sample: Tipo de Produto Tipo de Produto Semanas à venda Vendas Material de escritório Almofada de papel 1 10 Material de escritório Almofada de papel 2 4 Material de escritório Almofada de papel 3 5 Material de escritório Almofada de papel 4 2 Material de escritório Almofada de papel 5 1 Material de escritório Canetas 1 1 Material de escritório Canetas 2 2 Material de escritório Canetas 3 2 Material de escritório Canetas 4 3 Material de escritório Lápis 1 2 Material de escritório Lápis 2 1 Material de escritório Lápis 3 1 Material de escritório Borrachas 1 1 Material de escritório Borrachas 2 2 Exemplo: Material de escritório 8211 Borrachas 8211 Weeks on Venda 2, deve média o seguinte: Canetas 8211 Semanas em Venda 2 8211 Vendas 2 Almofada de Papel 8211 Semanas em Venda 2 8211 Vendas 4 Lápis não considerado porque ele só tem 3 semanas em Venda. Este é apenas um exemplo simples e não é dados reais. Não significa dumb para baixo o exemplo, mas parece confuso para mim. Não consigo fazer com que o Cognos trabalhe comigo. Isso é o que eu tenho até agora: média móvel (vendas, 2 para semanas em venda) Existe uma maneira obviouseasy para que ele exclua de médias onde o tipo de produto não tem pelo menos 4 semanas em SaleRunning-total em um cubo O conceito De um total de corrida é conceito relacional. Como uma tabela relacional pode ser visualizada em apenas duas dimensões, é muito fácil entender e visualizar agregados em execução e em movimento. Uma fonte de dados multidimensional, por outro lado, é mais complexa. Você pode querer o agregado em execução em uma dimensão, mas não em outro. Ao tentar usar as funções de agregação em execução em um cubo, não é possível garantir resultados consistentes, os drilldowns podem se comportar inesperadamente eo tempo de processamento inteiro é aumentado, pois o conjunto de resultados deve ser processado localmente. Felizmente os agregados em execução e em movimento podem ser manipulados com funções puramente dimensionais. Considere a seguinte solicitação. Um gráfico de linhas que mostra o total de vendas em curso para os anos atual e anterior. O eixo ordinal mostra todos os meses do ano corrente. Para iniciar criar um novo relatório de gráfico de linha. Crie um Cálculo de Consulta na área Categoria com a seguinte expressão (substituindo com valores corretos do seu próprio cubo): Isso retornará os descendentes do mês de 2018 (veja um post anterior sobre uma maneira melhor de encontrar o ano atual). Crie uma expressão de consulta na série com a seguinte expressão: total (Cube. Measures. Sales within set periodsToDate (Cube. Date. Date. Year, currentMember (Cube. Date. Date))) Execute o relatório. Se tudo correr bem, você verá a linha crescer como esperado. É importante compreender o mecanismo. A expressão na série é processada para cada item no eixo ordinal. A função currentMember levará o membro that8217s sendo avaliado. Até agora 1 de janeiro a expressão apareceria como: total (Cube. Measures. Sales dentro de set periodsToDate (Cube. Date. Date. Year, Cube. Date. Date. Month-gt: PC. MEMBER.20180101-20180131)) Quando ele Obtém a categoria de outubro, ele aparecerá como: total (Cube. Measures. Sales dentro de periodos determinadosToDate (Cube. Date. Date. Year, Cube. Date. Date. Month-gt: PC. MEMBER.20181001-20181031)) O periodToDate Irá pegar o membro e criar um conjunto de membros começando com o primeiro membro no nível especificado para o membro que está sendo avaliado. October2018 retornaria o jogo. Janeiro2018, Fevereiro2018, Março2018, Abril2018, Maio2018, Junho2018, Julho2018, Agosto2018, Setembro2018, Outubro2018. A próxima demanda é ver o total de corrida para o ano anterior. Em um banco de dados relacional, você pode fazer isso com uma associação externa. Aqui é apenas uma extensão lógica da mesma expressão. Total (Cube. Measures. Actual dentro de setsToDate (Cube. Date. Date. Year, parallelPeriod (Cube. Date. Date. Year, 1, currentMember (Cube. Date. Date)))) Esta é essencialmente a mesma expressão, com A função parallelPeriod que envolve o currentMember. O mesmo conceito pode ser usado para mover totais. Em vez da função periodsToDate, você usaria lastPeriods (). Total (Cube. Measures. Sales dentro de set lastPeriods (5, currentMember (Cube. Date. Date))) Isso sempre criará um total para um conjunto de 5 membros terminando com o membro sendo avaliado. Aqui é um pequeno desafio. Sabendo disso, como você faz um total de execução em reverso Compartilhe isto: obrigado pelas explicações claras e precisas. Meu desafio é calcular uma variância de mês a mês usando uma fonte OLAP (cubo Powerplay). Eu tenho uma crosstab com colunas meses, linhas são 3 medidas (este ano real, este ano orçamento, ano passado real) I8217d gostaria de adicionar uma medida 4 que mostra (para todos os meses YTD) a alteração em 8216Actuals8217 desde o mês anterior Ou seja, 20 de crescimento em agosto de 2018 (variação entre julho e agosto) 5 crescimento em setembro de 2018, 5 queda em outubro de 2018) etc Julho Agosto Set Out Actual 100 120 126 119,7 Mês Chg 20 5 -5 ltltltlt esta é a linha que eu preciso Para adicionar orçamento 15 16 17 18 I039m um pouco novo para MDX 8211 foram dabbling com tuplas, períodos paralelos, prevMember etc 8211 nenhum dar-me o que eu preciso) (Eu tenho alguma flexibilidade no design do cubo, se necessário 8211, mas estou lidando com muito grande Volumes de dados) Realmente apreciaria qualquer conselho. Thx, Gill O que você está descrevendo é um movimento total (bem, uma mudança de movimento eu acho). Isso é realmente muito mais fácil de realizar do que o total de execução que descrevi. You8217ll necessidade de usar um cálculo que irá encontrar o 1 8211 (Measure Month Month anterior). Para encontrar a medida de mês anterior você precisa fazer uma tupla na Medida e o prevMember () do mês na coluna. A função mágica que você está procurando é currentMember (). CurrentMember retornará o membro da hierarquia especificada que está sobre a interseção atual. 1 8211 (Measure tuple (currentMember (Cube. Dim. Time), Measure)) deve ser o que você está procurando. HI Paul 8211 Grande explicação. Eu sou capaz de fazer contagem de execução usando sua sugestão. Eu queria saber se há alguma maneira de implementar execução contagem em uma dimensão onde o nível foi suprimido no cubo. Dimensão Hierarquia Todos os membros Membro1 Membro1.1 Membro1.2 Membro2 Membro2.1 Membro2.1.1 Membro2.1.2 Membro2.2 Membro3 Diga que eu selecionei Membro 1.1, Membro2.1.1, Membro2.2, Membro3 na página de prompt. Gostaria de fazer uma contagem de execução sobre o membro. Isto é possível? Member1.1 8211 1 Member2.1.1 8211 2 Member3 8211 3 That8217s um problema I8217ve revisitado várias vezes, mas eu can8217t pensar em qualquer maneira de conseguir que funcione. Para o melhor de meu conhecimento não há função MDX que irá retornar o índice de um membro específico em um conjunto (o inverso do item ()). O método que eu postei depende de membros contíguos em um único nível. Você pode ser capaz de trapacear com um uso inteligente das funções de relatório. Por exemplo, você pode usar o rowNumber () para imitar o running-count, e you8217ll ser capaz de usar expressões de relatório para qualquer cálculo que você precisa: rowNumber () Query1.Measure. Não o melhor trabalho, mas o único que posso pensar. Oi Paul 8211 Obrigado pela resposta rápida. Estou no meio de jogar com uma combinação de número de nível e último período para gerar uma identificação única e classificar a identificação única para me dar a contagem. Dolorosamente cálculos longos e estava esperando sua sugestão no número da linha pode fazer o truque. Embora eu possa inserir um número de linha (através dos objetos inseríveis) em uma lista sem um problema, no entanto, posso fazer referência a ele em um item de dados, pois não é um item de consulta. Você pode eleborate no número da linha. Muito obrigado novamente por sua sugestão de ter sido também jogar com a idéia de rank. De acordo com a ajuda o tipo de ranking (olímpico, denso, etc) é determinada pelo tipo de cubo utilizado. Rank (1 dentro do conjunto de teste) estava sempre retornando 1, por isso parece que rank powercube é provavelmente usando classificação Densa. Pode ser possível que outros cubos usem diferentes tipos de classificação, mas eu só tenho acesso a powercubes no momento. Quando você insere o número da linha na lista you8217re usando uma expressão de relatório. Como a lista está associada a uma consulta específica, você pode fazer referência a itens de dados dessa consulta dentro da expressão do relatório. Por exemplo let8217s dizer sua lista tem Ano, Nome do Produto, Total de Vendas de Query1. Você pode colocar um cálculo de layout na coluna à esquerda com a seguinte expressão: rowNumber () Query1.Sales Total. Isso multiplicará o Total de Vendas pelo número da linha. Se você estiver tentando fazer referência à Quantidade de Vendas, que não aparece na lista, você precisa incluí-la nas propriedades da lista (sob as propriedades há uma linha chamada propriedades, isso força o item de dados a ser incluído no SQL, mesmo Se it8217s não uma das colunas da lista). Oi Paul8230Eu estou esperando por sua ajuda para a minha consulta anterior e você também poderia me ajudar a encontrar rank quando a coluna não está em crosstab. Eu tenho prompts na página de relatório, quando eu não estou selecionando qualquer prompts a classificação está funcionando corretamente, mas quando eu selecionar qualquer classificação de prompt não está funcionando .. o prompt de seleção não está presente como linha ou coluna na guia cruzada. Parece que ele está primeiro calculando a classificação e filtragem dos valores com base em valores de prompt. Agradeço sua ajuda. Estou trabalhando em um relatório de crosstab simples usando dados relacionais. Eu sou capaz de calcular o movimento total em ordem crescente, há uma maneira de calcular o movimento total em ordem decrescente Você pode por favor me dar qualquer sugestão You8217re provavelmente fazendo algo como running-total (Medida para Atributo). 8211 running-total (Measure for Attribute) Obrigado pela resposta Paul Nos exemplos a seguir, movingtotal (measure, 2 para atributo) Exemplo 1 Os valores estão corretos e se eu quiser obter os mesmos resultados, mesmo se eu classificar as datas coluna em ordem desc o que devo fazer (movingtotal função é simplesmente calcular medida medida valor anterior, independentemente da ordem) Exemplo 1: as datas estão em ordem crescente Jan 1a movimentação total 2 de Janeiro em Movimento 3 de Janeiro em Movimento A 10 100 10 20 2018 30 30 3020 50 B 50 500 50 70 7050 120 80 8070 150 C 100 1000 100 150 150100 250 300 300150 450 Exemplo 2: datas em ordem dec 3 Jan 2o MovendoTotal Jan 1 MovendoTotal A 30 300 30 20 2030 50 10 1020 30 B 80 800 80 70 7080 150 50 5070 120 C 300 3000 300 150 150300 450 100 100150 250 Espero que a minha pergunta é clara agora. Qualquer sugestão seria apreciada It8217s claro, mas muito difícil. Como os totais em movimento são aplicados com base na classificação, você precisa primeiro executar esse cálculo e, em seguida, classificá-lo posteriormente. Crie a consulta, A, que tem o total móvel, em seguida, crie outra consulta, B, com base em A. Uma vez que as agregações são feitas em A qualquer classificação feita em B não afetará os dados. Oi Paul, I8217m tentando calcular a diferença de corrida para todos os meses de um ano. A fonte de dados é o cubo eo tipo de relatório é crosstab. Minha medida é Empcount. Eu quero obter algo como isto Jan-11 Feb-11 8230 Dec-11 A1 10 20 5 A2 8 13 20 e assim por diante. Meu problema surge do fato de eu obter A1, A2 etc de uma dimensão, que são crianças de uma categoria 8216A8217. Eu recebo A1, A2 por uma expressão de cálculo (digamos DataItemA) dada por descendentes (filter (cube. DimA. DimA, caption (cube. DimA. DimA) pA), 1). Até este ponto eu obter resultado correto. Agora, quando eu tento usar uma expressão running-difference (empcount para DataItemA), ele me dá um erro dizendo que a diferença de execução não pode ser usado no contexto em que é usado. Qualquer ajuda que você pode fornecer será uma grande ajuda. Oi Amit Bem-vindo ao maravilhoso mundo dos relatórios dimensionais. As funções em execução não são suportadas em consultas dimensionais. O que é uma coisa boa, já que as funções de execução são muito limitantes. Em vez disso, você terá que usar as funções dimensionais para obter o que você precisa. Se eu entender corretamente sua crosstab mostra o EmpCount para cada A para cada mês. Você tem um peer sob o nó A que mostra o total de A para cada mês. Debaixo do total você quer ver a diferença de corrida de cada mês. O nó A e Total que você já possui. A diferença de movimento pode ser calculada encontrando o prevMember () do currentMember () da Hierarquia de Data. Tente fazer isso: Crie um novo item de dados chamado SelectedA: member (aggregate (currentMeasure dentro do conjunto de filtros (cube. DimA. DimA, caption (cube. DimA. DimA) pA)), 8217SelectedA8217,8217SelectedA8217) Isso criará um membro calculado que Você pode usar em tuplas. Em seguida, crie o item de dados que você irá adicionar à tabela de referência cruzada: SelecionadoUm 8211 tupla (SelectedA, prevMember (currentMember (Cube. Time. Time))) Hey Paul, You8217re um gênio de reportagem dimensional. Eu não conseguia entender um 100 do que você tinha me sugeriu fazer especialmente na expressão SelectedA: member (aggregate (currentMeasure dentro do conjunto de filtros (cube. DimA. DimA, caption (cube. DimA. DimA) pA)), SelectedA, 8217SelectedA ) Como eu pensei que seria uma espécie de referência circular, mas percebi que o SelectedA, 8217SelectedA parte é apenas seqüência de caracteres. Mas funcionou. Há uma coisa que não aconteceu. Preciso que a diferença de execução ou o item de dados de diferença fiquem em branco em janeiro de 2017. Presentemente mostra um valor e está trabalhando como por a definição mas eu estou filtrando a pergunta para 2017 e me mostra a diferença para Dec-2018 e Jan-2017, que I8217m que tenta evitar. É possível esvaziar isto fora Jan-11 mesmo com o defintion complexo Bem, a consulta está funcionando como esperado 8211 it8217s mostrando-lhe a diferença correta para Dez a Jan. Esconder o valor através de um truque na consulta é possível, mas eu Suspeite que também diminui o desempenho das consultas. Esta é uma crosstab, sim O que você poderia fazer é condicionalmente ocultar o valor para a primeira coluna. Crie uma variável booleana, chamá-lo 8220notFirstColumn8221. Use a expressão 8220ColumnNumber () 18221. Desbloqueie o relatório e use essa variável como variável de renderização para o valor nas interseções. Em outra coisa que eu esqueci de mencionar é que eu tenho uma coluna total Empregados Total e eu preciso a diferença de corrida sobre o total de A1, A2 etc algo como isto. Jan-11 Fev-11 8230Nov-11 Dez-11 A1 10 20 6 5 A2 8 12 18 20 8230 An 1 3 3 2 Total Emp 46 50 48 45 Correndo Diff 4 -3 paul você lenda 8211 obrigado por isso eu estava usando total (MyMeasure dentro de periodToDate8230 set, mas achei que eu precisava usar explicitamente total (Cube. Measures. Sales dentro de periodToDate8230 set para que ele funcione corretamente. Obrigado mais uma vez eu tenho que calcular a contagem de execução em um cubo com base no parâmetro do ano. Para mostrar o ano anterior contagem de execução em um gráfico de linha. Por favor, sugerir-me como faço-lo com o parâmetro A expressão funciona no contexto de um conjunto em uma borda. Por exemplo, um conjunto de meses nas linhas de crosstab. É a contagem de corrida deve ser mostrado no ano Se você precisa mostrar os meses do ano você pode fazer algo como descendentes (prompt (8216Year8217,8217mun8217), MonthLevel). Coloque isso nas linhas e use o total (ou Contagem ou média) (medida dentro de periodos definidos para data) Para mostrar o ano anterior, basta usar o período paralelo Função como mostrado acima (copiado aqui). (Cube. Measures. Actual dentro de setsToDate (Cube. Date. Date. Year, parallelPeriod (Cube. Date. Date. Year, 1, currentMember (Cube. Date. Date)))) Paul, eu amo o seu blog e tenho Aprendeu muito com isso. Eu estou tentando fazer um gráfico de linha cumulativa mostrando dois anos em comparação uns com os outros. Uma linha mostra o ano corrente (ou seja, 2017) eo outro o ano anterior (ou seja, 2018). Eu quero que a linha para o ano atual para parar depois que o mês atual foi atingido. Por exemplo, se é junho de 2017. A linha para CY2017 iria parar em junho e não mostrar julho de 2017, agosto de 2017, setembro de 2017, etc, mas eu quero a linha para 2017 para mostrar dados para esses meses. Eu tentei usar funções diferentes, como filtro, exceção, etc, mas não tiveram qualquer sucesso. Qualquer ajuda seria muito apreciada. I8217m prazer em ouvir o blog está ajudando você. O que você está procurando fazer é certamente possível. O truque é usar a função if (). I8217ll fazer a suposição de que as categorias vem dos descendentes do ano em curso. Portanto, você deve ter duas séries em seu gráfico, total (real dentro de set periodostodate (..)) e total (medição dentro de set periodostodate (parallelperiod ())). Reescreva as expressões de modo que se pareça com: if (medida 0) então (nulo) else (total (measure dentro de set periodstodate (..))) e if (measure 0) then (total )) Else (null) Essas expressões só funcionariam se a medida for 0 para meses futuros. Se houver dados, então será necessário outro passo. Normalmente eu tento evitar se as declarações, mas eles funcionam bem com as medidas. Don8217t tente convertê-lo em uma instrução case, pois isso forçaria o Cognos a executar a consulta localmente. Eu tenho o mesmo problema, estou tomando categorias de ano anterior como ano atual todas as categorias não são adicionados no cubo. Eu quero mostrar o gráfico cumilativo para todas as semanas no ano anterior. No ano em curso, quero que a linha pare na semana anterior. Minhas expressões são if (Cube. Measures. Units 0) then null else (total (Cube. Measures. Units dentro de set periodsToDate (Cube. TimePeriod. TimePeriod. Year, parallelPeriod (Cube. TimePeriod. TimePeriod. Year, -1, currentMember Cube. TimePeriod. TimePeriod))))) para o ano anterior, total (Cube. Measures. Units dentro de set periodsToDate (Cube. TimePeriod. TimePeriod. Year, currentMember (Cube. TimePeriod. TimePeriod))) Mas estou recebendo blanc sobre o relatório. Agradecemos antecipadamente que eu não veja qualquer razão por que você deve ficar em branco no relatório. As expressões parecem bem. As duas séries estão retornando em branco ou apenas uma. Além disso, se houver dados para a semana atual, a linha do ano atual continuará até esta semana. A maneira em que isso é criar um novo item de dados, chamá-lo Current Week: parallelPeriod (Cube. TimePeriod. TimePeriod. Year, -1, item (tail (filter (Cube. TimePeriod. TimePeriod. Week. Cube. Measures. Unitgt0) ) E altere a série do ano atual para algo como: if (count (1 dentro do conjunto de periodosToDate (Cube. TimePeriod. TimePeriod. Year. CurrentMember (Cube. TimePeriod. TimePeriod))) gt count (1 within set periodsToDate Cube. TimePeriod. TimePeriod. Year. Current Week))) então null else (total (Cube. Measures. Units dentro de set periodsToDate (Cube. TimePeriod. TimePeriod. Year, parallelPeriod (Cube. TimePeriod. TimePeriod. Year, -1, currentMember (Cube. TimePeriod. TimePeriod))))) Ele doesn8217t olhar como there8217s uma maneira de publicar imagens na seção de comentários aqui. Se isso não corrigir, postar uma nota no fórum Cognoise com screenshots e I8217ll ajudá-lo lá. Obrigado pela resposta que Paulo I8217ve fez, como você mencionou acima, não estou recebendo a linha para CY. Na minha linha do ano atual, preciso mostrar a linha até a semana anterior. Se eu tenho categorias no meu ano atual até a 4 ª semana. Eu preciso mostrar a linha cumulativa até a semana3. Como 4 ª semana tem 0 valor para a medida, 3 ª semana 4 cumilative valor é mesmo e estou vendo parllel (stright) linha de 3 ª semana a 4 ª semana. Estou tentando fazer 4 º semana 0 valor para nulo, mas ainda vejo até 4 ª semana. Além disso, o valor Minha semana está vindo de prompt (semana3). Mas eu tenho catogories até week4 em CY. Eu não tenho certeza onde (que e-mail thread) para anexar screenshot em cognoise. Eu também tentei a expressão abaixo para CY, eu não vi a linha para CY. If (total (Cube. Measures. Units dentro do conjunto tail (Cube. TimePeriod. TimePeriod. Week, 1)) 0) then null else (total (Cube. Measures. Units dentro set periodsToDate (Cube. TimePeriod. TimePeriod. Year, parallelPeriod (Cube. TimePeriod. TimePeriod. Year, -1, currentMember (Cube. TimePeriod. TimePeriod))))) O que acontece se você remover a verificação para 0 I can8217t ver qualquer razão pela qual wouldn8217t trabalho. Crie um novo tópico e publique uma cópia do xml do relatório. Seria mais fácil para mim resolver o problema. Oi Paul, Eu tenho uma consulta retornando-me registros com uma data (também mês e ano) e gostaria de usar contagens de corrida para contar a ocorrência de últimos 12 meses em cada um dos registros Estou usando Cognos 8 amp relatórios obrigado por seu apoio Esta é uma fonte de dados relacional Você pode ser capaz de fazer algo como: running-count (caso quando Date gt addmonths (currentdate, -12) then Date else null end para Record) Dimensional é um pouco mais difícil para isso Eu tenho um cubo Based que atualmente trabalham em um prompt onde o usuário seleciona timeframe. No estúdio de relatório meu filtro é: Standard Data Cube. Time. Time. Month in (TimePrompt) O usuário agora quer programar o relatório onde o tempo é YTD. Eu tentei substituir TimePrompt com YTD, mas ele não funciona. Standard Data Cube. Time. Time. Month in YTD) Ao trabalhar com dados dimensionais, você precisa se lembrar de esquecer tudo o que sabe sobre SQL. Sim, o Cognos permitirá que você faça um filtro como 8220Standard Data Cube. Time. Time. Month em (TimePrompt) 8221, mas é uma maneira muito ruim de fazer as coisas. Primeiro, se você estiver referenciando o nível de mês no relatório, crie um cálculo de consulta com 8220promptmany (8216TimePrompt8217,8217mun8217,8221,8217set (8216, Standard Data Cube. Time. Time. Month8217,8217) 8217) 8221. Use isso em vez de onde você está referenciando o nível de mês. Se você não estiver referenciando os meses diretamente no relatório, cole-o então como um slicer. Agora I8217m assumindo que YTD é uma hierarquia diferente. Mesmo com a tolice de usar um filtro para limitar os dados retornados pela consulta, you8217ll nunca será capaz de filtrar uma hierarquia por membros em outro. Você poderia tentar visualizá-lo tentando limitar o eixo z por (x1, x2, x3). O que você pode fazer em vez disso é referência o YTD como o valor padrão na macro de prompt: promptmany (8216TimePrompt8217,8217mun8217, Standard Data Cube. Time. YTD. Month8217,8217set (8216, Standard Data Cube. Time. Time. Month8217,8217) 8217) Se o usuário selecionar qualquer mês, então o item de dados é definido (Month1, Month2, Monthn). Se o usuário doesn8217t selecionar qualquer meses, em seguida, it8217s Dados Padrão Cube. Time. YTD. Month. Não comparando diferentes hierarquias. Eu estou usando a contagem de execução em minha consulta para calcular o número de occuerence do item. Mine de dados é um relatório crosstab aninhado. Eu estou usando a expressão como running-count (Sub Segmento forProduct Segmento, Linha de Produtos, Família de Produtos, Customer Abbr, WK Data, WK Data Mês, Ano Fiscal, Fonte de Dados, Tipo de Dados)) esta expressão está dando resultado correto. Mas o meu problema é com o tempo de execução que leva para executar o relatório. Pode u por favor me sugerir alguma idéia melhor para conseguir isso. Eu tentei usar contagem, contagem distinta, mas nenhum deles está me dando o resultado correto. Faz sentido que isso demore muito tempo. That8217s um número muito grande de campos you8217re usando para cortar a contagem de execução. Se o seu banco de dados é Oracle, você pode conseguir fugir com o uso de funções de janelas, mas essas são difíceis de trabalhar no Cognos. Eu não sou um desenvolvedor Cognos (Microsoft BI em vez disso), mas eu atualmente trabalho com uma equipe de caras Cognos, que construir relatórios sobre os cubos SSAS. Devido à sua incapacidade de usar a função 8220aggregate8221 sobre células vazias nos cubos SSAS, eles me pediram para preencher todo o espaço vazio no cubo com 0s. Claro que isso é uma idéia ridícula 8211 depois de todos os cubos são como 90 espaço vazio (normalmente). Infelizmente, eles wouldn8217t mover e tentar usar coisas como declarações totais ou caso para converter vazio para NULL. Você poderia por favor me avise se ao trabalhar com células vazias you8217d usar agregado e quais seriam as melhores práticas nessa área de desenvolvimento do Cognos. Tanto quanto eu sou ciente que estão usando Cognos 10.1.1 se este matters8230 eu concordo que it8217s unreasonable pedir para povoar as pilhas vazias com 0s. Isso inutilmente inchar o tamanho do cubo, e pode afetar o desempenho. Embora seja verdade que null 1 nulo, a função de resumo agregado não deve se comportar como esse. No Cognos você poderia escrever algo como: agregado (Medida no conjunto definido (Membro1, Membro 2, Membro 3)). Ao converter para o MDX seria algo parecido com (pseudocódigo e simplificado a partir do que Cognos realmente geraria) Eu recomendo fazer alguns testes, garantir que MDX manuscrita retorna os dados esperados, em seguida, voltar para a equipe do Cognos e descobrir what8217s acontecendo. Pode ser possível que eles usem a mesma metodologia para trabalhar com o cubo do que com um banco de dados relacional. Usando filtros e funções relacionais em vez de trabalhar apenas com as funções de olap. Nesses casos, o Cognos exportará os dados necessários à consulta para um conjunto de dados local e executará uma instrução SQL nela. Nesse caso, o nulo 1 seria realmente nulo. 8220It pode ser possível que theyre usando a mesma metodologia para trabalhar com o cubo como fariam com um banco de dados relacional. 8221 - isso é exatamente o que eles estão fazendo. Ninguém tem nenhuma experiência com relatórios multidmensional e eles estão todos acostumados a trabalhar com gerente de estrutura (pls desculpa minha terminologia possivelmente errada aqui). Eu gostaria de ter trabalhado com caras Cogos capazes, sabendo o que eles estão fazendo, para que eu não tenha que ler os blogs do Cognos, ler a documentação da IBM, etc, mas o que pode fazer? Eu vou voltar para você com mais informações sobre como eles Vá com este pequeno desafio. No entanto, pode levar um par de semanas desde que estamos entrando na temporada de férias. Obrigado heaps para a resposta e ter um xmas feliz e um feliz ano novo Você poderia por favor me ajudar com o seguinte requisito: Eu tenho uma medida chamada quantidade e uma dimensão com valores 8216Payments8217,8217Estimate8217 etc .. Atualmente estou usando apenas estes 2 Valores em colunas e meses em linhas. Eu criei um cálculo chamado 8216XYZ8217 como estimativa de pagamento. Agora eu quero o total de rolamento deste cálculo Estimar Pagamento Xyz Jan-11 10000 5000 5000 11-fev 7000 6000 6000 Mar-11 5000 4000 7000 Apr-11 8000 6000 9000 Valores de mês em linhas estão vindo da data dimensão: Quando eu estou amarrando Para usar a expressão no seu exemplo Estou recebendo um erro QE-DEF-0478 Coação inválida de 8216level8217 para 8216hierarchy8217 Desculpe se a minha pergunta parece bobagem. Sou novo em relatar sobre cubos. Desde já, obrigado. Categorias Mensagens recentesRetorna um valor calculado usando a função de agregação apropriada, com base no tipo de agregação da expressão. Sintaxe: agregado (expr auto) agregado (expr para todos os expr) agregado (expr para relatório) Contagem: Retorna o número de itens de dados selecionados excluindo valores NULL. A palavra-chave distinct está disponível para compatibilidade com versões anteriores das expressões usadas em versões anteriores do produto. Sintaxe: count (distinto expr auto) count (distinto expr para todos os expr) count (distinto expr para o relatório) Exemplo: count (gosalesgoretailers. Products. Product name) - (op: 41, 15, 21) ------------ (op: 5, 4, 4) Contagem (Tipo de produto para qualquer linha de produtos) ----------- (op: 5, 4, 4) Contagem (Tipo de produto para Relatório) ------------------- (op: 21 para todos) Máximo: Retorna o valor máximo dos itens de dados selecionados. A palavra-chave distinct está disponível para compatibilidade com versões anteriores das expressões usadas em versões anteriores do produto. Sintaxe: máximo (distinto expr auto) máximo (distinto expr para todos os expr) máximo (distinto expr para o relatório) Exemplo: máximo (Quantidade) -------------------- ------------ (op: 962) maximum (Quantidade para todos gosalesgoretailers. Products. Product type) (op: 344,4368230) Maximum (Quantidade para qualquer gosalesgoretailers. Products. Product name) (op : 44,78,8230.) Máximo (Quantidade para relatório) ------------------- (op: 1,646) Mínimo: Retorna o valor mínimo dos itens de dados selecionados. A palavra-chave distinct está disponível para compatibilidade com versões anteriores das expressões usadas em versões anteriores do produto. Sintaxe: mínimo (distinto expr auto) mínimo (distinto expr para todos os expr) mínimo (distinto expr para o relatório) Exemplo: mínimo (Quantidade) -------------- (op: 43,330, 142,150 ) Mínimo (Quantidade para todos os tipos de produtos) 8211 (op: 6, 4, 4) Mínimo (Quantidade para todos os tipos de produtos) ---- (op: 6, 4, ----------------- (op: 2) Moving-Average: Retorna o valor adicionando os valores ao anterior com base no numericexp. Sintaxe: média móvel (numericexpr. Numericexpr no prefiltro de exp) média móvel (numericexpr. Numericexpr prefilter distinto). Para expr para o auto de relatório Exemplo: média móvel (Quantidade, 2) (op: Quantidade Média móvel 198,676 198,676 345,096 271,886 95,552 220,324 96,246 95,889 Moving-Total: Retorna o valor adicionando os valores ao anterior com base no numericexp Sintaxe: Moving total (Numeraçãoxpr. Numicexpr no prefiltro de exp) Movendo-total (Numero de caracteres) Numero de movimentação 198,676 198,676 345,096 543,772 95,552 639,324 96,246 536,894 Porcentagem: Retorna a porcentagem do valor total para os itens de dados selecionados Apenas para fontes de dados relacionais Sintaxe: porcentagem (numericexpr em prefiltro de exp) porcentagem (prefixo distinto de numericexpr) para expr para auto de relatório Exemplo: porcentagem (Quantidade) Op: 16, 12, 10.) Percentil: Devolve um valor, numa escala de cem, que indica a percentagem de uma distribuição que é igual ou inferior aos dados seleccionados Unid. Sintaxe: percentil (numericexpr no prefilter de exp) percentil (prefiltro numericexpr distinto). Para expr para auto de relatório Exemplo: percentil (Quantidade) -------- (op: 100, 95, 90) Quantile: Retorna a classificação de um valor para um intervalo especificado. Ele retorna inteiros para representar qualquer intervalo de classificações, como 1 (maior) a 100 (menor). Sintaxe: quantile (numericexpr, numericexpr no prefilter de exp) quantile (numericexpr distinto, prefiltro numericexpr). Quartile: Retorna o valor de um valor, representado como números inteiros de 1 (mais alto) a 4 (mais baixo) ), Em relação a um grupo de valores. Sintaxe: quartil (numericexpr no prefilter do exp) quartil (prefilter numericexpr distinto). For expr for report auto Exemplo: quartile (Quantidade) ---------- (op: 1, 2, 3, 4) Retorna o valor de classificação dos itens de dados selecionados. Se duas ou mais linhas empate, então há uma lacuna na seqüência de valores classificados (também conhecido como ranking olímpico). Sintaxe: rank (expr sortorder no prefilter exp) rank (distinto expr sortorder prefilter). Para expr para auto de relatório Exemplo: rank Quantidade) ----------------- (op: 1, 2, 3, 4, 8230 ..) Retorna a média corrente por linha (incluindo A linha atual) para um conjunto de valores Sintaxe: running-average (numicexpr no prefilter exp) running-average (prefixter numericexpr distinto). for expr for report auto Example: running-average Quantity) ------------ (op: Quantity Moving average 198,676 198,676 345,096 271,886 95,552 213,108 96,246 183,892 Running-Count: Returns the running count by row (including the current row) for a set of values. Syntax: running-count ( numericexpr at exp prefilter ) running-count ( distinct numericexpr prefilter ) . for expr for report auto Example: running-count(Quantity) ------- (op: 1, 2, 3, 8230 ) Returns a running difference by row, calculated as the difference between the value for the current row and the preceding row, (including the current row) for a set of values. Syntax: running-difference ( numericexpr at exp prefilter ) running-difference ( distinct numericexpr prefilter ) . for expr for report auto Example: running-difference (Quantity) --(op: null, 146420, -249,544, 8230..) Returns the running maximum by row (including the current row) for a set of values. Syntax: running-maximum ( numericex pr at exp prefilter ) running-maximum ( distinct numericexpr prefilter ) . for expr for report auto Example: running-maximum (Quantity) --------- (op: 198676, 345096) Returns the running minimum by row (including the current row) for a set of values. Syntax: running-minimum ( numericexpr at exp prefilter ) running-minimum ( distinct numericexpr prefilter ) . for expr for report auto Example: running-minimum (Quantity) --------- (op: 198676, 198676, 95552, ) Returns a running total by row (including the current row) for a set of values. Syntax: running-total ( numericexpr at exp prefilter ) running-total ( distinct numericexpr prefilter ) . for expr for report auto Example: running-total (Quantity) ----------- (op: 198676, 5437728230.) Returns the standard deviation of selected data items. The keyword distinct is available for backward compatibility of expressions used in previous versions of the product. Syntax: standard-deviation ( distinct expr auto ) standard-deviation ( distinct expr for all any expr ) standard-deviation ( distinct expr for report ) Example: standard-deviation (Quantity) ------ (op: 50.628, 69.098 8230) standard-deviation (Quantity for all Product type) -------- (op: 50.628, 69.098, 8230) standard-deviation (Quantity for any Product type) ------ (op: 50.628, 69.098 8230) standard-deviation (Quantity for report) -------------------- (op: 59.70671027) Report: Standard deviation Standard-Deviation pop: Computes the population standard deviation and returns the square root of the population variance. The keyword distinct is available for backward compatibility of expressions used in previous versions of the product. Syntax: standard-deviation-pop ( distinct expr auto ) standard-deviation-pop ( distinct expr for all any expr ) standard-deviation-pop ( distinct expr for report ) Example: standard-deviation-pop (Quantity) ------- (op: 50.62240898, 69.09035128) standard-deviation-pop (Quantity for all Product type) - (op: 50.62240898, 69.09035128) standard-deviation-pop (Quantity for any Product type) (op: 50.62240898, 69.09035128) standard-deviation-pop (Quantity for report) --- (op: 59.70601702, ) Total : Returns the total value of selected data items. The keyword distinct is available for backward compatibility of expressions used in previous versions of the product. Syntax: total ( distinct expr auto ) total ( distinct expr for all any expr ) total ( distinct expr for report ) Example: total (Quantity) --------------- (op: 198,676, 345,096) Total (Quantity for all Product type) ------- (op: 198,676, 345,096) Total (Quantity for any Product type) ----- (op: 198,676, 345,096) Total (Quantity for report) --------------- (op: 2215354) Report: Total Variance : Returns the variance of selected data items. The keyword distinct is available for backward compatibility of expressions used in previous versions of the product. Syntax: variance ( distinct expr auto ) variance ( distinct expr for all any expr ) variance ( distinct expr for report ) Example: variance (Quantity) ----- (op: 2563.244, 4774.5438230) variance(Quantity for all Product type) -------- (op: 2563.244, 4774.5438230) variance(Quantity for any Product type) ------- (op: 2563.244, 4774.5438230) variance(Quantity for report) ---------------------- (op: 3,564.89125097) Returns the population variance of a set of numbers after discarding the nulls in this set. Syntax: variance-pop ( distinct expr auto ) variance-pop ( distinct expr for all any expr ) variance-pop ( distinct expr for report ) Example: variance-pop(Quantity) ------- (op: 2,562.6282905, 4,773.47663957) variance-pop(Quantity for all Product type) ----------- (op: 2,562.6282905, 4,773.47663957) variance-pop(Quantity for any Product type) -------- (op: 2,562.6282905, 4,773.47663957) variance-pop(Quantity for report) ------ (op: 3,564.80846781) Posted by Ramana Reddy CH at 22:44I have a calculated field ab which makes sense at week level, where a is last of period metric and b is sum of the period metric. I need to find avg(ab) for the weeks that fall under a month and not endofmonth(a)sum(b) for the month. I made my ab metric with regular aggregate as calculated and then monthly average metric with regular aggregate as average, but it doesnt work. The report is a crosstab report. How can I solve this Edit: a is end on hand inventory, b is sales, ab is weeks of supply. Both a and b spread along productlocationtime dimensions. Para um. Ive set its regular aggregate for time as last. Your form of expression gives me error, so, I tried average((total(a for week))(total(b for week))) which is error-free but doesnt give correct result. I used totala because it still has to sum along other dimensions except time. Any ideas I was also trying an alternative way - get the individual weeks of supply and then derive a new metric as (first week wos . fifth week wos)5. But I get a warning when I try to put a case statement as Relational query objects are being used in conjunction with Dimensionally-modeled relational objects, and the metric give garbage value. How can I apply case involving relational item in query items of measure dimension asked May 1 13 at 19:01
No comments:
Post a Comment