Funcţii

Există diferite tipuri de funcţii pe care le puteţi utiliza în expresii.

Subiecte:

Funcţii pt. analize

Funcţiile din Analytics vă permit să exploraţi date utilizând modele cum ar fi prognoza, linia de tendinţe şi clusterul. Sau puteţi glisa şi plasa funcţiile de analiză în editorul de registre de lucru.

Sau puteţi adăuga prognoze, linii de tendinţe şi clustere într-un registru de lucru selectându-le din fila Analytics a panoului de date din editorul registrului de lucru. Consultaţi Adăugarea de funcţii analitice statistice în vizualizări.

Funcţie Exemplu Descriere Sintaxă

CLUSTER

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

Colectează un set de înregistrări în grupuri pe baza uneia sau mai multor expresii de intrare, utilizând mediile K sau crearea de clustere ierarhice.

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

FORECAST

Exemplu de prognoză pentru venituri pe zi

Acest exemplu selectează prognoza pentru venituri pe zi.

FORECAST("A - Sample Sales"."Base Facts"."1- Revenue" Target,
("A - Sample Sales"."Time"."T00 Calendar Date"),'forecast', 'numPeriods=30;predictionInterval=70;') ForecastedRevenue

Exemplu de prognoză pentru venituri pe an şi trimestru

Acest exemplu selectează prognoza pentru venituri pe an şi trimestru.

FORECAST("A - Sample Sales"."Base Facts"."1- Revenue",
("A - Sample Sales"."Time"."T01 Year" timeYear, "A - Sample Sales"."Time"."T02 Quarter" TimeQuarter),'forecast', 'numPeriods=30;predictionInterval=70;') ForecastedRevenue

Creează un model de serie temporală al subindicatorului specificat pe serie, utilizând fie netezirea exponenţială (ETS), ARIMA sezonier, ARIMA sau Prophet. Această funcţie generează o prognoză pentru un set de perioade aşa cum specifică argumentul numPeriods.

Consultaţi şi opţiunile suplimentare de mai jos pt. funcţia FORECAST.

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

Unde:

  • measure reprezintă măsura de prognozat, de exemplu, datele despre venituri.

  • series reprezintă granularitatea temporală la care este generat modelul de prognoză. Aceasta este o listă cu una sau mai multe coloane pentru dimensiunea Timp. Dacă omiteţi seria, granularitatea temporală este determinată din interogare.

  • output_column_name reprezintă numele de coloane valide pentru forecast, low, high, şi predictionInterval.

  • options reprezintă o listă cu şiruri de perechi nume/valoare separate prin punct şi virgulă (;). Valoarea poate include %1 ... %N specificată în runtime_binded_options.

  • runtime_binded_options reprezintă o listă separată prin virgulă de coloane şi opţiuni. Valorile pentru aceste coloane şi opţiuni sunt evaluate şi rezolvate în timpul executării unei interogări individuale.

Consultaţi şi opţiunile suplimentare de mai jos pt. funcţia FORECAST.

OUTLIER

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

Clasifică o înregistrare ca valoare aberantă pe baza uneia sau mai multor expresii de intrare, utilizând medii K sau clusterizarea ierarhică ori algoritmi de detecţie multi-variată a selecţiei de valori aberante.

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

REGR

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

Se potriveşte unui model liniar şi returnează valorile sau modelul la care se potriveşte. Această funcţie poate fi utilizată pt. a se potrivi unei curbe liniare pe doi subindicatori.

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')

Oracle recomandă aplicarea unei tendinţe, folosind proprietatea Adăugare statistici la urmărirea unei vizualizări. Consultaţi Ajustarea proprietăţilor vizualizării.

Face corespondenţa cu un model liniar, polinomial sau exponenţial şi returnează valorile sau modelul corespunzătoare. Expresia numeric_expr reprezintă valoarea pe axa Y pentru tendinţă, iar series (coloanele de timp) reprezintă valoarea pe axa X.

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

Opţiunile funcţiei FORECAST Tabelul următor listează opţiunile disponibile care pot fi utilizate cu funcţia FORECAST.

Nume opţiune Valori Descriere
numPeriods Număr întreg Numărul de perioade de prognozat.
predictionInterval De la 0 la 100, unde valorile superioare indică o încredere mai mare Nivelul de încredere pentru prognoză.
modelType

ETS (Netezire exponenţială)

SeasonalArima

ARIMA

Prophet

Modelul de utilizat pentru prognoză.
useBoxCox

TRUE

FALSE

Dacă are valoarea TRUE, utilizaţi transformarea Box-Cox.
lambdaValue Nu este cazul

Parametrul pentru transformarea Box-Cox.

Ignoraţi dacă valoarea este NULL sau atunci când valoarea useBoxCox este FALSE.

În caz contrar, datele sunt transformate înainte ca modelul să fie estimat.

trendDamp

TRUE

FALSE

Acesta este specific modelului de netezire exponenţială.

Dacă are valoarea TRUE, utilizaţi tendinţa amortizată. Dacă are valoarea FALSE sau NULL, utilizaţi tendinţa neamortizată.

errorType

Nu este cazul

