Membros calculados são membros "fictícios" criados a partir das dimensões da aplicação em um único formulário e utilizados neste mesmo formulário, não sendo necessário alterar a estrutura do modelo da aplicação. Estes membros são utilizados para realizar cálculos dentro do formulário, sem a necessidade de criação de membros adicionais nas dimensões da aplicação.
Dentre as funcionalidades dos membros calculados temos cálculos realizados diretamente a partir dos membros calculados criados, agregação de valores, alteração na forma de exibição dos dados e criação de linhas e colunas no formulário.
Os membros calculados podem ser criados utilizando as seguintes funções:
Funções |
---|
Blank |
Comment |
Header |
Parent |
PrevMember |
Property |
TimeRelative |
TimeSpan |
YTD |
A seguir temos a descrição, sintaxe e os parâmetros de cada uma delas:
Descrição:
Cria uma linha ou coluna com células em branco. Este membro adiciona uma linha em branco, criando um espaço para separar melhor um grupo de linhas ou colunas. As células desta linha ou coluna ficarão em branco.
Sintaxe:
Blank()
Parâmetros:
Nome | Descrição | Tipos de parâmetros | Obrigatório | Repetições |
---|---|---|---|---|
Blank | Linha ou coluna em branco | {} | Sim | Não |
Exemplo: No campo de expressão o texto deverá ficar assim:
Blank{}
.
Descrição:
Cria um membro onde é possível inserir comentários para serem replicados. Este membro criará uma linha ou coluna para adicionarmos comentários que serão salvos nos comentários de células no escopo correto.
A dimensão usada para selecionar esse membro deve ser filtrada com N membros usando o popup de seleção de membros e inclusive com parâmetros. Esta seleção será usada para saber em quais membros devemos salvar o comentário nesta dimensão. O membro comentário só pode ser usado em uma única dimensão por formulário e uma única vez.
Sintaxe:
Comment([context])
Parâmetros:
Nome | Descrição | Tipos de parâmetros | Obrigatório | Repetições |
---|---|---|---|---|
Context | Contexto do comentário | Dimensão , Membro | Sim | Não |
Para que possamos inserir caracteres de texto nos comentários, é necessário alterar o tipo do membro calculado para Texto.
Exemplo: Podemos colocar em coluna, depois das 12 colunas com o mês e salvar o comentário nas 12 colunas replicando ou apenas no ano, então o filtro na dimensão sobre o membro comentário é usado para sabermos de onde buscar e onde salvar o comentário.
Descrição:
Cria um cabeçalho com células em branco.
Sintaxe:
Header([Title])
Parâmetros:
Nome | Descrição | Tipos de parâmetros | Obrigatório | Repetições |
---|---|---|---|---|
Title | Título do cabeçalho | "Texto" | Sim | Não |
Para inserção do parâmetro do tipo Title, é necessário que o texto solicitado esteja entre aspas (""). Este membro serve apenas de cabeçalho, as suas células ficarão sempre em branco.
Exemplo: No campo de expressão teremos um texto semelhante à este:
Header("Exemplo Header")
.
Descrição:
Busca o valor de um membro numa determinada dimensão. A quantidade identifica quantos membros deve-se subir na árvore hierárquica da dimensão selecionada.
Sintaxe:
Parent([Input], [Dimension], [Quantity])
Parâmetros:
Nome | Descrição | Tipos de parâmetros | Obrigatório | Repetições |
---|---|---|---|---|
Input | Valor | Dimensão, Membro | Sim | Não |
Dimensão | Dimensão para subir na hierarquia. | Dimensão | Sim | Não |
Quantity | Quantidade de níveis a subir | Número | Sim | Não |
Exemplo: No campo de expressão temos:
Parent([Conta].[Financeiro], [Tempo], 1)
.
Nesta expressão, os valores do membro Financeiro da dimensão Conta serão replicados no próximo nível hierárquico da dimensão Tempo.
Se o valor adicionado no parâmetro "Quantity" fosse 2, os valores seriam replicados 2 níveis hierárquicos acima. Ao subirmos um nível, estaremos replicando os valores no trimestre; ao subirmos 2 níveis, estaremos replicando o valor no semestre e assim sucessivamente.
Descrição:
Busca o valor do membro anterior.
Sintaxe:
PrevMember([Base])
Parâmetros:
Nome | Descrição | Tipos de parâmetros | Obrigatório | Repetições |
---|---|---|---|---|
Base | Membro Base | Dimensão, Membro | Sim | Não |
Exemplo: No campo de expressão teremos um texto semelhante a este:
PrevMember([Conta].[Total dos Itens Vendidos])
.
Este exemplo exibirá o valor anterior do membro no período seguinte.
Se temos o valor de "2.500" no mês de Janeiro/24 e "3.000" no mês de Fevereiro/24, no membro PrevMember teremos "2.500" no mês de Fevereiro/24 e "3.000" no mês de Março/24 e assim consecutivamente.
Descrição:
Busca a propriedade de um membro.
Sintaxe:
[Function Result] = Property([Property], [Context])
Parâmetros:
Nome | Descrição | Tipos de parâmetros | Obrigatório | Repetições |
---|---|---|---|---|
Function Result | Property | Dimensão | Sim | Não |
Property | Valor que se deseja buscar do atributo | Dimensão | Sim | Não |
Context | Contexto (membro) que se deseja buscar o valor | Dimensão, Membro | Sim | Não |
Para utilizarmos a função Property de forma correta, precisaremos que a propriedade que desejamos exibir do membro na dimensão selecionada esteja preenchida e que o tipo do membro calculado seja alterado para texto. Em nosso exemplo utilizaremos a propriedade "Descrição" da dimensão "Conta".
Exemplo: Se quisermos exibir a descrição dos membros da dimensão conta, teremos a seguinte expressão: Property([Conta].[Descrição], [Conta].[GetDataTableData])
.
No parâmetro "Function Result" deste membro calculado, podemos selecionar qualquer dimensão, a seleção do mesmo não afetará o resultado final.
Descrição:
Função utilizada na dimensão tempo para buscar o valor de um tempo relativo ao parâmetro.
Sintaxe:
TimeRelative([Base], [Shift], [Relative])
Parâmetros:
Nome | Descrição | Tipos de parâmetros | Obrigatório | Repetições |
---|---|---|---|---|
Base | Valor base a ser acumulado | Membro (dimensão tempo) | Sim | Não |
Shift | Quantidade de períodos acrescidos | Número | Não | Não |
Relative | Tempo relativo a base | Membro (dimensão tempo) | Não | Não |
Exemplo: Se quisermos exibir o valor de Janeiro de 2024 e comparar o mesmo com o valor de Janeiro de 2025, teremos a seguinte expressão:
TimeRelative([Tempo].[Todos].[2024].[1S/24].[1T/24].[Janeiro/24], 0, [Tempo].[Todos].[2025])
.
Vamos criar um formulário com a dimensão tempo em colunas e inserir o membro "Janeiro/24", juntamente com o membro calculado com a expressão acima. Este membro calculado mostrará sempre o valor de "Janeiro/25".
O parâmetro shift sempre será aplicado horizontalmente no membro resultante. Se temos Janeiro/25 com shift 1, o membro resultante será na verdade Fevereiro/25. Se o shift for -1, teremos o membro resultante como Dezembro/24.
Podemos tornar a função TimeRelative mais flexível. Para isso, precisaremos criar alguns parâmetros em nosso formulário.
Vamos criar 3 parâmetros na dimensão tempo do nosso formulário:
TimeRelative({Meses 2024}, 0, {Ano 2025})
;Meses 2024
e o membro calculado criado;Ano 2024
, Ano 2025
e Meses 2024
;Descrição:
Calcula o valor agregado durante um determinado período de tempo.
Sintaxe:
TimeSpan([Initial], [Final])
Parâmetros:
Nome | Descrição | Tipos de parâmetros | Obrigatório | Repetições |
---|---|---|---|---|
Initial | Início do período | Membro (dimensão tempo) | Sim | Não |
Final | Fim do período | Membro (dimensão tempo) | Sim | Não |
Exemplo: Se o membro inicial for Janeiro/2024 e o final Junho/2024, teremos a seguinte expressão:
TimeSpan([Tempo].[Todos].[2024].[1S/24].[1T/24].[Janeiro/24], [Tempo].[Todos].[2024].[1S/24].[2T/24].[Junho/24])
.
O sistema exibirá o valor da soma de Janeiro a Junho de 2024.
Descrição:
A função YTD (Year-To-Date) acumula o valor base nos períodos, iniciando no começo de cada ano ou ano fiscal.
Sintaxe:
YTD([Base])
Parâmetros:
Nome | Descrição | Tipos de parâmetros | Obrigatório | Repetições |
---|---|---|---|---|
Base | Valor a ser acumulado | Membro da dimensão tempo | Sim | Não |
Exemplo: Se o parâmetro ou membro base vir com Março/24, significa que temos que calcular o YTD até Março/24. Neste caso, teremos a seguinte expressão:
YTD([Tempo].[Todos].[2024].[1S/24].[1T/24].[Março/24])
.
Para criarmos membros calculados, precisaremos seguir os seguintes passos:
Exemplo:
[Conta].[Membro1] + [Conta].[Membro2]
[Conta]
: É a dimensão onde o membro utilizado na expressão se encontra;
[Membro1]
: Operando que será utilizado no cálculo da expressão e membro da dimensão Conta;
+
: Operador a ser utilizado no cálculo da expressão;
[Membro2]
: Operando que será utilizado no cálculo da expressão e membro da dimensão Conta.
Neste exemplo, o valor do membro calculado será igual ao valor de [Membro1]
mais o valor de [Membro2]
.
Dentre os operadores temos: Soma (+), Subtração (-), Multiplicação (*), Divisão (/) e Potência (^).
No campo expressão, poderemos utilizar o autocomplete digitando no mínimo 3 caracteres (após 1 segundo serão exibidas as sugestões) ou clicando em CTRL + ESPAÇO para exibir as sugestões para inserção.
Temos um botão que exibe as Funções disponíveis para seleção:
.
As funções são auxiliadores para a criação de membros calculados, permitindo cálculos mais elaborados, além de oferecerem acesso a diversas informações do modelo.
Caso em nosso formulário seja necessário utilizarmos membros calculados com as funções
TimeSpan
,TimeRelative
ouYTD
, teremos que, na aba de propriedades, desabilitar a checkbox "Mostrar filtro de ano na página". Esta checkbox estando habilitada pode interferir no correto funcionamento das funções.
Para excluirmos um membro calculado, seguir os seguintes passos: