Expressões
É possível criar expressões (fórmulas) diretamente nos componentes dos painéis. Podendo assim exibir valores calculados que não estão presentes no arquivo/planilha de origem dos dados.
Para criar as expressões (fórmulas) nos componentes, é necessário que o componente suporte à adição da coluna especial Expressão (Fórmula).
No TaticView, é possível utilizar nas expressões todas as colunas existentes no arquivo de dados, desde que estes sejam adicionados ao componente que receberá a expressão.
Além disso, também é possível utilizar números e textos fixos nos casos de expressões comparativas e ou cálculos matemáticos.
Exemplo de expressão:
- Se o componente possui as colunas Preço Total e Quantidade, pode-se criar uma expressão para calcular o Preço Unitário. Ficaria assim:
- "Preço Total" / "Quantidade"
- Além disso, pode-se utilizar valores fixos, como por exemplo:
- "Preço Total" / 10
Lembramos apenas que atualmente o TaticView suporta apenas expressões cujo retorno é numérico.
As expressões suportam a barra inversa como caractere de escape para que nomes possam conter os caracteres delimitadores.
Abaixo detalhes sobre o funcionamento das expressões.
Contents
Estrutura básica de uma expressão
Identificador
É o nome do campo ou coluna envolvido na expressão, deve ser delimitado por aspas duplas.
- Exemplos: "Preço médio", "Parafuso 1\" philips", "Vendedor"
Operando de Valor
São os valores numéricos. É possível utilizar tanto valores inteiros quanto valores decimais. Para valores decimais, o separador decimal deverá ser o ponto.
- Exemplos: 1, 1.05, 2.55
- Importante: Não é permitido usar separador de milhar nos valores, assim como "," como separador decimal.
Operando de Texto
São os operandos de texto. Para utilizar esse tipo de operando em uma expressão é necessário delimita-los pelo caractere aspa simples (').
- Exemplos: 'André Moraes', 'São Paulo', 'Espaguete'
Operando de Data
São valores que expressam qualquer data. Para representar uma data nas expressões o comportamento é semelhante aos operandos de texto, ou seja, o conteúdo deve ser circundado por aspa simples ('). Porém deve-se utilizar a máscara dd/MM/aaaa.
- Exemplos: '01/01/2019', '14/11/2019', '25/12/2019'
Operando Booleano
São operadores do tipo verdadeiro ou falso. Normalmente utilizados para validar, ou não, uma condição em uma expressão mais complexa.
- Exemplos: true, false
Parênteses
Utilizados para agrupar e separar partes de uma expressão. Expressões dentro de parênteses são processados antes das demais.
- Exemplos: ("Lucro"/"Preço Total") + 10
Operando de variável do sistema
São variáveis pré-definidas no sistema. Para utilizar as variáveis do sistema deve-se precede-las por hashtag (#) e delimita-las por aspas duplas ("). Atualmente apenas a variável "#null" está disponível e indica conteúdos nulos.
- Exemplo: IF("Produto" == "#null";0;20)
Expressões Aritméticas
As expressões aritméticas relacionam dois operandos (que pode ser qualquer um dos operandos descritos acima, ou ainda outra expressão) para compor a soma, subtração, multiplicação ou divisão.
Soma (+)
Soma dois operandos de valor. Representado pelo caractere +.
Sintaxe:
<operando ou expressão> + <operando ou expressão>
Exemplo:
"Impostos" + "Comissões" – Soma os valores dos campos Impostos e Comissões
Subtração (-)
Subtrai dois operandos de valor ou o resultado de outra expressão. Representado pelo caractere -.
Sintaxe:
<operando ou expressão> - <operando ou expressão>
Exemplo:
"Preço" - "Impostos" – Subtrai os valores dos campos Preço e Impostos
Multiplicação (*)
Multiplica dois operandos de valor ou resultados de outra expressão. Representado pelo caractere de multiplicação *.
Sintaxe:
<operando ou expressão> * <operando ou expressão>
Exemplo:
"Quantidade" * "Preço Unitário" – Multiplica o valor do campo Quantidade pelo valor do campo Preço Unitário
Divisão (/)
Divide dois operandos de valor ou resultado de outras expressões. Representada pelo caractere de divisão /.
Sintaxe:
<operando ou expressão> / <operando ou expressão>
Exemplo:
"Preço" / "Quantidade" – Divide o valor do campo Preço pelo valor do campo Quantidade
Expressões Relacionais
As expressões relacionais comparam dois operandos (valor/texto ou outra expressão) para avaliar se uma condição é verdadeira (true) ou falsa (false). Normalmente utilizada com funções de decisão, como o IF (Se).
Igualdade (==)
Compara se dois operandos são iguais, retornando true se forem iguais ou false se diferentes. Representado pelo operador de igualdade ==.
Sintaxe:
<operando ou expressão> == <operando ou expressão>
Exemplo:
IF("Produto" == "#null";0;20) – Se o produto for nulo, considera o valor 0. Caso contrário considera o valor 20
Diferente (!=)
Compara se dois operandos são diferentes, retornando true se foram diferentes ou false se iguais. Representado pelo operador de diferença !=.
Sintaxe:
<operando ou expressão> != <operando ou expressão>
Exemplo:
IF("Produto" != 'LASANHA';0;20) – Se o produto for diferente de Lasanha, considera o valor 0. Caso contrário considera o valor 20
Maior que (>)
Compara se o primeiro operador (da esquerda) é maior que o segundo operador (da direita), retornando true se for maior e false se for menor ou igual. Representado pelo operador maior >.
Sintaxe:
<operando ou expressão> > <operando ou expressão>
Exemplo:
IF("Valor Bruto" > 1000;1;0) – Se o Valor Bruto for maior que 1000, retorna o valor 1, se não o valor 0
Maior ou igual a (>=)
Compara se o primeiro operador (da esquerda) é maior ou igual ao segundo operador (da direita), retornando true se for maior ou igual e false se for menor. Representado pelo operador maior >=.
Sintaxe:
<operando ou expressão> >= <operando ou expressão>
Exemplo:
IF("Valor Bruto" >= 2500;100;0) – Se o Valor Bruto for maior ou igual a 2500 retorna 100, caso contrário retorna 0
Menor que (<)
Compara se o primeiro operador (da esquerda) é menor que o segundo operador (da direita), retornando true se for menor e false se for maior ou igual. Representado pelo operador maior <.
Sintaxe:
<operando ou expressão> < <operando ou expressão>
Exemplo:
IF("Valor Bruto" < 100;50;200) – Se o Valor Bruto for menor que 100, retorna 50, se não retorna 200
Menor ou igual a (<=)
Compara se o primeiro operador (da esquerda) é menor ou igual ao segundo operador (da direita), retornando true se for menor ou igual e false se for maior. Representado pelo operador maior <=.
Sintaxe:
<operando ou expressão> <= <operando ou expressão>
Exemplo:
IF("Valor Bruto" <= 500;100;0) – Se o Valor Bruto for menor ou igual a 500 retorna 100, se não retorna 0
Expressões Lógicas
As expressões lógicas agrupam dois operandos (booleano ou outra expressão) para compor uma expressão lógica, com o objetivo de avaliar a relação de dois operadores booleanos em um resultado verdadeiro (true) ou falso (false). Normalmente esse tipo de expressão é utilizada para tomadas de decisão, como o IF (Se) e com expressões relacionais.
Operador E (&&)
Executa a operação lógica E entre dois valores booleanos. Ambos os valores devem retornar verdadeiro (true) para que o resultado da operação seja verdadeiro (true). Representado pelo operador &&.
Sintaxe:
<expressão> && <expressão>
Exemplos:
IF(("Preço" > 0) && ("Vendedor" == 'André Moraes');450;0) – Se o Preço for maior que 0 E o Vendedor for igual a André Moraes, retorna 450, se não retorna 0 IF(("Cidade" != "#null") && ("Produto" != 'Lasanha');1;0) – Se a Cidade for diferente de nula E o Produto for diferente de Lasanha retorna 1, se não retorna 0
Operador Ou (||)
Executa a operação lógica OU entre dois valores booleanos. Um dois dois valores deve ser verdadeiro (true) para que o resultado da operação seja verdadeiro (true). Representado pelo operador ||.
Sintaxe:
<expressão> || <expressão>
Exemplos:
IF(("Preço" > 1000) || ("Lucro" >= 50);75;55) – Se o Preço for maior que 1000 OU o Lucro for maior ou igual a 50 retorna 75, se não retorna 55 IF(("Cidade" != "#null") || ("Produto" != 'Lasanha');1;0) - Se Cidade não for null OU Produto deferente de Lasanha returna 1 senão retorna 0
Operador de Negação (!)
Executa a operação lógica de negação para um valor booleano. Se o resultado da operação for verdadeiro (true) o operador de negação converte para falso (false) e vice-versa. Representado pelo operador !.
Sintaxe:
!<expressão>
Exemplo:
IF(!BETWEEN("Data Entrega"; '01/01/2015'; '31/12/2015');2016; 2015) – Se a Data Entrega não tiver entre 01/01/2015 e 31/12/2015 retorna 2016. Se estiver entre esse período retorna 2015
Funções Auxiliares
As funções auxiliares básicas são funções padrão do sistema e implementam funcionalidades úteis para compor expressões complexas.
Função ABS
Função que retorna o valor numérico absoluto de um valor numérico base.
Sintaxe:
ABS(<expressão>)
Exemplo:
ABS("Preço" / "Quantidade") – Retorna o valor absoluto do Preço divido pela Quantidade
Função AVG
Retorna a média dos valores de uma sequência de valores. Pode ser utilizado para retornar a média de diferentes valores de uma mesma linha das tabelas.
Sintaxe:
AVG(<expressão 1>; <expressão 2>; ...)
Exemplo:
AVG("Impostos"; "Lucro"; "Custo") – Retorna a média entre a soma das colunas Impostos, Lucro e Custo
Função BETWEEN (Entre)
Verifica se um valor está estre os limites dos parâmetros utilizados.
Sintaxe:
BETWEEN(<expressão a ser testada>; <limite inicial>; <limite final>)
Exemplo:
BETWEEN("Data Emissão"; '01/01/2019'; '31/12/2019') – Retorna true se a Data Emissão estiver entre 01/01/2019 e 31/12/2019. Caso contrário retorna false
COUNT function
Returns number of occurrences (lines) for column or value.
By now this functions works only at Datasource expressions
Syntax:
COUNT(<expression>)
Example:
COUNT("Product") - Returns number of occurrences (lines) of products
COUNT_DISTINCT function
Returns number of unique occurrences (lines) for column or value.
By now this functions works only at Datasource expressions
Syntax:
COUNT_DISTINCT(<expression>)
Example:
COUNT_DISTINCT("Product") - Returns number of unique (different) occurrences (lines) of products
Função IF ELSE (Se.... Senão...)
Testa uma expressão booleana e aplica uma condição em caso verdadeiro (true) ou outra condição nos casos de retornar falso (false). Precisa de três parâmetros, separados por ponto e virgula (;). O primeiro parâmetro é a expressão a ser testada, o segundo o valor a ser aplicado no caso de verdadeiro e o terceiro para ser aplicado no caso de falso.
Sintaxe:
IF(<expressão a ser testada>; <expressão no caso de verdadeiro>; <expressão no caso de falso>)
Exemplos:
IF(BETWEEN("Valor"; 0; 100); 10; 250) – Se o Valor estiver entre 0 e 100 retorna 10, se não retorna 250 IF("Lucro" == 0;0;"Lucro" + "Impostos") - Se Lucro igual a 0 retorna 0, senão retorna a soma de Lucro e Impostos IF("Código Produto" == 3231;0;"Quantidade" * 3;"Quantidade") - Se Código Produto igual a 3231 retorna Quantidade vezes 3
Função LOG
Retorna o logaritmo de um número em uma base definida. Pode ser utilizada com apenas um parâmetro, neste caso é utilizado o logaritmo na base 10. Caso seja utilizado dois parâmetros, o segundo serve para informar a base a ser utilizada pelo logaritmo.
Sintaxe:
LOG(<expressão>; <base>)
Exemplos:
LOG("Lucro") – Retorna o logaritmo do campo Lucro LOG("Preço";2) - Retorna o logaritmo do campo Preço na base 2
Função MAX
Retorna o maior valor entre dois valores.
Sintaxe:
MAX(<expressão 1>; <expressão 2>)
Exemplo:
"Valor" / MAX("Quantidade"; 1) – Divide o Valor pelo maior valor entre a Quantidade e 1
Função MIN
Retorna o menor valor entre dois valores.
Sintaxe:
MIN(<expressão 1>; <expressão 2>)
Exemplo:
"Valor" / MIN("Custo"; 100) – Divide o Valor pelo menor valor entre Custo e 100
Função POTENCIA
Retorna a potência de um valor em um expoente definido. Pode ser utilizada com apenas um parâmetro, neste caso considera o expoente padrão 2. Se um segundo parâmetro for passado, esse será o expoente.
Sintaxe:
POW(<expressão>; <expoente>)
Exemplos:
POW("Lucro") – Retorna a potência do valor Lucro POW("Custo"; 3) - Retorna a potência do calor Custo elevado na terceira
Função RANDOM
Retorna um número aleatório dentro dos limites dos valores passados como argumentos.
Sintaxe:
RANDOM(<limite inicial>; <limite final>)
Exemplo:
RANDOM(10; 100) – Retorna um número aleatório entre 10 e 100
Função ROUND
Retorna o arredondamento de uma coluna de valor ou valor.
Sintaxe:
ROUND(<valor>;<precisão>)
Exemplo:
ROUND("Lucro") - Se lucro for 10.38 retorna 10.00 ROUND(15.65) - Retorna 16.00 ROUND(1.777;1) - Retorna 1.8
Função SQRT (Raiz Quadrada)
Retorna a raiz quadrada de um valor.
Sintaxe:
SQRT(<valor ou expressão>)
Exemplos:
SQRT("Lucro") – Retorna a raiz quadrada do valor Lucro SQRT(81) - Retorna a raiz quadrada de 81
Função LIKE (Contém)
Retorna verdadeiro (true) se o conteúdo desejado for encontrado na lista e falso (false) caso contrário. Precisa de dois parâmetros, o primeiro são os dados que serão consultados e o segundo é o termo a ser encontrado. Lembrando que é necessário utilizar o operador de curinga % e circundar o termo por aspa simples.
Sintaxe:
LIKE(<dados>; <termo>)
Exemplo:
LIKE("Produto"; '%anh%') – Retorna true se o Produto contém o termo anh ou false caso contrário LIKE("Produto"; '%anh%') - Retorna verdadeiro se o Produto conter a string anh, caso contrário falso
Funções de Data
As funções de data são operações que usam como parâmetro uma data e retornam também uma data. Existem algumas constantes para auxiliar na utilização das funções de data, são elas:
- 0: DATE_FIELD_YEAR (Parte do ano)
- 1: DATE_FIELD_MONTH (Parte do mês)
- 2: DATE_FIELD_DAY (Parte do dia)
- 3: DATE_FIELD_FORTNIGHT (Parte da quinzena)
- 5: DATE_FIELD_WEEK (Parte da semana)
Função DATE_PART (Parte da data)
Retorna parte de uma data. Precisa de dois parâmetros, o primeiro é a data de referência e o segundo é a constante que representa qual parte da data queremos obter.
Sintaxe:
DATE_PART(< data>; <constante que representa qual parte>)
Exemplo:
DATE_PART("Data Emissão"; 0) - retorna a parte do ano da Data Emissão
Função DAY_FROM_TODAY (Dias a partir de hoje)
Retorna uma contagem de dias para trás (negativa) ou para frente (positiva) contando a partir de hoje. Precisa de um parâmetro que indica o número de dias para adicionar ou subtrair.
Sintaxe:
DAY_FROM_TODAY(<número de dias>)
Exemplo:
DAY_FROM_TODAY(-1) - retorna a data de ontem
Função FIRST_DAY_OF (Primeiro dia de)
Retorna o primeiro dia de um agrupamento. Esta função possui duas variações:
- Com dois parâmetros, o primeiro é a constante do agrupamento da qual queremos obter a primeira data (vide lista acima), e o segundo é a data base.
Sintaxe:
FIRST_DAY_OF(<parte da data>; < data base>)
Exemplos:
FIRST_DAY_OF(0; DAY_FROM_TODAY(0)) – retorna o primeiro dia do ano a partir de hoje FIRST_DAY_OF(1;"Data Problema") - retorna o primeiro dia baseado na coluna Data Problema
- Com três parâmetros, o primeiro é a constante do agrupamento da qual queremos obter a primeira data (vide lista acima), o segundo é o modificador da base da data a partir de hoje e o terceiro é a quantidade para alterar o modificador.
Sintaxe:
FIRST_DAY_OF(<parte da data>; <modificador da data>; <valor modificador da data>)
Exemplo:
FIRST_DAY_OF(1; 0; -1) – primeiro dia do mês atual do último ano
Função LAST_DAY_OF (Último dia de)
Retorna o último dia de um agrupamento de data. Esta função possui duas variações.
- Com dois parâmetros, o primeiro é a constante do agrupamento da qual queremos obter a última data (vide lista acima), e o segundo é a data base.
Sintaxe:
LAST_DAY_OF(<parte da data>; < data base>)
Exemplos:
LAST_DAY_OF(0; DAY_FROM_TODAY(0)) – retorna o último dia do ano a partir de hoje LAST_DAY_OF(1;"Date Problema") - retorna o último dia do mês baseado na coluna Data Problema
- Com três parâmetros, o primeiro é a constante do agrupamento da qual queremos obter a última data (vide lista acima), o segundo é o modificador da base da data a partir de hoje e o terceiro é a quantidade para alterar o modificador.
Sintaxe:
LAST_DAY_OF(<parte da data>; <modificador da data>; <valor modificador da data>)
Exemplo:
LAST_DAY_OF(1; 0; -1) – último dia do mês atual do último ano
Função NEW_DATE (Nova data)
Cria uma nova data. Precisa de três parâmetros, o primeiro corresponde ao dia (entre 1 e 31), o segundo mês (entre 1 e 12) e o terceiro o ano. A data é criada do ano para o dia, ou seja, o dia deve ser válido para o mês e ano (considerando 29/02, o ano deve ser bissexto).
Sintaxe:
NEW_DATE(<dia>; <mês>; <ano>)
Exemplo:
NEW_DATE(1; 4; DATE_PART("Data Emissão"; 0)) – cria o primeiro dia de abril do ano determinado pela linha atual da coluna Data Emissão
Função NUM_OF_DAYS (Número de dias)
Retorna o número de dias entre duas datas. Portanto necessita de duas datas.
Sintaxe:
NUM_OF_DAYS(< data 1>; < data 2>)
Exemplos:
NUM_OF_DAYS(FIRST_DAY_OF(0; "Data Emissão"); "Data Emissão") – retorna o número de dias entre o primeiro dia do ano, baseado na coluna Data Emissão, até o dia atual, baseado na mesma coluna NUM_OF_DAYS(FIRST_DAY_OF(1;"Data Pedido");LAST_DAY_OF(1;"Data Pedido")) - retorna o número de dias do mês baseado na coluna Data Pedido.
Função NUM_OF_MONTHS (Número de Meses)
Retorna o número de meses entre duas datas. Logo, dois parâmetros data são exigidos.
Sintaxe:
NUM_OF_MONTHS(< data 1>; < data 2>)
Exemplo:
NUM_OF_MONTHS(FIRST_DAY_OF(0; "Data"); "Data") – Retorna o número de meses entre o primeiro dia do ano e o mês atual, com base na coluna Data
Função PREVIOUS_DATE (Data anterior)
Dado um dia e um mês, retorna a última ocorrência dessa data. Ou seja, se a data atual (hoje) for menor do que a data passada por parâmetro (dia/mês), o retorno será a data (passada por parâmetro) do ano anterior. Se não o retorno será a data do ano atual.
Sintaxe:
PREVIOUS_DATE(<dia>; <mês>)
Exemplos:
PREVIOUS_DATE(15;12) – Considerando que a data de hoje seja 14/11/2019, a última vez que 15/Dezembro ocorreu em relação a data de hoje foi 15/12/2018, logo esse será o retorno.
Variáveis Especiais
Podem ser usadas em conjunto com as expressões para criar cálculos complexos. Devem ser utilizadas entre aspas duplas (")
- "@count" – Número total de linhas que foram retornadas para o componente
- "@row" – Número da linha atual
- "@sum[coluna]" – Somatório da coluna indicada.
- Exemplo: "@sum[Preço]" – retorna a soma de todas as linhas da coluna Preço
- "@avg[coluna]" – Média da coluna, semelhante a "@sum[coluna]" / "@count"
- "@prev[coluna]" – Valor da linha anterior à linha atual, para essa coluna
- "@totalRowValue[coluna]" - Valor da Linha de Total, (se presente), para essa coluna.
- "@accumCol[coluna]" – Valor acumulado da coluna até a linha corrente. Útil para calcular média variável.
- Exemplo: "@accumCol[coluna]" / "@row"