Acesta este specific modelului de netezire exponenţială.
trendType

N (niciunul)

A (adăugat)

M (multiplicativ)

Z (selectat automat)

Acesta este specific modelului de netezire exponenţială
seasonType

N (niciunul)

A (adăugat)

M (multiplicativ)

Z (selectat automat)

Acesta este specific modelului de netezire exponenţială
modelParamIC

ic_auto

ic_aicc

ic_bic

ic_auto (valoarea prestabilită)

Criteriul de informare (IC) utilizat în selecţia modelului.

Funcţiile de conversie

Funcţiile de conversie convertesc o valoare dintr-o formă în alta.

Funcţie Exemplu Descriere Sintaxă

CAST

CAST(hiredate AS CHAR(40)) FROM employee

Modifică tipul de date al unei expresii sau un literal nul în alt tip de date. De exemplu, puteţi converti un customer_name (un tip de date CHAR sau VARCHAR) sau birthdate (un literal datetime).

Utilizaţi CAST pentru a modifica la un tip de date Dată.

Nu utilizaţi TODATE.

CAST(expr AS type)

IFNULL

IFNULL(Sales, 0)

Testează dacă o expresie este evaluată la o valoare nulă şi, dacă da, asignează valoarea specificată expresiei.

IFNULL(expr, value)

INDEXCOL

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

Utilizează informaţii externe pt. a returna coloana corespunzătoare pt. ca utilizatorul conectat s-o vadă.

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";

Compară două expresii. Dacă acestea sunt egale, funcţia returnează valoarea NULL. Dacă acestea nu sunt egale, funcţia returnează prima expresie. Nu puteţi să specificaţi valoarea literală NULL pt. prima expresie.

NULLIF([expression], [expression])

To_DateTime

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

Converteşte literalele de tip Şir cu formatul DateTime într-un tip de date DateTime.

To_DateTime([expression], [literal])

VALUEOF

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

Face referire la valoarea variabilei unui model semantic dintr-un filtru.

Utilizaţi variabilele expr ca argumente ale funcţiei VALUEOF. Se referă la variabilele statice ale unui model semantic după nume.

VALUEOF(expr)

Funcţii de extragere a datelor

Aceste funcţii calculează sau rotunjesc valorile marcajului temporal la cea mai apropiată perioadă specificată, de exemplu, oră, zi, săptămână, lună şi trimestru.

Puteţi utiliza marcajele temporale calculate pentru a agrega datele utilizând o altă granularitate. De exemplu, aţi putea aplica funcţia EXTRACTDAY() la datele comenzilor de vânzări pentru a calcula un marcaj temporal pentru miezul nopţii în ziua în care apar comenzile, astfel încât să puteţi agrega datele în funcţie de zi.

Funcţie Exemplu Descriere Sintaxă

Extragere zi

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

Returnează un marcaj temporal pentru miezul nopţii (12 AM) în ziua în care apare valoarea de intrare. De exemplu, dacă marcajul temporal introdus este pentru 3:02:01 AM în 22 februarie, funcţia returnează marcajul temporal pentru 12:00:00 AM în 22 februarie.

EXTRACTDAY(expr)

Extragere oră

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

Returnează un marcaj temporal pentru începutul orei în care apare valoarea de intrare. De exemplu, dacă marcajul temporal introdus este pentru 11:18:30 PM, funcţia returnează marcajul temporal pentru 11:00:00 PM.

EXTRACTHOUR (expr)

Extragere oră a zilei

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

Returnează un marcaj temporal în care ora este egală cu ora din valoarea de intrare, cu valori prestabilite pentru an, lună, zi, minute şi secunde.

EXTRACTHOUROFDAY(expr)

Extragere milisecundă

EXTRACTMILLISECOND("Order Date")
  • 1997/01/07 15:32:02.150 returnează 1997/01/07 15:32:02.150.
  • 1997/01/07 18:42:01.265 returnează 1997/01/07 18:42:01.265.
Returnează un marcaj temporal care conţine milisecundele pentru valoarea de intrare. De exemplu, dacă marcajul temporal introdus este pentru 15:32:02.150, funcţia returnează marcajul temporal pentru 15:32:02.150.

EXTRACTMILLISECOND(expr)

Extragere minut

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

Returnează un marcaj temporal pentru începutul minutului în care apare valoarea de intrare. De exemplu, dacă marcajul temporal introdus este pentru 11:38:21 AM, funcţia returnează marcajul temporal pentru 11:38:00 AM.

EXTRACTMINUTE (expr)

Extragere lună

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

Returnează un marcaj temporal pentru prima zi din lună în care apare valoarea de intrare. De exemplu, dacă marcajul temporal introdus este pentru 22 februarie, funcţia returnează marcajul temporal pentru 1 februarie.

EXTRACTMONTH(expr)

Extragere trimestru

EXTRACTQUARTER("Order Date")
  • 2/22/1967 3:02:01 AM returnează 1/1/1967 12:00:00 AM, prima zi a primului trimestru fiscal.
  • 6/17/1999 11:18:00 PM returnează 4/1/1999 12:00:00 AM, prima zi a celui de-al doilea trimestru fiscal.

  • 9/2/2022 10:38:21 AM returnează 7/1/2022 12:00:00 AM, prima zi a celui de-al treilea trimestru fiscal.

    Sugestie: Utilizaţi QUARTER (expr) pentru a calcula doar numeralul ordinal al trimestrului din marcajul temporal.

