Funções

Existem vários tipos de funções que pode utilizar em expressões.

Tópicos:

Funções Analíticas

As funções analíticas permitem-lhe explorar os dados utilizando modelos como a previsão, a linha de tendência e o cluster. Em alternativa, pode arrastar e largar funções analíticas no editor de livros.

Em alternativa, pode acrescentar previsões, linhas de tendência e clusters a um livro selecionando-os no separador Sistema de Análise do Painel Dados no editor de livros. Consulte Acrescentar Análises de Estatística às Visualizações.

Função Exemplo Descrição Sintaxe

CLUSTER

CLUSTER((product, company), (billed_quantity, revenue), 'clusterName', 'algorithm=k-means;numClusters=%1;maxIter=%2;useRandomSeed=FALSE;enablePartitioning=TRUE', 5, 10)

Agrupa um conjunto de registos em grupos com base numa ou mais expressões de entrada de dados através da utilização de K-Means ou Clustering Hierárquico.

CLUSTER((dimension_expr1 , ... dimension_exprN), (expr1, ... exprN), output_column_name, options, [runtime_binded_options])

FORECAST

Exemplo de Previsão de Receitas por Dia

Este exemplo seleciona a previsão de receitas por dia.

FORECAST("A - Vendas Exemplo"."Factos Base"."1- Receitas" Target,
("A - Vendas Exemplo"."Tempo"."T00 Data do Calendário"),'forecast', 'numPeriods=30;predictionInterval=70;') ForecastedRevenue

Exemplo de Previsão de Receitas por Ano e Trimestre

Este exemplo seleciona a previsão de receitas por ano e trimestre.

FORECAST("A - Vendas Exemplo"."Factos Base"."1- Receitas",
("A - Vendas Exemplo"."Tempo"."T01 Ano" timeYear, "A - Vendas Exemplo"."Tempo"."T02 Trimestre" TimeQuarter),'forecast', 'numPeriods=30;predictionInterval=70;') ForecastedRevenue

Cria um modelo de série de tempo da medida especificada através de séries que utilizam a Regularização Exponencial (ETS) ou ARIMA Sazonal ou ARIMA. Esta função apresenta como resultado uma previsão de um conjunto de períodos conforme especificado pelo argumento numPeriods.

Consulte também as Opções da Função FORECAST adicionais abaixo.

FORECAST(measure, ([series]), output_column_name, options,[runtime_binded_options])])

Em que:

  • measure representa a medida para a previsão, por exemplo, dados de receitas.

  • series representa a granularidade de tempo utilizada para criar o modelo de previsão. A série é uma lista de uma ou mais colunas da dimensão de tempo. Se series for omitido, a granularidade de tempo é determinada a partir da consulta.

  • output_column_name representa os nomes de colunas válidos de forecast, low, high e predictionInterval.

  • options representa uma lista de cadeias de caracteres de pares nome/valor separados por ponto e vírgula (;). O valor pode incluir %1 ... %N especificado em runtime_binded_options.

  • runtime_binded_options representa uma lista separada por vírgulas de colunas e opções. Os valores destas colunas e opções são avaliados e resolvidos durante o tempo de execução da consulta individual.

Consulte também as Opções da Função FORECAST adicionais abaixo.

OUTLIER

OUTLIER((product, company), (billed_quantity, revenue), 'isOutlier', 'algorithm=kmeans')

Classifica um registo como Outlier com base numa ou mais expressões de entrada de dados através da utilização de Algoritmos de deteção K-Means ou Clustering Hierárquico ou outros algoritmos de estatística multivariada.

OUTLIER((dimension_expr1 , ... dimension_exprN), (expr1, ... exprN), output_column_name, options, [runtime_binded_options])

REGR