Returnează un marcaj temporal pentru prima zi din trimestru în care apare valoarea de intrare. De exemplu, dacă marcajul temporal introdus apare în al treilea trimestru fiscal, funcţia returnează marcajul temporal pentru 1 iulie.

EXTRACTQUARTER(expr)

Extragere secundă

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

Returnează un marcaj temporal pentru valoarea de intrare. De exemplu, dacă marcajul temporal introdus este pentru 15:32:02.150, funcţia returnează marcajul temporal pentru 15:32:02.

EXTRACTSECOND(expr)

Extragere săptămână

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

  • 2014/08/13 11:10:00 returnează 2014/08/10.

Returnează data primei zile a săptămânii (duminică) în care apare valoarea de intrare. De exemplu, dacă marcajul temporal introdus este pentru miercuri, 24 septembrie, funcţia returnează marcajul temporal pentru duminică, 21 septembrie.

Notă: Dacă prima zi a săptămânii (adică duminica) cade într-un an anterior şi, prin urmare, ar afecta negativ agregarea, funcţia returnează a şaptea zi a săptămânii (adică sâmbăta) din anul curent în loc de prima zi a săptămânii din anul anterior. De exemplu, 01.01.2024, 02.01.2024 şi 03.01.2024 se agregă toate la sâmbătă, 06.01.2024, în loc de duminică, 29.12.2023.

EXTRACTWEEK(expr)

Extragere an

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

Returnează un marcaj temporal pentru 1 ianuarie pentru anul în care apare valoarea de intrare. De exemplu, dacă marcajul temporal introdus apare în 1967, funcţia returnează marcajul temporal pentru 1 ianuarie 1967.

EXTRACTYEAR (expr)

Sugestii privind utilizarea dimensiunilor de dată în zonele de subiect

Iată câteva sugestii privind obţinerea celor mai bune rezultate când utilizaţi în calcule date din zonele de subiect.

Adăugarea de date din zona de subiect într-un calcul

Dacă glisaţi o dată dintr-o zonă de subiect direct într-un calcul şi o procesaţi ca şir sau ca număr întreg, veţi obţine o eroare. Acest lucru se întâmplă deoarece valoarea subiacentă a datei este un marcaj temporal.

Utilizaţi în schimb Funcţii de extragere a datelor pentru a interpreta data.

De exemplu, poate aveţi aceste date din zona de subiect.
Urmează descrierea GUID-39C55B3A-A055-45D3-9904-948680247C08-default.png
.png

Pentru a extrage lunile din aceste date din zona de subiect, utilizaţi funcţia ExtractMonthOfYear:

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

Funcţii de afişare

Funcţiile de afişare operează asupra setului de rezultate al unei interogări.

Funcţie Exemplu Descriere Sintaxă

BottomN

BottomN(Sales, 10)

Returnează n valori cele mai mici ale expresiei, clasificate de la cea mai mică la cea mai mare.

BottomN([NumericExpression], [integer])

FILTER

FILTER(Sales USING Product = 'widget')

Calculează expresia utilizând filtrul de pre-agregare dat.

FILTER(measure USING filter_expr)

MAVG

MAVG(Sales, 10)

Calculează o medie mobilă pt. ultimele n rânduri de date din setul de rezultate, inclusiv rândul curent.

MAVG([NumericExpression], [integer])

MSUM

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

Calculează o sumă mobilă pt. ultimele n rânduri de date, inclusiv rândul curent.

Suma pentru primul rând este egală cu expresia numerică pentru primul rând. Suma pt. al doilea rând este calculată din suma primelor două rânduri de date etc. Când se ajunge la al n-lea rând, suma este calculată pe baza ultimelor n rânduri de date.

MSUM([NumericExpression], [integer])

NTILE

NTILE(Sales, 100)

Stabileşte clasificarea unei valori faţă de un interval specificat de utilizator. Returnează valori întregi pentru a reprezenta orice interval de clasificări. Exemplul afişează un interval de la 1 la 100, cu cea mai mică vânzare = 1 şi cea mai mare vânzare = 100.

NTILE([NumericExpresssion], [integer])

PERCENTILE

PERCENTILE(Sales)

Calculează o clasificare procentuală pt. fiecare valoare care satisface argumentul expresiei numerice. Intervalele de clasificare a percentilelor sunt cuprinse între 0 (prima percentilă) şi 1 (a 100-a percentilă), inclusiv.

PERCENTILE([NumericExpression])

RANK

RANK(Sales)

Calculează clasificarea pentru fiecare valoare care satisface argumentul expresiei numerice. Numărul cel mai mare este asignat unei clasificări 1 şi fiecărei clasificări succesive îi este asignată valoarea întreagă următoare (2, 3, 4...). Dacă unele valori sunt egale, acestora le este asignată aceeaşi clasificare (de exemplu 1, 1, 1, 4, 5, 5, 7...).

RANK([NumericExpression])

RCOUNT

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

Preia un set de înregistrări ca intrare şi numără înregistrările întâlnite până în acest moment.

RCOUNT([NumericExpression])

RMAX

SELECT month, profit, RMAX(profit) FROM sales

Preia un set de înregistrări drept intrare şi afişează valoarea maximă pe baza înregistrărilor întâlnite până în acest moment. Tipul de date specificat trebuie să fie unul care poate fi ordonat.

RMAX([NumericExpression])

RMIN

SELECT month, profit, RMIN(profit) FROM sales

Preia un set de înregistrări drept intrare şi afişează valoarea minimă pe baza înregistrărilor întâlnite până în acest moment. Tipul de date specificat trebuie să fie unul care poate fi ordonat.

RMIN([NumericExpression])

RSUM

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

Calculează o sumă curentă pe baza înregistrărilor întâlnite până în prezent.

Suma pentru primul rând este egală cu expresia numerică pentru primul rând. Suma pt. al doilea rând este calculată din suma primelor două rânduri de date etc.

RSUM([NumericExpression])

TOPN

TOPN(Sales, 10)

Returnează n valori cele mai mari ale expresiei, clasificate de la cea mai mare la cea mai mică.

TOPN([NumericExpression], [integer])

Sugestii privind utilizarea funcţiilor de afişare

  • FILTER - Dacă generaţi un raport utilizând o zonă de subiect, utilizaţi ierarhiile definite în zona de subiect, în loc să filtraţi coloanele din ierarhie direct într-un calcul. Cu alte cuvinte, dacă o zonă de subiect are ierarhia Timp\An fiscal\Trimestru fiscal, evitaţi acest gen de interogare:

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

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

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

Funcţiile de evaluare

Funcţiile de evaluare sunt funcţii din baza de date care pot fi utilizate pt. transferul expresiilor la preluarea calculelor avansate.

Funcţiile înglobate din baza de date pot necesita una sau mai multe coloane. Aceste coloane sunt referite cu %1 ... %N în cadrul funcţiei. Coloanele efective trebuie listate după funcţie.

Funcţie Exemplu Descriere Sintaxă

EVALUATE

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

Transmite funcţia specificată din baza de date cu coloanele referite opţionale ca parametri în baza de date pt. evaluare.

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

EVALUATE_AGGR

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

Transmite funcţia specificată din baza de date cu coloanele referite opţionale ca parametri în baza de date pt. evaluare. Această funcţie este destinată funcţiilor de agregare cu o clauză GROUP BY.

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

Funcţii matematice

Funcţiile matematice descrise în această secţiune efectuează operaţii matematice.

Funcţie Exemplu Descriere Sintaxă

ABS

ABS(Profit)

Calculează valoarea absolută a unei expresii numerice.

expr este oricare expresie utilizată pentru evaluare în funcţie de o valoare numerică.

ABS(expr)

ACOS

ACOS(1)

Calculează arccosinusul unei expresii numerice.

expr este oricare expresie utilizată pentru evaluare în funcţie de o valoare numerică.

ACOS(expr)

ASIN

ASIN(1)

Calculează arcsinusul unei expresii numerice.

expr este oricare expresie utilizată pentru evaluare în funcţie de o valoare numerică.

ASIN(expr)

ATAN

ATAN(1)

Calculează arctangenta unei expresii numerice.

expr este oricare expresie utilizată pentru evaluare în funcţie de o valoare numerică.

ATAN(expr)

ATAN2

ATAN2(1, 2)

Calculează arctangenta y /x, unde y este prima expresie numerică, iar x este a doua expresie numerică.

ATAN2(expr1, expr2)

CEILING

CEILING(Profit)

Rotunjeşte o expresie numerică diferită de numere întregi la următorul număr întreg mai mare. Dacă expresia numerică este evaluată la un întreg, funcţia CEILING returnează întregul respectiv.

CEILING(expr)

COS

COS(1)

Calculează cosinusul unei expresii numerice.

expr este oricare expresie utilizată pentru evaluare în funcţie de o valoare numerică.

COS(expr)

COT

COT(1)

Calculează cotangenta unei expresii numerice.

expr este oricare expresie utilizată pentru evaluare în funcţie de o valoare numerică.

COT(expr)

DEGREES

DEGREES(1)

Converteşte o expresie din radiani în grade.

expr este oricare expresie utilizată pentru evaluare în funcţie de o valoare numerică.

DEGREES(expr)

EXP

EXP(4)

Trimite valoarea la puterea specificată. Calculează e la puterea n, unde e este baza logaritmului natural.

EXP(expr)

ExtractBit

Int ExtractBit(1, 5)

Preia un bit de la o anumită poziţie dintr-un întreg. Returnează întregul 0 sau 1, corespunzător poziţiei bitului.

ExtractBit([Source Number], [Digits])

FLOOR

FLOOR(Profit)

Rotunjeşte o expresie numerică diferită de numere întregi la următorul număr întreg mai mic. Dacă expresie numerică este evaluată la un întreg, funcţia FLOOR returnează întregul respectiv.

FLOOR(expr)

LOG

LOG(1)