REGR(revenue, (discount_amount), (product_type, brand), 'fitted', ')

Ajusta um modelo linear e devolve o modelo ou os valores ajustados. Esta função pode ser utilizada para ajustar uma curva linear em duas medidas.

REGR(y_axis_measure_expr, (x_axis_expr), (category_expr1, ..., category_exprN), output_column_name, options, [runtime_binded_options])

TRENDLINE

TRENDLINE(revenue, (calendar_year, calendar_quarter, calendar_month) BY (product), 'LINEAR', 'VALUE')

A Oracle recomenda que aplique uma Linha de Tendência através da propriedade Acrescentar Estatísticas ao ver uma visualização. Consulte Ajustar Propriedades da Visualização.

Ajusta um modelo linear, polinomial ou exponencial e devolve o modelo ou os valores ajustados. numeric_expr representa o valor Y para a tendência e series (colunas de tempo) representa o valor X.

TRENDLINE(numeric_expr, ([series]) BY ([partitionBy]), model_type, result_type)

Opções da Função FORECAST A tabela seguinte lista as opções disponíveis para utilizar com a função FORECAST.

Nome da Opção Valores Descrição
numPeriods Número Inteiro O número de períodos para previsão.
predictionInterval 0 a 100, em que os valores mais altos especificam maior confiança O nível de confiança para a previsão.
modelType

ETS (Regularização Exponencial)

SeasonalArima

ARIMA

O modelo a utilizar para a previsão.
useBoxCox

TRUE

FALSE

Se for TRUE, utilizar a transformação Box-Cox.
lambdaValue Não aplicável

O parâmetro de transformação Box-Cox.

Ignorar se for NULL ou quando useBoxCox for FALSE.

Caso contrário, os dados são transformados antes de o modelo ser estimado.

trendDamp

TRUE

FALSE

Isto é específico do modelo de Regularização Exponencial.

Se for TRUE, utilizar a tendência amortecida. Se for FALSE ou NULL, utilizar a tendência não amortecida.

errorType

Não aplicável

Isto é específico do modelo de Regularização Exponencial.
trendType

N (nenhum)

A (aditivo)

M (multiplicativo)

Z (selecionado automaticamente)

Isto é específico do modelo de Regularização Exponencial
seasonType

N (nenhum)

A (aditivo)

M (multiplicativo)

Z (selecionado automaticamente)

Isto é específico do modelo de Regularização Exponencial
modelParamIC

ic_auto

ic_aicc

ic_bic

ic_auto (este é o valor por omissão)

O critério de informação (IC) utilizado na seleção do modelo.

Funções de Conversão

As funções de conversão convertem um valor de uma forma para outra.

Função Exemplo Descrição Sintaxe

CAST

CAST(hiredate AS CHAR(40)) FROM employee

Altera o tipo de dados de uma expressão ou um literal nulo para outro tipo de dados. Por exemplo, pode converter um customer_name (um tipo de dados de CHAR ou VARCHAR) ou birthdate (um literal da data/hora).

Utilize CAST para mudar para um tipo de dados Date.

Não utilize TODATE.

CAST(expr AS type)

IFNULL

IFNULL(Sales, 0)

Testa se uma expressão resulta num valor nulo e, se isso se verificar, atribui o valor especificado à expressão.

IFNULL(expr, value)

INDEXCOL

SELECT INDEXCOL(VALUEOF (NQ_SESSION.GEOGRAPHY_LEVEL), Country, State, City), Revenue FROM Sales

Utiliza informação externa para devolver a coluna adequada para que o utilizador com sessão iniciada a possa visualizar.

INDEXCOL([integer literal], [expr1] [, [expr2], ?-])

NULLIF

SELECT e.last_name, NULLIF(e.job_id, j.job_id) "Old Job ID" FROM employees e, job_history j WHERE e.employee_id = j.employee_id ORDER BY last_name, "Old Job ID";

Compara duas expressões. Se forem iguais, a função devolve NULL. Se não forem iguais, a função devolve a primeira expressão. Não pode especificar o literal NULL para a primeira expressão.

NULLIF([expression], [expression])

To_DateTime

SELECT To_DateTime ('2009-03-0301:01:00', 'yyyy-mm-dd hh:mi:ss') FROM sales

Converte literais da cadeia de caracteres com o formato DateTime para um tipo de dados DateTime.

To_DateTime([expression], [literal])

VALUEOF

SalesSubjectArea.Customer.Region = VALUEOF("Region Security"."REGION")

Referencia o valor de uma variável do modelo semântico num filtro.

Utilize variáveis expr como argumentos da função VALUEOF. Referencie as variáveis do modelo semântico estáticas pelo nome.

VALUEOF(expr)

Funções de Extração de Datas

Estas funções calculam ou arredondam os valores de indicação de data/hora para o período de tempo especificado mais próximo, como hora, dia, semana, mês e trimestre.

Pode utilizar as indicações de data/hora calculadas para agregar dados utilizando uma granularidade diferente. Por exemplo, poderá aplicar a função EXTRACTDAY() às datas das encomendas de vendas para calcular uma indicação de data/hora para a meia-noite do dia em que as encomendas ocorrem, de modo a poder agregar os dados por dia.

Função Exemplo Descrição Sintaxe

Extrair Dia

EXTRACTDAY("Order Date")
  • 2/22/1967 3:02:01 AM devolve 2/22/1967 12:00:00 AM.
  • 9/2/2022 10:38:21 AM devolve 9/2/2022 12:00:00 AM.

Devolve uma indicação de data/hora para a meia-noite (12 AM) do dia em que o valor de entrada de dados ocorre. Por exemplo, se a indicação de data/hora da entrada de dados for para 3:02:01 AM no dia 22 de fevereiro, a função devolve a indicação de data/hora para 12:00:00 AM no dia 22 de fevereiro.

EXTRACTDAY(expr)

Extrair Hora

EXTRACTHOUR("Order Date")
  • 2/22/1967 3:02:01 AM devolve 2/22/1967 3:00:00 AM.
  • 6/17/1999 11:18:30 PM devolve 6/17/1999 11:00:00 PM.

Devolve uma indicação de data/hora para o início da hora em que o valor de entrada de dados ocorre. Por exemplo, se a indicação de data/hora da entrada de dados for para 11:18:30 PM, a função devolve a indicação de data/hora para 11:00:00 PM.

EXTRACTHOUR (expr)

Extrair Hora do Dia

EXTRACTHOUROFDAY("Order Date")
  • 2014/09/24 10:58:00 devolve 2000/01/01 10:00:00.
  • 2014/08/13 11:10:00 devolve 2000/01/01 11:00:00

Devolve uma indicação de data/hora em que a hora é igual à hora do valor de entrada de dados com valores por omissão para o ano, mês, dia, minutos e segundos.

EXTRACTHOUROFDAY(expr)

Extrair Milésimo de Segundo

EXTRACTMILLISECOND("Order Date")
  • 1997/01/07 15:32:02.150 devolve 1997/01/07 15:32:02.150.
  • 1997/01/07 18:42:01.265 devolve 1997/01/07 18:42:01.265.
Devolve uma indicação de data/hora com milésimos de segundo para o valor de entrada de dados. Por exemplo, se a indicação de data/hora da entrada de dados for para 15:32:02.150, a função devolve a indicação de data/hora para 15:32:02.150.

EXTRACTMILLISECOND(expr)

Extrair Minuto

EXTRACTMINUTE("Order Date")
  • 6/17/1999 11:18:00 PM devolve 6/17/1999 11:18:00 PM.
  • 9/2/2022 10:38:21 AM devolve 9/2/2022 10:38:00 AM.

Devolve uma indicação de data/hora para o início do minuto em que o valor de entrada de dados ocorre. Por exemplo, se a indicação de data/hora da entrada de dados for para 11:38:21 AM, a função devolve a indicação de data/hora para 11:38:00 AM.

EXTRACTMINUTE (expr)

Extrair Mês

EXTRACTMONTH("Order Date")
  • 2/22/1967 3:02:01 AM devolve 2/1/1967 12:00:00 AM.
  • 6/17/1999 11:18:00 PM devolve 6/1/1999 12:00:00 AM.

Devolve uma indicação de data/hora para o primeiro dia do mês em que o valor de entrada de dados ocorre. Por exemplo, se a indicação de data/hora da entrada de dados for para 22 de fevereiro, a função devolve a indicação de data/hora para 1 de fevereiro.

EXTRACTMONTH(expr)

Extrair Trimestre

EXTRACTQUARTER("Order Date")
  • 2/22/1967 3:02:01 AM devolve 1/1/1967 12:00:00 AM, o primeiro dia do primeiro trimestre fiscal.
  • 6/17/1999 11:18:00 PM devolve 4/1/1999 12:00:00 AM, o primeiro dia do segundo trimestre fiscal.

  • 9/2/2022 10:38:21 AM devolve 7/1/2022 12:00:00 AM, o primeiro dia do terceiro trimestre fiscal.

    Sugestão: Utilize QUARTER (expr) para calcular apenas o trimestre ordinal a partir da indicação de data/hora devolvida.

Devolve uma indicação de data/hora para o primeiro dia do trimestre em que o valor de entrada de dados ocorre. Por exemplo, se a indicação de data/hora da entrada de dados ocorrer no terceiro trimestre fiscal, a função devolve a indicação de data/hora para 1 de julho.

EXTRACTQUARTER(expr)

Extrair Segundo

EXTRACTSECOND("Order Date")
  • 1997/01/07 15:32:02.150 devolve 1997/01/07 15:32:02.
  • 1997/01/07 20:44:18.163 devolve 1997/01/07 20:44:18.

Devolve uma indicação de data/hora para o valor de entrada de dados. Por exemplo, se a indicação de data/hora da entrada de dados for para 15:32:02.150, a função devolve a indicação de data/hora para 15:32:02.

EXTRACTSECOND(expr)

Extrair Semana

EXTRACTWEEK("Order Date")
  • 2014/09/24 10:58:00 devolve 2014/09/21.

  • 2014/08/13 11:10:00 devolve 2014/08/10.

Devolve a data do primeiro dia da semana (domingo) em que o valor de entrada de dados ocorre. Por exemplo, se a indicação de data/hora da entrada de dados for para quarta-feira, 24 de setembro, a função devolve a indicação de data/hora para domingo, 21 de setembro.

EXTRACTWEEK(expr)

Extrair Ano

EXTRACTYEAR("Order Date")
  • 1967/02/22 03:02:01 devolve 1967/01/01 00:00:00.
  • 1999/06/17 23:18:00 devolve 1999/01/01 00:00:00.

Devolve uma indicação de data/hora para 1 de janeiro do ano em que o valor de entrada de dados ocorre. Por exemplo, se a indicação de data/hora da entrada de dados ocorrer em 1967, a função devolve a indicação de data/hora para 1 de janeiro de 1967.

EXTRACTYEAR (expr)

Sugestões sobre a Utilização de Dimensões de Data em Áreas de Atividade

Seguem-se algumas sugestões sobre como obter os melhores resultados ao utilizar datas da área de atividade nos cálculos.

Acrescentar uma Data da Área de Atividade a um Cálculo

Se arrastar uma data de uma área de atividade diretamente para um cálculo e a processar como uma cadeia de caracteres ou um número inteiro, obterá um erro. Isto acontece porque o valor de data subjacente é uma indicação de data/hora.

Em vez disso, utilize uma das Funções de Extração de Datas para interpretar a data.

Por exemplo, poderá ter estas datas da área de atividade.
Segue-se a descrição de GUID-39C55B3A-A055-45D3-9904-948680247C08-default.png
.png

Para extrair meses destas datas da área de atividade, utilize a função ExtractMonthOfYear:

case when monthname(ExtractMonthOfYear("Date")) in ('Jan' ,'Feb', 'Mar') 
THEN 'Q1' 
ELSE 'Rest of the year' END

Funções de Apresentação

As funções de apresentação operam no conjunto de resultados de uma consulta.

Função Exemplo Descrição Sintaxe

BottomN

BottomN(Sales, 10)

Devolve os valores mais altos da expressão n, por ordem crescente.

BottomN([NumericExpression], [integer])

FILTER

FILTER(Sales USING Product = 'widget')

Calcula a expressão através do filtro pré-agregado fornecido.

FILTER(measure USING filter_expr)

MAVG

MAVG(Sales, 10)

Calcula uma média móvel (média) para as últimas n linhas de dados no conjunto de resultados, incluindo a linha atual.

MAVG([NumericExpression], [integer])

MSUM

SELECT Month, Revenue, MSUM(Revenue, 3) as 3_MO_SUM FROM Sales

Calcula uma soma móvel para as últimas n linhas de dados, incluindo a linha atual.

A soma da primeira linha é igual à expressão numérica da primeira linha. A soma da segunda linha é calculada somando as duas primeiras linhas de dados, etc. Quando a linha número n é atingida, a soma é calculada com base nas últimas n linhas de dados.

MSUM([NumericExpression], [integer])

NTILE

NTILE(Sales, 100)

Determina a classificação de um valor em termos de um intervalo especificado por um utilizador. Devolve números inteiros para representar um intervalo de classificações. O exemplo mostra um intervalo de 1 a 100, com a menor venda = 1 e a maior venda = 100.

NTILE([NumericExpresssion], [integer])

PERCENTILE

PERCENTILE(Sales)

Calcula uma classificação da percentagem de cada valor que satisfaz o argumento da expressão numérica. Os intervalos da classificação de percentil vão de 0 (percentil 1) a 1 (percentil 100), inclusive.

PERCENTILE([NumericExpression])

RANK

RANK(Sales)

Calcula a classificação de cada valor que satisfaz o argumento da expressão numérica. Ao número mais alto é atribuída a classificação de 1 e a cada classificação sucessiva é atribuído o próximo número inteiro consecutivo (2, 3, 4,...). Se determinados valores forem iguais, são atribuídos à mesma classificação (por exemplo, 1, 1, 1, 4, 5, 5, 7...).

RANK([NumericExpression])

RCOUNT

SELECT month, profit, RCOUNT(profit) FROM sales WHERE profit > 200

Assume um conjunto de registos como entrada de dados e conta o número de registos encontrados até agora.

RCOUNT([NumericExpression])

RMAX

SELECT month, profit, RMAX(profit) FROM sales

Assume um conjunto de registos como entrada de dados e mostra o valor máximo com base nos registos encontrados até agora. É necessário que o tipo de dados especificado permita ordenação.

RMAX([NumericExpression])

RMIN

SELECT month, profit, RMIN(profit) FROM sales

Assume um conjunto de registos como entrada de dados e mostra o valor mínimo com base nos registos encontrados até agora. É necessário que o tipo de dados especificado permita ordenação.

RMIN([NumericExpression])

RSUM

SELECT month, revenue, RSUM(revenue) as RUNNING_SUM FROM sales

Calcula uma soma cumulativa com base nos registos encontrados até agora.

A soma da primeira linha é igual à expressão numérica da primeira linha. A soma da segunda linha é calculada somando as duas primeiras linhas de dados, etc.

RSUM([NumericExpression])

TOPN

TOPN(Sales, 10)

Devolve os valores mais altos da expressão n, por ordem decrescente.

TOPN([NumericExpression], [integer])

Sugestões sobre a Utilização de Funções de Apresentação

  • FILTER - Se estiver a criar um relatório utilizando uma área de atividade, utilize as hierarquias definidas na área de atividade em vez de filtrar as colunas da hierarquia diretamente num cálculo. Por outras palavras, se uma área de atividade tiver uma hierarquia para Tempo\Ano Fiscal\Trimestre Fiscal, evite:

    filter (<measure> using fiscal_quarter = 'Q4')

    filter (<measure> using fiscal_quarter = 'Q3')

    filter (<measure> using fiscal_year = 'FY24')

Funções de Avaliação

As funções de avaliação são funções da base de dados que podem ser utilizadas na transmissão de expressões para obtenção de cálculos avançados.

As funções de base de dados incorporadas podem necessitar de uma ou mais colunas. Estas colunas são referenciadas por %1 ... %N na função. As colunas reais têm de ser apresentadas depois da função.

Função Exemplo Descrição Sintaxe

EVALUATE

SELECT EVALUATE('instr(%1, %2)', address, 'Foster City') FROM employees

Transmite a função da base de dados especificada com as colunas referenciadas opcionais como parâmetros à base de dados para avaliação.

EVALUATE([string expression], [comma separated expressions])

EVALUATE_AGGR

EVALUATE_AGGR('REGR_SLOPE(%1, %2)', sales.quantity, market.marketkey)

Transmite a função da base de dados especificada com as colunas referenciadas opcionais como parâmetros à base de dados para avaliação. Esta função destina-se a funções de agregação com uma cláusula GROUP BY.

EVALUATE_AGGR('db_agg_function(%1...%N)' [AS datatype] [, column1, columnN])

Funções Matemáticas

As funções matemáticas descritas nesta secção efetuam operações matemáticas.

Função Exemplo Descrição Sintaxe

ABS

ABS(Profit)

Calcula o valor absoluto de uma expressão numérica.

expr é qualquer expressão que resulta num valor numérico.

ABS(expr)

ACOS

ACOS(1)

Calcula o arco cosseno de uma expressão numérica.

expr é qualquer expressão que resulta num valor numérico.

ACOS(expr)

ASIN

ASIN(1)

Calcula o arco seno de uma expressão numérica.

expr é qualquer expressão que resulta num valor numérico.

ASIN(expr)

ATAN

ATAN(1)

Calcula o arco tangente de uma expressão numérica.

expr é qualquer expressão que resulta num valor numérico.

ATAN(expr)

ATAN2

ATAN2(1, 2)

Calcula o arco tangente de y/x, em que y é a primeira expressão numérica e x é a segunda expressão numérica.

ATAN2(expr1, expr2)

CEILING

CEILING(Profit)

Arredonda uma expressão numérica não inteira para o número inteiro mais alto seguinte. Se a expressão numérica resultar num número inteiro, a função CEILING devolve esse número inteiro.

CEILING(expr)

COS

COS(1)

Calcula o cosseno de uma expressão numérica.

expr é qualquer expressão que resulta num valor numérico.

COS(expr)

COT

COT(1)

Calcula a cotangente de uma expressão numérica.

expr é qualquer expressão que resulta num valor numérico.

COT(expr)

DEGREES

DEGREES(1)

Converte uma expressão de radianos em graus.

expr é qualquer expressão que resulta num valor numérico.

DEGREES(expr)

EXP

EXP(4)

Envia o valor para a potência especificada. Calcula e elevado à potência n, em que e é a base do logaritmo natural.

EXP(expr)

ExtractBit

Int ExtractBit(1, 5)

Obtém um bit numa posição específica de um número inteiro. Devolve um número inteiro 0 ou 1 correspondente à posição do bit.

ExtractBit([Source Number], [Digits])

FLOOR

FLOOR(Profit)

Arredonda uma expressão numérica não inteira para o número inteiro mais baixo seguinte. Se a expressão numérica resultar num número inteiro, a função FLOOR devolve esse número inteiro.

FLOOR(expr)

LOG

LOG(1)

Calcula o logaritmo natural de uma expressão.

expr é qualquer expressão que resulta num valor numérico.

LOG(expr)

LOG10

LOG10(1)

Calcula o logaritmo de base 10 de uma expressão.

expr é qualquer expressão que resulta num valor numérico.

LOG10(expr)

MOD

MOD(10, 3)

Divide a primeira expressão numérica pela segunda expressão numérica e devolve a parte restante do quociente.

MOD(expr1, expr2)

PI

PI()

Devolve o valor constante de pi.

PI()

POWER

POWER(Profit, 2)

Assume a primeira expressão numérica e eleva-a à potência especificada na segunda expressão numérica.

POWER(expr1, expr2)

RADIANS

RADIANS(30)

Converte uma expressão de graus em radianos.

expr é qualquer expressão que resulta num valor numérico.

RADIANS(expr)

RAND

RAND()

Devolve um número pseudoaleatório entre 0 e 1.

RAND()

RANDFromSeed

RAND(2)

Devolve um número pseudoaleatório com base num valor inicial. Para um valor inicial específico, é gerado o mesmo conjunto de números aleatórios.

RAND(expr)

ROUND

ROUND(2.166000, 2)

Arredonda uma expressão numérica para n dígitos de precisão.

expr é qualquer expressão que resulta num valor numérico.

integer é qualquer número inteiro positivo que representa o número de dígitos de precisão.

ROUND(expr, integer)

SIGN

SIGN(Profit)

Devolve o seguinte:

  • 1 se a expressão numérica resultar num número positivo

  • -1 se a expressão numérica resultar num número negativo

  • 0 se a expressão numérica resultar em zero

SIGN(expr)

SIN

SIN(1)

Calcula o seno de uma expressão numérica.

SIN(expr)

SQRT

SQRT(7)

Calcula a raiz quadrada do argumento da expressão numérica. A expressão numérica tem de resultar num número não negativo.

SQRT(expr)

TAN

TAN(1)

Calcula a tangente de uma expressão numérica.

expr é qualquer expressão que resulta num valor numérico.

TAN(expr)

TRUNCATE

TRUNCATE(45.12345, 2)

Trunca um número decimal para devolver um número especificado de casas a partir do separador decimal.

expr é qualquer expressão que resulta num valor numérico.

integer é qualquer número inteiro positivo que representa o número de caracteres à direita da casa decimal a devolver.

TRUNCATE(expr, integer)

Funções de Agregação Cumulativa

As funções de agregação em execução efetuam operações em vários valores de modo a criar resultados de resumo.

Função Exemplo Descrição Sintaxe

MAVG

 

Calcula uma média móvel (média) para as últimas n linhas de dados no conjunto de resultados, incluindo a linha atual.

expr é qualquer expressão que resulta num valor numérico. integer é qualquer número inteiro positivo. Representa a média das últimas n linhas de dados.

MAVG(expr, integer)

MSUM

select month, revenue, MSUM(revenue, 3) as 3_MO_SUM from sales_subject_area

Calcula uma soma móvel para as últimas n linhas de dados, incluindo a linha atual.

expr é qualquer expressão que resulta num valor numérico. integer é qualquer número inteiro positivo. Representa a soma das últimas n linhas de dados.

MSUM(expr, integer)

RSUM

SELECT month, revenue, RSUM(revenue) as RUNNING_SUM from sales_subject_area

Calcula uma soma cumulativa com base nos registos encontrados até agora.

expr é qualquer expressão que resulta num valor numérico.

RSUM(expr)

RCOUNT

select month, profit, RCOUNT(profit) from sales_subject_area where profit > 200

Assume um conjunto de registos como entrada de dados e conta o número de registos encontrados até agora.

expr é uma expressão de qualquer tipo de dados.

RCOUNT(expr)

RMAX

SELECT month, profit,RMAX(profit) from sales_subject_area

Assume um conjunto de registos como entrada de dados e mostra o valor máximo com base nos registos encontrados até agora.

expr é uma expressão de qualquer tipo de dados.

RMAX(expr)

RMIN

select month, profit,RMIN(profit) from sales_subject_area

Assume um conjunto de registos como entrada de dados e mostra o valor mínimo com base nos registos encontrados até agora.

expr é uma expressão de qualquer tipo de dados.

RMIN(expr)

Funções Espaciais

As funções espaciais permitem-lhe efetuar a análise geográfica quando modela dados. Por exemplo, poderá calcular a distância entre duas áreas geográficas (conhecidas como formas ou polígonos).

Nota:

Não pode utilizar estas funções espaciais em cálculos customizados para livros de visualização.
Função Exemplo Descrição Sintaxe
GeometryArea

GeometryArea(Shape)

Calcula a área que uma forma ocupa.

GeometryArea(Shape)

GeometryDistance

GeometryDistance(TRIP_START, TRIP_END)

Calcula a distância entre duas formas.

GeometryDistance(Shape 1, Shape 2)

GeometryLength

GeometryLength(Shape)

Calcula a circunferência de uma forma.

GeometryLength(Shape)

GeometryRelate

GeometryRelate(TRIP_START, TRIP_END)

Determina se uma forma está dentro de outra forma. Devolve TRUE ou FALSE como uma cadeia de caracteres (varchar).

GeometryRelate(Shape 1, Shape 2)

GeometryWithinDistance

GeometryWithinDistance(TRIP_START, TRIP_END, 500)

Determina se duas formas estão a uma distância especificada uma da outra. Devolve TRUE ou FALSE como uma cadeia de caracteres (varchar).

GeometryWithinDistance(Shape1, Shape2, DistanceInFloat)

Funções de Cadeia de Caracteres

As funções de cadeia de caracteres efetuam várias manipulações de caracteres. Estas funções operam ao nível das cadeias de caracteres.

Função Exemplo Descrição Sintaxe

ASCII

ASCII('a')

Converte uma cadeia de caracteres única no respetivo código ASCII correspondente, entre 0 e 255. Se a expressão de caracteres resultar em vários caracteres, é devolvido o código ASCII correspondente ao primeiro carácter da expressão.

expr é qualquer expressão que resulta numa cadeia de caracteres.

ASCII(expr)

BIT_LENGTH

BIT_LENGTH('abcdef')

Devolve o comprimento, em bits, de uma cadeia de caracteres especificada. Cada carácter Unicode tem 2 bytes de comprimento (o que equivale a 16 bits).

expr é qualquer expressão que resulta numa cadeia de caracteres.

BIT_LENGTH(expr)

CHAR

CHAR(35)

Converte um valor numérico entre 0 e 255 no valor de carácter que corresponde ao código ASCII.

expr é qualquer expressão que resulta num valor numérico entre 0 e 255.

CHAR(expr)

CHAR_LENGTH

CHAR_LENGTH(Customer_Name)

Devolve o comprimento, em número de caracteres, de uma cadeia de caracteres especificada. Os caracteres em branco à esquerda e à direita não são contados no comprimento da cadeia de caracteres.

expr é qualquer expressão que resulta numa cadeia de caracteres.

CHAR_LENGTH(expr)

CONCAT

SELECT DISTINCT CONCAT ('abc', 'def') FROM employee

Efetua a concatenação de duas cadeias de caracteres.

exprs são expressões que resultam em cadeias de caracteres separadas por vírgulas.

Deve utilizar dados não processados, não dados formatados, com CONCAT.

CONCAT(expr1, expr2)

INSERT

SELECT INSERT('123456', 2, 3, 'abcd') FROM table

Insere uma cadeia de caracteres especificada numa localização especificada noutra cadeia de caracteres.

expr1 é qualquer expressão que resulta numa cadeia de caracteres. Identifica a cadeia de caracteres de destino.

integer1 é qualquer número inteiro positivo que representa o número de caracteres a partir do início da cadeia de caracteres de destino onde a segunda cadeia de caracteres deve ser inserida.

integer2 é qualquer número inteiro positivo que representa o número de caracteres na cadeia de caracteres de destino a substituir pela segunda cadeia de caracteres.

expr2 é qualquer expressão que resulta numa cadeia de caracteres. Identifica a cadeia de caracteres a inserir na cadeia de caracteres de destino.

INSERT(expr1, integer1, integer2, expr2)

LEFT

SELECT LEFT('123456', 3) FROM table

Devolve um número especificado de caracteres do lado esquerdo de uma cadeia de caracteres.

expr é qualquer expressão que resulta numa cadeia de caracteres

integer é qualquer número inteiro positivo que representa o número de caracteres a partir da esquerda da cadeia de caracteres a devolver.

LEFT(expr, integer)

LENGTH

LENGTH(Customer_Name)

Devolve o comprimento, em número de caracteres, de uma cadeia de caracteres especificada. O comprimento é devolvido excluindo quaisquer caracteres em branco à direita.

expr é qualquer expressão que resulta numa cadeia de caracteres.

LENGTH(expr)

LOCATE

LOCATE('d' 'abcdef')

Devolve a posição numérica de uma cadeia de caracteres noutra cadeia de caracteres. Se a cadeia de caracteres não for encontrada na cadeia que está a ser pesquisada, a função devolve um valor 0.

expr1 é qualquer expressão que resulta numa cadeia de caracteres. Identifica a cadeia de caracteres a pesquisar.

expr2 é qualquer expressão que resulta numa cadeia de caracteres.

Identifica a cadeia de caracteres a pesquisar.

LOCATE(expr1, expr2)

LOCATEN

LOCATEN('d' 'abcdef', 3)

À semelhança da função LOCATE, devolve a posição numérica de uma cadeia de caracteres noutra cadeia de caracteres. LOCATEN inclui um argumento de número inteiro que permite especificar uma posição de início para começar a pesquisa.

expr1 é qualquer expressão que resulta numa cadeia de caracteres. Identifica a cadeia de caracteres a pesquisar.

expr2 é qualquer expressão que resulta numa cadeia de caracteres. Identifica a cadeia de caracteres a pesquisar.

integer é qualquer número inteiro positivo (diferente de zero) que representa a posição de início da procura da cadeia de caracteres.

LOCATEN(expr1, expr2, integer)

LOWER

LOWER(Customer_Name)

Converte uma cadeia de caracteres em minúsculas.

expr é qualquer expressão que resulta numa cadeia de caracteres.

LOWER(expr)

OCTET_LENGTH

OCTET_LENGTH('abcdef')

Devolve o número de bytes de uma cadeia de caracteres especificada.

expr é qualquer expressão que resulta numa cadeia de caracteres.

OCTET_LENGTH(expr)

POSITION

POSITION('d', 'abcdef')

Devolve a posição numérica de strExpr1 numa expressão de caracteres. Se strExpr1 não for encontrado, a função devolve 0.

expr1 é qualquer expressão que resulta numa cadeia de caracteres. Identifica a cadeia de caracteres a pesquisar na cadeia de caracteres de destino. Por exemplo, "d".

expr2 é qualquer expressão que resulta numa cadeia de caracteres. Identifica a cadeia de caracteres de destino a pesquisar. Por exemplo, "abcdef".

POSITION(expr1, expr2)

REPEAT

REPEAT('abc', 4)

Repete uma expressão especificada n vezes.

expr é qualquer expressão que resulta numa cadeia de caracteres

integer é qualquer número inteiro positivo que representa o número de vezes que a cadeia de caracteres deve ser repetida.

REPEAT(expr, integer)

REPLACE

REPLACE('abcd1234', '123', 'zz')

Substitui um ou vários caracteres de uma expressão de caracteres especificada por um ou vários outros caracteres.

expr1 é qualquer expressão que resulta numa cadeia de caracteres. É a cadeia de caracteres na qual os caracteres devem ser substituídos.

expr2 é qualquer expressão que resulta numa cadeia de caracteres. Esta segunda cadeia de caracteres identifica os caracteres da primeira cadeia de caracteres que devem ser substituídos.

expr3 é qualquer expressão que resulta numa cadeia de caracteres. Esta terceira cadeia de caracteres especifica os caracteres a substituir na primeira cadeia de caracteres.

REPLACE(expr1, expr2, expr3)

RIGHT

SELECT RIGHT('123456', 3) FROM table

Devolve um número especificado de caracteres do lado direito de uma cadeia de caracteres.

expr é qualquer expressão que resulta numa cadeia de caracteres.

integer é qualquer número inteiro positivo que representa o número de caracteres a partir da direita da cadeia de caracteres a devolver.

RIGHT(expr, integer)

SPACE

SPACE(2)

Insere espaços em branco.

integer é qualquer número inteiro positivo que indica o número de espaços a inserir.

SPACE(expr)

SUBSTRING

SUBSTRING('abcdef' FROM 2)

Cria uma nova cadeia de caracteres iniciada a partir de um número fixo de caracteres na cadeia de caracteres original.

expr é qualquer expressão que resulta numa cadeia de caracteres.

startPos é qualquer número inteiro positivo que representa o número de caracteres a partir do início do lado esquerdo da cadeia de caracteres na qual o resultado deve começar.

SUBSTRING([SourceString] FROM [StartPostition])

SUBSTRINGN

SUBSTRING('abcdef' FROM 2 FOR 3)

À semelhança da função SUBSTRING, cria uma nova cadeia de caracteres iniciada a partir de um número fixo de caracteres na cadeia de caracteres original.

SUBSTRINGN inclui um argumento de número inteiro que permite especificar o comprimento da nova cadeia de caracteres, em número de caracteres.

expr é qualquer expressão que resulta numa cadeia de caracteres.

startPos é qualquer número inteiro positivo que representa o número de caracteres a partir do início do lado esquerdo da cadeia de caracteres na qual o resultado deve começar.

SUBSTRING(expr FROM startPos FOR length)

TrimBoth

Trim(BOTH '_' FROM '_abcdef_')

Retira os caracteres à esquerda e à direita especificados de uma cadeia de caracteres.

char é qualquer carácter único. Se omitir esta especificação (e as plicas necessárias), é utilizado um carácter em branco por omissão.

expr é qualquer expressão que resulta numa cadeia de caracteres.

TRIM(BOTH char FROM expr)

TRIMLEADING

TRIM(LEADING '_' FROM '_abcdef')

Retira os caracteres à esquerda especificados de uma cadeia de caracteres.

char é qualquer carácter único. Se omitir esta especificação (e as plicas necessárias), é utilizado um carácter em branco por omissão.

expr é qualquer expressão que resulta numa cadeia de caracteres.

TRIM(LEADING char FROM expr)

TRIMTRAILING

TRIM(TRAILING '_' FROM 'abcdef_')

Retira os caracteres à direita especificados de uma cadeia de caracteres.

char é qualquer carácter único. Se omitir esta especificação (e as plicas necessárias), é utilizado um carácter em branco por omissão.

expr é qualquer expressão que resulta numa cadeia de caracteres.

TRIM(TRAILING char FROM expr)

UPPER

UPPER(Customer_Name)

Converte uma cadeia de caracteres em maiúsculas.

expr é qualquer expressão que resulta numa cadeia de caracteres.

UPPER(expr)

Sugestões sobre a Utilização de Funções de Cadeia de Caracteres

Seguem-se algumas sugestões sobre como obter os melhores resultados ao utilizar funções de cadeia de caracteres nos seus livros.

Concatenar vários valores:

Utilize LISTAGG para concatenar vários valores numa célula e numa linha.

listagg(<column to concatenate> by <grouping column>)

Acrescente on overflow truncate se a cadeia de caracteres resultante for demasiado longa e acrescente distinct se os valores não forem exclusivos.

Por exemplo:

listagg(distinct City_ID by STATE on overflow truncate)

Funções de Sistema

A função de sistema USER devolve valores relativos à sessão. Por exemplo, o nome de utilizador com o qual entrou em sessão.

Função Exemplo Descrição Sintaxe

DATABASE

 

Devolve o nome da área de atividade na qual o utilizador entrou em sessão.

DATABASE()

USER

 

Devolve o nome de utilizador do modelo semântico no qual o utilizador entrou em sessão.

USER()

Funções de Séries de Tempo

As funções de séries de tempo permitem-lhe agregar e prever dados com base em dimensões de tempo. Por exemplo, pode utilizar a função AGO para calcular as receitas do ano anterior.

Os membros da dimensão de tempo devem estar no nível da função ou abaixo dele. Assim, uma ou mais colunas que identifiquem os membros de modo exclusivo no nível especificado ou abaixo dele têm de ser projetadas na consulta.

Função Exemplo Descrição Sintaxe

AGO

SELECT Year_ID, AGO(sales, year, 1)

Calcula o valor agregado de uma medida num período de tempo especificado no passado. Por exemplo, para calcular as receitas mensais do ano anterior, utilize AGO(Revenue, Year, 1, SHIP_MONTH). Para calcular as receitas trimestrais do último trimestre, utilize AGO(Revenue, Quarter, 1).

AGO(MEASURE, TIME_LEVEL, OFFSET)

Em que:

  • MEASURE representa a medida para calcular, por exemplo, as receitas.
  • TIME_LEVEL representa o intervalo de tempo, que deve ser Year, Quarter, Month, Week ou Day.
  • OFFSET representa o número de intervalos de tempo para calcular o período passado, por exemplo, 1 correspondente a um ano.

PERIODROLLING

SELECT Month_ID, PERIODROLLING (monthly_sales, -1, 1)

Calcula a agregação de uma medida ao longo do período começando em x unidades de tempo e terminando em y unidades de tempo relativamente ao período de tempo atual. Por exemplo, PERIODROLLING pode calcular as vendas para um período iniciado num trimestre anterior e terminado num trimestre posterior ao trimestre atual.

PERIODROLLING(measure, x [,y])

Em que:

  • MEASURE representa o nome de uma coluna da medida.
  • X é um número inteiro que representa o diferencial relativamente ao período de tempo atual.
  • Y é um número inteiro que representa o número de unidades de tempo ao longo das quais a função é calculada.
  • HIERARCHY é um argumento opcional que representa o nome de uma hierarquia numa dimensão de tempo, tal como YR, MON, DAY, que pretende utilizar para calcular a janela de tempo.

TODATE

SELECT Year_ID, Month_ID, TODATE (sales, year)

Calcula o valor agregado de uma medida a partir do início de um período de tempo até ao período de tempo mais recente, por exemplo, cálculos do acumulado do exercício.

Por exemplo, para calcular as Vendas do Acumulado do Exercício, utilize TODATE(sales, year).

TODATE(MEASURE, TIME_LEVEL)

Em que:

  • MEASURE representa uma expressão que referencia, pelo menos, uma coluna de medida, por exemplo, sales.
  • TIME_LEVEL representa o intervalo de tempo, que deve ser Year, Quarter, Month, Week ou Day.