Calculează logaritmul natural al unei expresii.

expr este oricare expresie utilizată pentru evaluare în funcţie de o valoare numerică.

LOG(expr)

LOG10

LOG10(1)

Calculează logaritmul în baza 10 al unei expresii.

expr este oricare expresie utilizată pentru evaluare în funcţie de o valoare numerică.

LOG10(expr)

MOD

MOD(10, 3)

Împarte prima expresie numerică la a doua expresie numerică şi returnează partea de rest a rezultatului.

MOD(expr1, expr2)

PI

PI()

Returnează valoarea constantă a numărului pi.

PI()

POWER

POWER(Profit, 2)

Preia prima valoare numerică şi o ridică la puterea specificată în a doua valoare numerică.

POWER(expr1, expr2)

RADIANS

RADIANS(30)

Converteşte o expresie din grade în radiani.

expr este oricare expresie utilizată pentru evaluare în funcţie de o valoare numerică.

RADIANS(expr)

RAND

RAND()

Returnează un număr pseudo-aleatoriu, între 0 şi 1.

RAND()

RANDFromSeed

RAND(2)

Returnează un număr pseudo-aleatoriu, bazat pe o valoare predefinită. Pentru o anumită valoare predefinită, este generat acelaşi set de numere aleatorii.

RAND(expr)

ROUND

ROUND(2.166000, 2)

Rotunjeşte o expresie numerică la n cifre de precizie.

expr este oricare expresie utilizată pentru evaluare în funcţie de o valoare numerică.

integer este orice număr întreg pozitiv care reprezintă numărul de cifre de precizie.

ROUND(expr, integer)

SIGN

SIGN(Profit)

Returnează următoarele:

  • 1 dacă expresia numerică este evaluată la un număr pozitiv

  • -1 dacă expresia numerică este evaluată la un număr negativ

  • 0 dacă expresia numerică este evaluată la zero

SIGN(expr)

SIN

SIN(1)

Calculează sinusul unei expresii numerice.

SIN(expr)

SQRT

SQRT(7)

Calculează rădăcina pătrată a argumentului expresiei numerice. Expresia numerică trebuie să fie evaluată la un număr diferit de negativ.

SQRT(expr)

TAN

TAN(1)

Calculează tangenta unei expresii numerice.

expr este oricare expresie utilizată pentru evaluare în funcţie de o valoare numerică.

TAN(expr)

TRUNCATE

TRUNCATE(45.12345, 2)

Trunchiază numărul zecimal pentru a returna un număr specificat de cifre de la punctul zecimal.

expr este oricare expresie utilizată pentru evaluare în funcţie de o valoare numerică.

integer este orice număr întreg pozitiv care reprezintă numărul de caractere de la dreapta poziţiei zecimalei de returnat.

TRUNCATE(expr, integer)

Rularea funcţiilor de agregare

Rularea funcţiilor de agregare efectuează operaţii asupra mai multor valori pentru a crea rezultate de sumarizare.

Funcţie Exemplu Descriere Sintaxă

MAVG

 

Calculează o medie mobilă pt. ultimele n rânduri de date din setul de rezultate, inclusiv rândul curent.

expr este oricare expresie utilizată pentru evaluare în funcţie de o valoare numerică. integer este orice număr întreg pozitiv. Reprezintă media ultimelor n rânduri de date.

MAVG(expr, integer)

MSUM

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

Calculează o sumă mobilă pt. ultimele n rânduri de date, inclusiv rândul curent.

expr este oricare expresie utilizată pentru evaluare în funcţie de o valoare numerică. integer este orice număr întreg pozitiv. Reprezintă suma ultimelor n rânduri de date.

MSUM(expr, integer)

RSUM

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

Calculează o sumă curentă pe baza înregistrărilor întâlnite până în prezent.

expr este oricare expresie utilizată pentru evaluare în funcţie de o valoare numerică.

RSUM(expr)

RCOUNT

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

Preia un set de înregistrări ca intrare şi numără înregistrările întâlnite până în acest moment.

expr este o expresie de oricare tip de date.

RCOUNT(expr)

RMAX

SELECT month, profit,RMAX(profit) from sales_subject_area

Preia un set de înregistrări drept intrare şi afişează valoarea maximă pe baza înregistrărilor întâlnite până în acest moment.

expr este o expresie de oricare tip de date.

RMAX(expr)

RMIN

select month, profit,RMIN(profit) from sales_subject_area

Preia un set de înregistrări drept intrare şi afişează valoarea minimă pe baza înregistrărilor întâlnite până în acest moment.

expr este o expresie de oricare tip de date.

RMIN(expr)

Funcţii spaţiale

Funcţiile spaţiale vă permit să efectuaţi analize geografice atunci când modelaţi date. De exemplu, puteţi calcula distanţa dintre două zone geografice (cunoscute ca forme sau poligoane).

Notă:

Nu puteţi utiliza aceste funcţii spaţiale în calcule personalizate pentru registre de lucru de vizualizare.
Funcţie Exemplu Descriere Sintaxă
GeometryArea

GeometryArea(Shape)

Calculează suprafaţa pe care o ocupă forma.

GeometryArea(Shape)

GeometryDistance

GeometryDistance(TRIP_START, TRIP_END)

Calculează distanţa dintre două forme.

GeometryDistance(Shape 1, Shape 2)

GeometryLength

GeometryLength(Shape)

Calculează circumferinţa unei forme.

GeometryLength(Shape)

GeometryRelate

GeometryRelate(TRIP_START, TRIP_END)

Stabileşte dacă o formă se află în interiorul altei forme. Returnează TRUE sau FALSE ca şir (varchar).

GeometryRelate(Shape 1, Shape 2)

GeometryWithinDistance

GeometryWithinDistance(TRIP_START, TRIP_END, 500)

Stabileşte dacă două forme se află la o anumită distanţă una de cealaltă. Returnează TRUE sau FALSE ca şir (varchar).

GeometryWithinDistance(Shape1, Shape2, DistanceInFloat)

Funcţii pt. şiruri

Funcţiile pt. şiruri efectuează diverse manipulări ale caracterelor. Acestea funcţionează asupra şirurilor de caractere.

Funcţie Exemplu Descriere Sintaxă

ASCII

ASCII('a')

Converteşte un singur şir de caractere în codul ASCII corespunzător, între 0 şi 255. Dacă expresia caracterelor este evaluată la mai multe caractere, este returnat codul ASCII corespunzător primului caracter din expresie.

expr este oricare expresie care efectuează evaluarea în funcţie de un şir de caractere.

ASCII(expr)

BIT_LENGTH

BIT_LENGTH('abcdef')

Returnează lungimea, în biţi, a unui şir specificat. Fiecare caracter Unicode are o lungime de 2 bytes (egală cu 16 biţi).

expr este oricare expresie care efectuează evaluarea în funcţie de un şir de caractere.

BIT_LENGTH(expr)

Caracter

CHAR(35)

Converteşte o valoare numerică între 0 şi 255 în valoarea caracter corespunzătoare codului ASCII.

expr este oricare expresie care efectuează evaluarea în funcţie de o valoare numerică cuprinsă între 0 şi 255.

CHAR(expr)

CHAR_LENGTH

CHAR_LENGTH(Customer_Name)

Returnează lungimea, în număr de caractere, a unui şir specificat. Spaţiile de la început şi de la sfârşit nu sunt contorizate la lungimea şirului.

expr este oricare expresie care efectuează evaluarea în funcţie de un şir de caractere.

CHAR_LENGTH(expr)

CONCAT

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

Concatenează două şiruri de caractere.

exprs sunt expresii care efectuează evaluarea în funcţie de şiruri de caractere, separate prin virgulă.

Trebuie să utilizaţi date brute, nu date formatate, cu CONCAT.

CONCAT(expr1, expr2)

INSERT

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

Inserează un şir de caractere specificat într-o locaţie specificată dintr-un alt şir de caractere.

expr1 este oricare expresie care efectuează evaluarea în funcţie de un şir de caractere. Identifică şirul de caractere destinaţie.

integer1 este orice număr întreg pozitiv care reprezintă numărul de caractere de la începutul şirului destinaţie unde se introduce cel de-al doilea şir.

integer2 este orice număr întreg pozitiv care reprezintă numărul de caractere din şirul destinaţie care urmează să fie înlocuit de cel de-al doilea şir.

expr2 este oricare expresie care efectuează evaluarea în funcţie de un şir de caractere. Identifică şirul de caractere care trebuie inserat în şirul destinaţie.

INSERT(expr1, integer1, integer2, expr2)

LEFT

SELECT LEFT('123456', 3) FROM table

Returnează numărul specificat de caractere din partea stângă a şirului.

expr este oricare expresie care efectuează evaluarea în funcţie de un şir de caractere

integer este orice număr întreg pozitiv care reprezintă numărul de caractere de la stânga şirului de returnat.

LEFT(expr, integer)

LENGTH

LENGTH(Customer_Name)

Returnează lungimea, în număr de caractere, a unui şir specificat. Lungimea este returnată excluzând caracterele spaţiu de la sfârşit.

expr este oricare expresie care efectuează evaluarea în funcţie de un şir de caractere.

LENGTH(expr)

LOCATE

LOCATE('d' 'abcdef')

Returnează poziţia numerică a unui şir de caractere din alt şir de caractere. Dacă şirul de caractere nu este găsit în şirul de căutare, funcţia returnează valoarea 0.

expr1 este oricare expresie care efectuează evaluarea în funcţie de un şir de caractere. Identifică şirul căutat.

expr2 este oricare expresie care efectuează evaluarea în funcţie de un şir de caractere.

Identifică şirul de căutat.

LOCATE(expr1, expr2)

LOCATEN

LOCATEN('d' 'abcdef', 3)

Precum LOCATE, returnează poziţia numerică a unui şir de caractere dintr-un alt şir de caractere. LOCATEN include un argument de tip număr întreg, care vă permite să specificaţi o poziţie iniţială pentru începerea căutării.

expr1 este oricare expresie care efectuează evaluarea în funcţie de un şir de caractere. Identifică şirul căutat.

expr2 este oricare expresie care efectuează evaluarea în funcţie de un şir de caractere. Identifică şirul de căutat.

integer este orice număr întreg pozitiv (diferit de zero) care reprezintă poziţia de unde se începe căutarea şirului de caractere.

LOCATEN(expr1, expr2, integer)

LOWER

LOWER(Customer_Name)

Converteşte un şir de caractere în minuscules.

expr este oricare expresie care efectuează evaluarea în funcţie de un şir de caractere.

LOWER(expr)

OCTET_LENGTH

OCTET_LENGTH('abcdef')

Returnează numărul de bytes al unui şir specificat.

expr este oricare expresie care efectuează evaluarea în funcţie de un şir de caractere.

OCTET_LENGTH(expr)

POSITION

POSITION('d', 'abcdef')

Returnează poziţia numerică a strExpr1 într-o expresie cu caractere. Dacă nu se găseşte strExpr1, funcţia returnează 0.

expr1 este oricare expresie care efectuează evaluarea în funcţie de un şir de caractere. Identifică şirul de căutat în şirul destinaţie. De exemplu, "d".

expr2 este oricare expresie care efectuează evaluarea în funcţie de un şir de caractere. Identifică şirul destinaţie de căutat. De exemplu, "abcdef".

POSITION(expr1, expr2)

REPEAT

REPEAT('abc', 4)

Repetă de n ori o expresie specificată.

expr este oricare expresie care efectuează evaluarea în funcţie de un şir de caractere

integer este orice număr întreg pozitiv care reprezintă numărul de repetări ale şirului de caractere.

REPEAT(expr, integer)

REPLACE

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

Înlocuieşte unul sau mai multe caractere dintr-o expresie specificată, cu alte caractere.

expr1 este oricare expresie care efectuează evaluarea în funcţie de un şir de caractere. Acesta este şirul în care vor fi înlocuite caracterele.

expr2 este oricare expresie care efectuează evaluarea în funcţie de un şir de caractere. Acest al doilea şir identifică caracterele din primul şir care urmează să fie înlocuite.

expr3 este oricare expresie care efectuează evaluarea în funcţie de un şir de caractere. Acest al treilea şir specifică caracterele de înlocuit în primul şir.

REPLACE(expr1, expr2, expr3)

RIGHT

SELECT RIGHT('123456', 3) FROM table

Returnează numărul specificat de caractere din partea dreaptă a şirului.

expr este oricare expresie care efectuează evaluarea în funcţie de un şir de caractere.

integer este orice număr întreg pozitiv care reprezintă numărul de caractere de la dreapta şirului de returnat.

RIGHT(expr, integer)

SPACE

SPACE(2)

Inserează spaţii.

întreg este orice întreg pozitiv care indică numărul de spaţii care trebuie inserate.

SPACE(expr)

SUBSTRING

SUBSTRING('abcdef' FROM 2)

Creează un şir nou pornind de la un număr fix de caractere din şirul iniţial.

expr este oricare expresie care efectuează evaluarea în funcţie de un şir de caractere.

startPos este orice număr întreg pozitiv care reprezintă numărul de caractere de la începutul părţii stângi a şirului unde trebuie să înceapă rezultatul.

SUBSTRING([SourceString] FROM [StartPostition])

SUBSTRINGN

SUBSTRING('abcdef' FROM 2 FOR 3)

Precum SUBSTRING, creează un şir nou pornind de la un număr fix de caractere din şirul iniţial.

SUBSTRINGN include un argument de tip număr întreg, care vă permite să specificaţi lungimea noului şir, în număr de caractere.

expr este oricare expresie care efectuează evaluarea în funcţie de un şir de caractere.

startPos este orice număr întreg pozitiv care reprezintă numărul de caractere de la începutul părţii stângi a şirului unde trebuie să înceapă rezultatul.

SUBSTRING(expr FROM startPos FOR length)

TrimBoth

Trim(BOTH '_' FROM '_abcdef_')

Elimină caracterele de început şi de sfârşit dintr-un şir de caractere.

char este orice caracter unic. Dacă omiteţi această specificaţie (şi ghilimelele simple necesare), un caracter blanc este utilizat ca implicit.

expr este oricare expresie care efectuează evaluarea în funcţie de un şir de caractere.

TRIM(BOTH char FROM expr)

TRIMLEADING

TRIM(LEADING '_' FROM '_abcdef')

Elimină caracterele de început dintr-un şir de caractere.

char este orice caracter unic. Dacă omiteţi această specificaţie (şi ghilimelele simple necesare), un caracter blanc este utilizat ca implicit.

expr este oricare expresie care efectuează evaluarea în funcţie de un şir de caractere.

TRIM(LEADING char FROM expr)

TRIMTRAILING

TRIM(TRAILING '_' FROM 'abcdef_')

Elimină caracterele de sfârşit dintr-un şir de caractere.

char este orice caracter unic. Dacă omiteţi această specificaţie (şi ghilimelele simple necesare), un caracter blanc este utilizat ca implicit.

expr este oricare expresie care efectuează evaluarea în funcţie de un şir de caractere.

TRIM(TRAILING char FROM expr)

UPPER

UPPER(Customer_Name)

Converteşte un şir de caractere în majuscule.

expr este oricare expresie care efectuează evaluarea în funcţie de un şir de caractere.

UPPER(expr)

Sugestii pentru utilizarea LISTAGG în funcţiile de şiruri

Iată câteva sugestii pentru utilizarea funcţiei LISTAGG pentru a obţine cele mai bune rezultate la tratarea şirurilor din registrele dvs. de lucru. De exemplu, puteţi crea un şir care conţine toate localităţile dintr-o coloană de date.

Concatenaţi mai multe valori:

Utilizaţi LISTAGG pentru a concatena mai multe valori dintr-un şir într-o celulă şi un rând.

LISTAGG([DISTINCT] <column to concatenate> BY <grouping column>) ON OVERFLOW TRUNCATE
  • DISTINCT - Dacă valorile nu sunt unice, utilizaţi acest argument pentru a elimina valorile duplicate.
  • ON OVERFLOW TRUNCATE - Dacă rezultatul depăşeşte lungimea maximă permisă, utilizaţi acest argument pentru a trunchia şirul returnat.
Exemplu de date
Number City State
12     New York    New York
14     New York    New York
30     Boston      Massachusetts
18     Salem    Massachusetts
12     Buffalo     New York
10     Buffalo     New York
20     Albany      New York

Exemple de comenzi şi rezultate

LISTAGG(City, ', ') are ca rezultat "New York, New York, Boston, Salem, Buffalo, Buffalo, Albany"

LISTAGG(DISTINCT City, ', ') are ca rezultat "New York, Boston, Salem, Buffalo Albany"

LISTAGG(City, ', ' ON OVERFLOW TRUNCATE '...') are ca rezultat "New York, New York, Boston, Salem, Buffalo, ..."

Funcţii de sistem

Funcţia de sistem USER returnează valori corelate cu sesiunea. De exemplu, numele de utilizator cu care v-aţi conectat.

Funcţie Exemplu Descriere Sintaxă

DATABASE

 

Returnează numele zonei de subiect la care sunteţi conectat.

DATABASE()

USER

 

Returnează numele de utilizator pentru modelul semantic la care sunteţi conectat.

USER()

Funcţii pentru serii cronologice

Funcţiile pentru serii cronologice vă permit să agregaţi şi să prognozaţi date pe baza dimensiunilor Timp. De exemplu, puteţi utiliza funcţia AGO, pentru a calcula venitul de acum un an.

Membrii dimensiunilor temporale trebuie să fie cel mult la nivelul funcţiei. Din această cauză, una sau mai multe coloane care identifică în moc unic membrii la sau sub nivelul dat trebuie să fie proiectate în interogare.

Funcţie Exemplu Descriere Sintaxă

AGO

SELECT Year_ID, AGO(sales, year, 1)

Calculează valoarea agregată a unei măsuri în perioada de timp specificată, din trecut. De exemplu, pentru a calcula venitul lunar de acum un an, utilizaţi AGO(Revenue, Year, 1, SHIP_MONTH). Pentru a calcula veniturile trimestriale pentru ultimul trimestru, utilizaţi AGO(Revenue, Quarter, 1).

AGO(MEASURE, TIME_LEVEL, OFFSET)

Unde:

  • MEASURE reprezintă subindicatorul de calculat, de exemplu, venitul.
  • TIME_LEVEL reprezintă intervalul de timp, care trebuie să fie An, Trimestru, Lună, Săptămână sau Zi.
  • OFFSET reprezintă numărul de intervale de timp de calculat înapoi, de exemplu, 1 pentru un an.

PERIODROLLING

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

Calculează valoarea agregată a unui subindicator pe perioada care începe cu x unităţi de timp şi se termină cu y unităţi de timp de la momentul actual. De exemplu, PERIODROLLING poate calcula vânzările pe o perioadă care începe la un trimestru şi se încheie la un trimestru după trimestrul curent.

PERIODROLLING(measure, x [,y])

Unde:

  • MEASURE reprezintă numele unei coloane de subindicatori.
  • X este un număr întreg care reprezintă decalajul faţă de momentul actual.
  • Y este un număr întreg care reprezintă numărul de unităţi de timp pe care le va lua în calcul funcţia.
  • HIERARCHY este un argument opţional care reprezintă numele unei ierarhii într-o dimensiune de timp, cum ar fi YR (an), MON (lună), DAY (zi), pe care doriţi să o utilizaţi pentru a calcula fereastra de timp.

TODATE

SELECT Year_ID, Month_ID, TODATE (sales, year)

Calculează valoarea agregată a unei măsuri de la începutul unei perioade de timp până la ultima perioadă de timp, de exemplu, calcule pentru anul la zi.

De exemplu, pentru a calcula vânzările pentru anul la zi, utilizaţi TODATE(sales, year).

TODATE(MEASURE, TIME_LEVEL)

Unde:

  • MEASURE reprezintă o expresie care face referire la cel puţin o coloană de subindicatori, de exemplu, Vânzări.
  • TIME_LEVEL reprezintă intervalul de timp, care trebuie să fie An, Trimestru, Lună, Săptămână sau Zi.