Funkcje

Są dostępne różne typy funkcji, których można używać w wyrażeniach.

Tematy:

Funkcje analityczne

Funkcje analityczne umożliwiają eksplorację danych przy użyciu modeli takich jak prognoza, linia trendu i klaster. Alternatywnie można przeciągać i upuszczać funkcje analityczne do edytora skoroszytu.

Alternatywnie do skoroszytu można dodawać prognozy, linie trendów i klastry, wybierając je na karcie "Analizy" panelu "Dane" w edytorze skoroszytu. Zob. Dodawanie funkcji analiz statystycznych do wizualizacji.

Funkcja Przykład Opis Składnia

CLUSTER

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

Ta funkcja rozdziela zbiór rekordów na grupy na podstawie jednego lub większej liczby wyrażeń wejściowych, używając algorytmu centroidów (K-Means) lub klasteryzacji hierarchicznej (metody Czekanowskiego).

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

FORECAST

Przykład prognozy przychodów wg dnia

W tym przykładzie jest wybierana prognoza przychodów wg dnia.

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

Przykład prognozy przychodów wg roku i kwartału

W tym przykładzie jest wybierana prognoza przychodów wg roku i kwartału.

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

Tworzy model szeregów czasowych dla określonej miary na podstawie serii, używając algorytmu "ETS (wygładzanie wykładnicze)", "Sezonowa ARIMA", "ARIMA" lub "Prophet". Wynikiem tej funkcji jest prognoza dla zestawu okresów określonego za pomocą argumentu numPeriods.

Zob. także dodatkowe opcje funkcji FORECAST poniżej.

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

Gdzie:

  • measure reprezentuje miarę, której ma dotyczyć prognoza, na przykład dane dotyczące przychodów.

  • series reprezentuje szczegółowość czasu, z jaką będzie konstruowany model prognozy. Jest to lista zawierająca jedną lub więcej kolumn wymiaru "czas". Jeśli argument "series" zostanie ominięty, szczegółowość czasu będzie ustalana na podstawie zapytania.

  • output_column_name reprezentuje poprawne nazwy kolumn forecast, low, high i predictionInterval.

  • options reprezentuje listę napisów zawierającą rozdzielone średnikami (;) pary nazwa/wartość. Wartość może zawierać %1 ... %N, które można określić za pomocą runtime_binded_options.

  • runtime_binded_options reprezentuje rozdzieloną przecinkami listę kolumn i opcji. Wartości dla tych kolumn i opcji są obliczane i rozstrzygane podczas wykonywania poszczególnych zapytań.

Zob. także dodatkowe opcje funkcji FORECAST poniżej.

OUTLIER

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

Klasyfikuje rekord jako odstający na podstawie jednego lub większej liczby wyrażeń wejściowych, używając algorytmu centroidów (K-Means), klasteryzacji hierarchicznej (metody Czekanowskiego) lub wieloczynnikowego wykrywania odstających.

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

REGR

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

Dopasowuje model liniowy i zwraca dopasowane wartości lub model. Tej funkcji można użyć w celu dopasowania krzywej liniowej do dwóch miar.

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 zaleca stosowanie funkcji TRENDLINE za pomocą właściwości Dodaj statystyki podczas wyświetlania wizualizacji. Zob. Dostosowywanie właściwości wizualizacji.

Dopasowuje model liniowy, wielomianowy lub wykładniczy i zwraca dopasowane wartości lub model. numeric_expr reprezentuje wartość Y dla trendu, a series (kolumny czasu) reprezentują wartość X.

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

Opcje funkcji FORECAST W poniższej tabeli są przedstawione opcje, których można używać z funkcją FORECAST.

Nazwa opcji Wartości Opis
numPeriods Liczba całkowita Liczba prognozowanych okresów.
predictionInterval Od 0 do 100, przy czym większe wartości oznaczają większą ufność. Poziom ufności predykcji.
modelType

ETS (wygładzanie wykładnicze)

SeasonalArima

ARIMA

Prophet

Model używany do prognozowania.
useBoxCox

TRUE

FALSE

Jeśli TRUE, jest używana transformacja Boxa-Coxa.
lambdaValue Nie dotyczy

Parametr transformacji Boxa-Coxa

Pomijany dla wartości NULL lub gdy useBoxCox ma ustawienie FALSE.

W przeciwnym razie dane są przekształcane przed zastosowaniem modelu.

trendDamp

TRUE

FALSE

Jest to opcja specyficzna dla modelu "Wygładzanie wykładnicze".

Jeśli TRUE, jest używany trend gasnący. Jeśli FALSE lub NULL, jest używany trend niegasnący.

errorType

Nie dotyczy

Jest to opcja specyficzna dla modelu "Wygładzanie wykładnicze".
trendType

N (brak)

A (addytywny)

M (multiplikatywny)

Z (automatycznie wybierany)

Jest to opcja specyficzna dla modelu "Wygładzanie wykładnicze"
seasonType

N (brak)

A (addytywny)

M (multiplikatywny)

Z (automatycznie wybierany)

Jest to opcja specyficzna dla modelu "Wygładzanie wykładnicze"
modelParamIC

ic_auto

ic_aicc

ic_bic

ic_auto (wartość domyślna)

Kryterium informacyjne (IC) używane przy wyborze modelu.

Funkcje konwertujące

Funkcje konwertujące przekształcają wartość z jednej postaci w inną.

Funkcja Przykład Opis Składnia

CAST

CAST(hiredate AS CHAR(40)) FROM employee

Zmienia typ danych wyrażenia lub literał Null na inny typ danych. Na przykład można rzutować customer_name (typ danych CHAR lub VARCHAR) lub birthdate (literał typu DateTime).

Do zmiany typu danych na typ "data" (Date) należy używać funkcji CAST.

Nie używać w tym celu funkcji TODATE.

CAST(expr AS type)

IFNULL

IFNULL(Sales, 0)

Testuje, czy wynikiem wyrażenia jest wartość Null, a jeśli tak, to przypisuje wynikowi wyrażenia określoną wartość.

IFNULL(expr, value)

INDEXCOL

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

Wykorzystując zewnętrzne informacje (np. wartość zmiennej), zwraca odpowiednią kolumnę dla zalogowanego użytkownika.

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

Porównuje dwa wyrażenia. Jeśli ich wartości są równe, funkcja zwraca NULL. Jeśli ich wartości nie są równe, funkcja zwraca wartość pierwszego wyrażenia. Jako pierwszego wyrażenia nie można podać literału NULL.

NULLIF([expression], [expression])

To_DateTime

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

Konwertuje literały napisowe w formacie daty-godziny (DateTime) na typ danych DateTime.

To_DateTime([expression], [literal])

VALUEOF

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

Odwołuje się w filtrze do wartości zmiennej modelu semantycznego.

Jako argumentów funkcji VALUEOF należy użyć zmiennych expr. Do statycznych zmiennych modelu semantycznego można się odwoływać za pomocą ich nazw.

VALUEOF(expr)

Funkcje ekstrakcji daty

Funkcje te obliczają lub zaokrąglają wartości znaczników czasu do najbliższego określonego okresu, takiego jak godzina, dzień, tydzień, miesiąc i kwartał.

Obliczonych znaczników czasu można używać do agregacji danych z różną szczegółowością. Na przykład można zastosować funkcję EXTRACTDAY() do dat zamówień sprzedaży, aby obliczyć znacznik czasu jako północ dnia złożenia zamówienia i agregować dane wg dnia.

Funkcja Przykład Opis Składnia

Ekstrakcja dnia

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

Zwraca znacznik czasu dla północy (12 AM) w dniu, w którym pojawia się wartość wejściowa. Na przykład, jeśli znacznikiem czasu wartości wejściowej jest 3:02:01 AM w dniu 22 lutego, to funkcja zwraca znacznik czasu 12:00:00 AM w dniu 22 lutego.

EXTRACTDAY(expr)

Ekstrakcja godziny

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

Zwraca znacznik czasu dla początku godziny, o której pojawia się wartość wejściowa. Na przykład, jeśli znacznikiem czasu wartości wejściowej jest 11:18:30 PM, to funkcja zwraca znacznik czasu 11:00:00 PM.

EXTRACTHOUR (expr)

Ekstrakcja godziny dnia

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

Zwraca znacznik czasu, w którym godzina równa się godzinie wartości wejściowej i są używane wartości domyślne dla roku, miesiąca, dnia, minut i sekund.

EXTRACTHOUROFDAY(expr)

Ekstrakcja milisekund

EXTRACTMILLISECOND("Order Date")
  • 1997/01/07 15:32:02.150 zwraca 1997/01/07 15:32:02.150.
  • 1997/01/07 18:42:01.265 zwraca 1997/01/07 18:42:01.265.
Zwraca znacznik czasu dla wartości wejściowej zawierający milisekundy. Na przykład, jeśli znacznikiem czasu wartości wejściowej jest 15:32:02.150, to funkcja zwraca znacznik czasu 15:32:02.150.

EXTRACTMILLISECOND(expr)

Ekstrakcja minut

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

Zwraca znacznik czasu dla początku minuty, o której pojawia się wartość wejściowa. Na przykład, jeśli znacznikiem czasu wartości wejściowej jest 11:38:21 AM, to funkcja zwraca znacznik czasu 11:38:00 AM.

EXTRACTMINUTE (expr)

Ekstrakcja miesiąca

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

Zwraca znacznik czasu dla pierwszego dnia miesiąca, w którym pojawia się wartość wejściowa. Na przykład, jeśli znacznik czasu wartości wejściowej zawiera 22 lutego, to funkcja zwraca znacznik czasu 1 lutego.

EXTRACTMONTH(expr)

Ekstrakcja kwartału

EXTRACTQUARTER("Order Date")
  • 2/22/1967 3:02:01 AM zwraca 1/1/1967 12:00:00 AM, pierwszy dzień pierwszego kwartału obrotowego.
  • 6/17/1999 11:18:00 PM zwraca 4/1/1999 12:00:00 AM, pierwszy dzień drugiego kwartału obrotowego.

  • 9/2/2022 10:38:21 AM zwraca 7/1/2022 12:00:00 AM, pierwszy dzień trzeciego kwartału obrotowego.

    Wskazówka: Aby ze zwróconego znacznika czasu obliczyć zwykły kwartał, należy użyć funkcji QUARTER (expr).

Zwraca znacznik czasu dla pierwszego dnia tygodnia, w którym pojawia się wartość wejściowa. Na przykład, jeśli znacznik czasu wartości wejściowej występuje w trzecim kwartale obrotowym, to funkcja zwraca znacznik czasu 1 lipca.

EXTRACTQUARTER(expr)

Ekstrakcja sekund

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

Zwraca znacznik czasu dla wartości wejściowej. Na przykład, jeśli znacznikiem czasu wartości wejściowej jest 15:32:02.150, to funkcja zwraca znacznik czasu 15:32:02.

EXTRACTSECOND(expr)

Ekstrakcja tygodnia

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

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

Zwraca datę pierwszego dnia tygodnia (niedziela), w którym pojawia się wartość wejściowa. Na przykład, jeśli znacznik czasu wartości wejściowej zawiera środę, 24 września,, to funkcja zwraca znacznik czasu dla niedzieli, 21 września.

Uwaga: jeśli pierwszy dzień tygodnia (np. niedziela) wypada w poprzednim roku, co miałoby odwrotny wpływ na agregację, funkcja zwraca siódmy dzień tygodnia (np. sobota) w bieżącym roku, zamiast pierwszego dnia tygodnia w poprzednim roku. Na przykład wynikiem agregacji dat 1/1/24, 1/2/24 i 1/3/24 będzie sobota 1/6/24, a nie niedziela 12/29/23.

EXTRACTWEEK(expr)

Ekstrakcja roku

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

Zwraca znacznik czasu dla 1 stycznia roku, w którym pojawia się wartość wejściowa. Na przykład, jeśli znacznik czasu wartości wejściowej występuje w roku 1967, to funkcja zwraca znacznik czasu 1 stycznia 1967.

EXTRACTYEAR (expr)

Wskazówki dotyczące używania wymiarów daty w obszarach tematycznych

Poniżej przedstawiono kilka porad na temat tego, jak uzyskać najlepsze wyniki podczas używania dat obszarów tematycznych w obliczeniach.

Dodawanie daty obszaru tematycznego do obliczenia

Jeśli data zostanie przeciągnięta z obszaru tematycznego bezpośrednio do obliczenia, a następnie będzie przetwarzana jako napis lub liczba całkowita, wystąpi błąd. Dzieje się tak, ponieważ faktyczna wartość daty jest znacznikiem czasu.

Zamiast tego należy w celu zinterpretowania daty użyć jednej z funkcji opisanych na stronie Funkcje ekstrakcji daty.

Na przykład można chcieć użyć następujących dat obszarów tematycznych.
Opis "GUID-39C55B3A-A055-45D3-9904-948680247C08-default.png" znajduje się poniżej
.png"

Aby wyodrębnić miesiące z tych dat obszarów tematycznych, należy użyć funkcji ExtractMonthOfYear:

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

Funkcje wyświetlania

Funkcje wyświetlania operują na zbiorze wyników wyświetlania.

Funkcja Przykład Opis Składnia

BottomN

BottomN(Sales, 10)

Zwraca n najmniejszych wartości wyrażenia, sklasyfikowanych od najmniejszej do największej.

BottomN([NumericExpression], [integer])

FILTER

FILTER(Sales USING Product = 'widget')

Oblicza wyrażenie z użyciem podanego filtra wstępnej agregacji.

FILTER(measure USING filter_expr)

MAVG

MAVG(Sales, 10)

Oblicza średnią ruchomą dla ostatnich n wierszy danych w zbiorze wyników, włącznie z wierszem bieżącym.

MAVG([NumericExpression], [integer])

MSUM

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

Oblicza sumę ruchomą dla ostatnich n wierszy danych, włącznie z wierszem bieżącym.

Suma dla pierwszego wiersza jest równa wartości wyrażenia liczbowego dla pierwszego wiersza. Suma dla drugiego wiersza jest obliczana jako suma pierwszych dwóch wierszy danych itd. Gdy zostanie osiągnięty n-ty wiersz, suma jest obliczana na podstawie n ostatnich wierszy danych.

MSUM([NumericExpression], [integer])

NTILE

NTILE(Sales, 100)

Ustala klasyfikację wartości z użyciem przedziału określonego przez użytkownika. Zwraca liczby całkowite reprezentujące dowolny zakres klasyfikacji. Ten przykład pokazuje przedział od 1 do 100, z najmniejszą wartością sprzedaży = 1 i największą = 100.

NTILE([NumericExpresssion], [integer])

PERCENTILE

PERCENTILE(Sales)

Oblicza klasyfikację centylową dla każdej wartości odpowiadającej argumentowi mającemu postać wyrażenia liczbowego. Przedział klasyfikacji centylowych zawiera się od 0 (pierwszy centyl) do 1 (setny centyl) włącznie.

PERCENTILE([NumericExpression])

RANK

RANK(Sales)

Oblicza klasyfikację poszczególnych wartości odpowiadających argumentowi wyrażenia liczbowego. Największej liczbie jest przypisywana pozycja 1, a każdej kolejnej pozycji jest przypisywana następna liczba całkowita (2, 3, 4, ...). Jeśli jakieś wartości są jednakowe, to jest im przypisywana ta sama pozycja (np. 1, 1, 1, 4, 5, 5, 7 ...).

RANK([NumericExpression])

RCOUNT

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

Przyjmuje jako wejście zbiór rekordów i zlicza liczbę rekordów napotkanych do danego momentu.

RCOUNT([NumericExpression])

RMAX

SELECT month, profit, RMAX(profit) FROM sales

Przyjmuje jako wejście zbiór rekordów i pokazuje maksymalną wartość na podstawie rekordów napotkanych do danego momentu. Podany typ danych musi być jednym z tych, które można uporządkować.

RMAX([NumericExpression])

RMIN

SELECT month, profit, RMIN(profit) FROM sales

Przyjmuje jako wejście zbiór rekordów i pokazuje minimalną wartość na podstawie rekordów napotkanych do danego momentu. Podany typ danych musi być jednym z tych, które można uporządkować.

RMIN([NumericExpression])

RSUM

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

Oblicza sumę kumulacyjną opartą na rekordach napotkanych do danego momentu.

Suma dla pierwszego wiersza jest równa wartości wyrażenia liczbowego dla pierwszego wiersza. Suma dla drugiego wiersza jest obliczana jako suma pierwszych dwóch wierszy danych itd.

RSUM([NumericExpression])

TOPN

TOPN(Sales, 10)

Zwraca n największych wartości wyrażenia, sklasyfikowanych od największej do najmniejszej.

TOPN([NumericExpression], [integer])

Wskazówki dotyczące korzystania z funkcji wyświetlania

  • FILTER - w przypadku konstruowania raportu przy użyciu obszaru tematycznego należy zamiast filtrowania kolumn hierarchii bezpośrednio w obliczeniach używać hierarchii zdefiniowanych w obszarze tematycznym. Jeśli na przykład obszar tematyczny zawiera hierarchię Czas\Rok obrotowy\Kwartał obrotowy, należy unikać stosowania następujących funkcji:

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

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

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

Funkcje ewaluacji

Funkcje ewaluacji to funkcje bazy danych, których (funkcji) można użyć do przekazywania wyrażeń w celu uzyskania zaawansowanych obliczeń.

Osadzane funkcje bazy danych mogą wymagać jednej lub więcej kolumn. Funkcja odwołuje się do tych kolumn za pomocą argumentów %1 ... %N. Faktyczne kolumny muszą zostać wyszczególnione po funkcji.

Funkcja Przykład Opis Składnia

EVALUATE

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

Przekazuje podaną funkcję bazy danych, wraz z opcjonalnymi kolumnami (jako parametrami), do bazy danych w celu obliczenia.

EVALUATE([wyrażenie napisowe], [wyrażenia rozdzielone przecinkiem])

EVALUATE_AGGR

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

Przekazuje podaną funkcję bazy danych, wraz z opcjonalnymi kolumnami (jako parametrami), do bazy danych w celu obliczenia. Ta funkcja jest przeznaczona dla funkcji agregacji z klauzulą GROUP BY.

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

Funkcje matematyczne

Opisane tu funkcje matematyczne służą do wykonywania działań matematycznych.

Funkcja Przykład Opis Składnia

ABS

ABS(Profit)

Oblicza wartość bezwzględną wyrażenia liczbowego.

expr jest dowolnym wyrażeniem dającym w wyniku wartość liczbową.

ABS(expr)

ACOS

ACOS(1)

Oblicza arcus cosinus wyrażenia liczbowego.

expr jest dowolnym wyrażeniem dającym w wyniku wartość liczbową.

ACOS(expr)

ASIN

ASIN(1)

Oblicza arcus sinus wyrażenia liczbowego.

expr jest dowolnym wyrażeniem dającym w wyniku wartość liczbową.

ASIN(expr)

ATAN

ATAN(1)

Oblicza arcus tangens wyrażenia liczbowego.

expr jest dowolnym wyrażeniem dającym w wyniku wartość liczbową.

ATAN(expr)

ATAN2

ATAN2(1, 2)

Oblicza arcus tangens wyrażenia y /x, gdzie y jest pierwszym wyrażeniem liczbowym, a x jest drugim wyrażeniem liczbowym.

ATAN2(expr1, expr2)

CEILING

CEILING(Profit)

Zaokrągla niecałkowitoliczbowe wyrażenie do następnej największej liczby całkowitej. Jeśli wynikiem wyrażenia liczbowego jest liczba całkowita, to funkcja CEILING zwraca tę liczbę całkowitą.

CEILING(expr)

COS

COS(1)

Oblicza cosinus wyrażenia liczbowego.

expr jest dowolnym wyrażeniem dającym w wyniku wartość liczbową.

COS(expr)

COT

COT(1)

Oblicza cotangens wyrażenia liczbowego.

expr jest dowolnym wyrażeniem dającym w wyniku wartość liczbową.

COT(expr)

DEGREES

DEGREES(1)

Przekształca wartość wyrażenia z radianów na stopnie.

expr jest dowolnym wyrażeniem dającym w wyniku wartość liczbową.

DEGREES(expr)

EXP

EXP(4)

Podnosi wartość do podanej potęgi. Oblicza e podniesione do potęgi n, gdzie e jest podstawą logarytmu naturalnego.

EXP(expr)

ExtractBit

Int ExtractBit(1, 5)

Pobiera bit z określonego miejsca w liczbie całkowitej. Zwraca liczbę całkowitą 0 lub 1 odpowiadającą wartości bitu w tym miejscu.

ExtractBit([Source Number], [Digits])

FLOOR

FLOOR(Profit)

Zaokrągla wyrażenie niecałkowitoliczbowe do najbliższej najmniejszej liczby całkowitej. Jeśli wynikiem wyrażenia liczbowego jest liczba całkowita, to funkcja FLOOR zwraca tę liczbę całkowitą.

FLOOR(expr)

LOG

LOG(1)

Oblicza logarytm naturalny wartości wyrażenia.

expr jest dowolnym wyrażeniem dającym w wyniku wartość liczbową.

LOG(expr)

LOG10

LOG10(1)

Oblicza logarytm dziesiętny wartości wyrażenia.

expr jest dowolnym wyrażeniem dającym w wyniku wartość liczbową.

LOG10(expr)

MOD

MOD(10, 3)

Dzieli pierwsze wyrażenie liczbowe przez drugie wyrażenie liczbowe i zwraca resztę z dzielenia.

MOD(expr1, expr2)

PI

PI()

Zwraca wartość (stałą) liczby pi.

PI()

POWER

POWER(Profit, 2)

Podnosi pierwsze wyrażenie liczbowe do potęgi określonej przez drugie wyrażenie liczbowe.

POWER(expr1, expr2)

RADIANS

RADIANS(30)

Przekształca wartość wyrażenia ze stopni na radiany.

expr jest dowolnym wyrażeniem dającym w wyniku wartość liczbową.

RADIANS(expr)

RAND

RAND()

Zwraca liczbę pseudolosową z przedziału od 0 do 1.

RAND()

RANDFromSeed

RAND(2)

Zwraca liczbę pseudolosową na podstawie podanej wartości inicjalizującej. Dla danej wartości inicjalizującej jest generowany ten sam zbiór liczb losowych.

RAND(expr)

ROUND

ROUND(2.166000, 2)

Zaokrągla wyrażenie liczbowe z dokładnością do n cyfr.

expr jest dowolnym wyrażeniem dającym w wyniku wartość liczbową.

integer jest dowolną dodatnią liczbą całkowitą określającą liczbę cyfr precyzji.

ROUND(expr, integer)

SIGN

SIGN(Profit)

Zwraca:

  • 1, jeśli wynikiem wyrażenia liczbowego jest liczba dodatnia

  • -1, jeśli wynikiem wyrażenia liczbowego jest liczba ujemna

  • 0, jeśli wynikiem wyrażenia liczbowego jest zero

SIGN(expr)

SIN

SIN(1)

Oblicza sinus wyrażenia liczbowego.

SIN(expr)

SQRT

SQRT(7)

Oblicza pierwiastek kwadratowy z wyrażenia liczbowego będącego argumentem. Wartością wyrażenia liczbowego musi być liczba nieujemna.

SQRT(expr)

TAN

TAN(1)

Oblicza tangens wyrażenia liczbowego.

expr jest dowolnym wyrażeniem dającym w wyniku wartość liczbową.

TAN(expr)

TRUNCATE

TRUNCATE(45.12345, 2)

Przycina liczbę dziesiętną, zwracając określoną liczbę miejsc po separatorze części dziesiętnej.

expr jest dowolnym wyrażeniem dającym w wyniku wartość liczbową.

integer jest dowolną dodatnią liczbą całkowitą reprezentującą zwracaną liczbę znaków, z prawej strony separatora części dziesiętnej.

TRUNCATE(expr, integer)

Funkcje agregacji kumulacyjnej

Funkcje agregacji kumulacyjnej wykonują operacje na wielu wartościach w celu uzyskania wyników podsumowujących.

Funkcja Przykład Opis Składnia

MAVG

 

Oblicza średnią ruchomą dla ostatnich n wierszy danych w zbiorze wyników, włącznie z wierszem bieżącym.

expr jest dowolnym wyrażeniem dającym w wyniku wartość liczbową. integer jest dowolną dodatnią liczbą całkowitą. Reprezentuje średnią z ostatnich n wierszy danych.

MAVG(expr, integer)

MSUM

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

Oblicza sumę ruchomą dla ostatnich n wierszy danych, włącznie z wierszem bieżącym.

expr jest dowolnym wyrażeniem dającym w wyniku wartość liczbową. integer jest dowolną dodatnią liczbą całkowitą. Reprezentuje sumę z ostatnich n wierszy danych.

MSUM(expr, integer)

RSUM

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

Oblicza sumę kumulacyjną opartą na rekordach napotkanych do danego momentu.

expr jest dowolnym wyrażeniem dającym w wyniku wartość liczbową.

RSUM(expr)

RCOUNT

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

Przyjmuje jako wejście zbiór rekordów i zlicza liczbę rekordów napotkanych do danego momentu.

expr jest wyrażeniem o dowolnym typie danych.

RCOUNT(expr)

RMAX

SELECT month, profit,RMAX(profit) from sales_subject_area

Przyjmuje jako wejście zbiór rekordów i pokazuje maksymalną wartość na podstawie rekordów napotkanych do danego momentu.

expr jest wyrażeniem o dowolnym typie danych.

RMAX(expr)

RMIN

select month, profit,RMIN(profit) from sales_subject_area

Przyjmuje jako wejście zbiór rekordów i pokazuje minimalną wartość na podstawie rekordów napotkanych do danego momentu.

expr jest wyrażeniem o dowolnym typie danych.

RMIN(expr)

Funkcje przestrzenne

Funkcje przestrzenne umożliwiają wykonywanie analiz geograficznych podczas modelowania danych. Na przykład można obliczyć odległość między dwoma obszarami geograficznymi, określanymi jako kształty (shape) lub wielokąty (polygon).

Uwaga:

Tych funkcji przestrzennych nie można używać w niestandardowych obliczeniach dla skoroszytów wizualizacji.
Funkcja Przykład Opis Składnia
GeometryArea

GeometryArea(kształt)

Oblicza obszar zajmowany przez kształt.

GeometryArea(kształt)

GeometryDistance

GeometryDistance(TRIP_START, TRIP_END)

Oblicza odległość między dwoma kształtami.

GeometryDistance(kształt 1, kształt 2)

GeometryLength

GeometryLength(kształt)

Oblicza obwód kształtu.

GeometryLength(kształt)

GeometryRelate

GeometryRelate(TRIP_START, TRIP_END)

Ustala, czy jeden kształt zawiera się w drugim. Zwraca wartość napisową (varchar) "TRUE" lub "FALSE".

GeometryRelate(kształt 1, kształt 2)

GeometryWithinDistance

GeometryWithinDistance(TRIP_START, TRIP_END, 500)

Ustala, czy odległość między dwoma kształtami zawiera się w określonej wartości. Zwraca wartość napisową (varchar) "TRUE" lub "FALSE".

GeometryWithinDistance(Shape1, Shape2, DistanceInFloat)

Funkcje napisowe

Funkcje napisowe umożliwiają wykonywanie różnych operacji na napisach. Operują na wartościach napisowych.

Funkcja Przykład Opis Składnia

ASCII

ASCII('a')

Przekształca jednoznakowy napis w odpowiadający mu kod ASCII (od 0 do 255). Jeśli wynikiem wyrażenia znakowego będzie więcej niż jeden znak, to zostanie zwrócony kod ASCII odpowiadający pierwszemu znakowi.

expr jest dowolnym wyrażeniem dającym w wyniku napis.

ASCII(expr)

BIT_LENGTH

BIT_LENGTH('abcdef')

Zwraca długość podanego napisu wyrażoną w bitach. Każdy znak Unicode składa się z dwóch bajtów, czyli z 16 bitów.

expr jest dowolnym wyrażeniem dającym w wyniku napis.

BIT_LENGTH(expr)

CHAR

CHAR(35)

Przekształca wartość liczbową z przedziału od 0 do 255 w znak odpowiadający podanemu kodowi ASCII.

expr jest dowolnym wyrażeniem dającym w wyniku wartość liczbową z przedziału od 0 do 255.

CHAR(expr)

CHAR_LENGTH

CHAR_LENGTH(Customer_Name)

Zwraca długość podanego napisu wyrażoną liczbą znaków. Przy ustalaniu długości nie są uwzględniane początkowe ani końcowe spacje.

expr jest dowolnym wyrażeniem dającym w wyniku napis.

CHAR_LENGTH(expr)

CONCAT

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

Łączy dwa napisy.

expr są rozdzielonymi przecinkiem wyrażeniami dającymi w wyniku napis.

Z funkcją CONCAT trzeba używać danych nieprzetworzonych, a nie danych sformatowanych.

CONCAT(expr1, expr2)

INSERT

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

Wstawia podany napis w określone miejsce w drugim napisie.

expr1 jest dowolnym wyrażeniem dającym w wyniku napis. Identyfikuje docelowy napis.

integer1 jest dowolną dodatnią liczbą całkowitą reprezentującą liczbę znaków liczoną od początku napisu, określającą miejsce, w którym ma zostać wstawiony drugi napis.

integer2 jest dowolną dodatnią liczbą całkowitą reprezentującą liczbę znaków w napisie docelowym, która ma zostać zastąpiona przez drugi napis.

expr2 jest dowolnym wyrażeniem dającym w wyniku napis. Identyfikuje napis, który ma zostać wstawiony do docelowego napisu.

INSERT(expr1, integer1, integer2, expr2)

LEFT

SELECT LEFT('123456', 3) FROM table

Zwraca określoną liczbę początkowych znaków napisu (z lewej strony).

expr jest dowolnym wyrażeniem dającym w wyniku napis

integer jest dowolną dodatnią liczbą całkowitą reprezentującą zwracaną liczbę znaków, liczoną od początku (od lewej strony) napisu.

LEFT(expr, integer)

LENGTH

LENGTH(Customer_Name)

Zwraca długość podanego napisu wyrażoną liczbą znaków. Pomijane są wszystkie końcowe znaki puste.

expr jest dowolnym wyrażeniem dającym w wyniku napis.

LENGTH(expr)

LOCATE

LOCATE('d' 'abcdef')

Zwraca wartość określającą liczbowo pozycję napisu w innym napisie. Jeśli szukany napis nie zostanie znaleziony w przeszukiwanym napisie, to zostanie zwrócona wartość 0 (zero).

expr1 jest dowolnym wyrażeniem dającym w wyniku napis. Identyfikuje szukany napis.

expr2 jest dowolnym wyrażeniem dającym w wyniku napis.

Identyfikuje przeszukiwany napis.

LOCATE(expr1, expr2)

LOCATEN

LOCATEN('d' 'abcdef', 3)

Podobnie jak LOCATE, zwraca wartość określającą liczbowo pozycję napisu w innym napisie. LOCATEN zawiera argument będący liczbą całkowitą, za pomocą którego można określić pozycję, od której ma się rozpocząć wyszukiwanie.

expr1 jest dowolnym wyrażeniem dającym w wyniku napis. Identyfikuje szukany napis.

expr2 jest dowolnym wyrażeniem dającym w wyniku napis. Identyfikuje przeszukiwany napis.

integer jest dowolną dodatnią (niezerową) liczbą całkowitą reprezentującą pozycję, od której ma zostać rozpoczęte wyszukiwanie napisu.

LOCATEN(expr1, expr2, integer)

LOWER

LOWER(Customer_Name)

Przekształca litery napisu na małe.

expr jest dowolnym wyrażeniem dającym w wyniku napis.

LOWER(expr)

OCTET_LENGTH

OCTET_LENGTH('abcdef')

Zwraca długość podanego napisu wyrażoną w bajtach.

expr jest dowolnym wyrażeniem dającym w wyniku napis.

OCTET_LENGTH(expr)

POSITION

POSITION('d', 'abcdef')

Zwraca wartość określającą liczbowo pozycję wyrażenia strExpr1 w wyrażeniu znakowym. Jeśli strExpr1 nie zostanie znalezione, zostanie zwrócona wartość 0 (zero).

expr1 jest dowolnym wyrażeniem dającym w wyniku napis. Identyfikuje napis szukany w napisie docelowym. Na przykład "d".

expr2 jest dowolnym wyrażeniem dającym w wyniku napis. Identyfikuje przeszukiwany napis docelowy. Na przykład "abcdef".

POSITION(expr1, expr2)

REPEAT

REPEAT('abc', 4)

Powtarza podane wyrażenie n razy.

expr jest dowolnym wyrażeniem dającym w wyniku napis

integer jest dowolną dodatnią (niezerową) liczbą całkowitą reprezentującą liczbę powtórzeń napisu.

REPEAT(expr, integer)

REPLACE

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

Zastępuje jeden lub więcej znaków z podanego wyrażenia liczbowego jednym lub większą liczbą innych znaków.

expr1 jest dowolnym wyrażeniem dającym w wyniku napis. Jest to napis, w którym mają zostać zastąpione znaki.

expr2 jest dowolnym wyrażeniem dającym w wyniku napis. Ten drugi napis identyfikuje znaki z pierwszego napisu, które mają zostać zastąpione.

expr3 jest dowolnym wyrażeniem dającym w wyniku napis. Ten trzeci napis określa znaki, którymi mają zostać zastąpione znaki w pierwszym napisie.

REPLACE(expr1, expr2, expr3)

RIGHT

SELECT RIGHT('123456', 3) FROM table

Zwraca określoną liczbę końcowych znaków napisów (z prawej strony).

expr jest dowolnym wyrażeniem dającym w wyniku napis.

integer jest dowolną dodatnią liczbą całkowitą reprezentującą zwracaną liczbę znaków, liczoną od końca (od prawej strony) napisu.

RIGHT(expr, integer)

SPACE

SPACE(2)

Wstawia spacje.

integer jest dowolną dodatnią liczbą całkowitą określającą liczbę wstawianych spacji.

SPACE(expr)

SUBSTRING

SUBSTRING('abcdef' FROM 2)

Tworzy nowy napis, zaczynając od określonej pozycji początkowej w napisie pierwotnym.

expr jest dowolnym wyrażeniem dającym w wyniku napis.

startPos jest dowolną dodatnią liczbą całkowitą reprezentującą liczbę znaków liczoną od początku napisu, określającą miejsce, w którym rozpoczyna się napis wynikowy.

SUBSTRING([SourceString] FROM [StartPostition])

SUBSTRINGN

SUBSTRING('abcdef' FROM 2 FOR 3)

Podobnie jak SUBSTRING, tworzy nowy napis, zaczynając od określonej pozycji początkowej w napisie pierwotnym.

SUBSTRINGN zawiera argument będący liczbą całkowitą, za pomocą którego można długość nowego napisu, wyrażoną w znakach.

expr jest dowolnym wyrażeniem dającym w wyniku napis.

startPos jest dowolną dodatnią liczbą całkowitą reprezentującą liczbę znaków liczoną od początku napisu, określającą miejsce, w którym rozpoczyna się napis wynikowy.

SUBSTRING(expr FROM startPos FOR length)

TrimBoth

Trim(BOTH '_' FROM '_abcdef_')

Usuwa z napisu podane początkowe i końcowe znaki.

char jest dowolnym znakiem. Jeśli ta specyfikacja zostanie pominięta (i wymagane apostrofy), zostanie domyślnie użyta spacja.

expr jest dowolnym wyrażeniem dającym w wyniku napis.

TRIM(BOTH char FROM expr)

TRIMLEADING

TRIM(LEADING '_' FROM '_abcdef')

Usuwa z napisu podane początkowe znaki.

char jest dowolnym znakiem. Jeśli ta specyfikacja zostanie pominięta (i wymagane apostrofy), zostanie domyślnie użyta spacja.

expr jest dowolnym wyrażeniem dającym w wyniku napis.

TRIM(LEADING char FROM expr)

TRIMTRAILING

TRIM(TRAILING '_' FROM 'abcdef_')

Usuwa z napisu podane końcowe znaki.

char jest dowolnym znakiem. Jeśli ta specyfikacja zostanie pominięta (i wymagane apostrofy), zostanie domyślnie użyta spacja.

expr jest dowolnym wyrażeniem dającym w wyniku napis.

TRIM(TRAILING char FROM expr)

UPPER

UPPER(Customer_Name)

Przekształca litery napisu na wielkie.

expr jest dowolnym wyrażeniem dającym w wyniku napis.

UPPER(expr)

Wskazówki dotyczące używania funkcji LISTAGG w funkcjach napisowych

Oto kilka wskazówek dotyczących używania funkcji LISTAGG, które pomogą uzyskać najlepsze wyniki w zakresie obsługi napisów w skoroszytach. Na przykład można utworzyć napis zawierający wszystkie miasta z kolumny danych.

Konkatenacja wielu wartości:

Funkcja LISTAGG umożliwia połączenie wielu wartości w jedną komórkę i jeden wiersz.

LISTAGG([DISTINCT] <column to concatenate> BY <grouping column>) ON OVERFLOW TRUNCATE
  • DISTINCT - jeśli wartości nie są unikatowe, należy użyć tego argumentu w celu usunięcia zduplikowanych wartości.
  • ON OVERFLOW TRUNCATE - jeśli wynik przekracza maksymalną dozwoloną długość, należy użyć tego argumentu w celu obcięcia zwracanego napisu.
Przykładowe dane
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

Przykładowe polecenia i wyniki

LISTAGG(City, ', '); dane wyjściowe: "New York, New York, Boston, Salem, Buffalo, Buffalo, Albany"

LISTAGG(DISTINCT City, ', '); dane wyjściowe: "New York, Boston, Salem, Buffalo Albany"

LISTAGG(City, ', ' ON OVERFLOW TRUNCATE '...'); dane wyjściowe: "New York, New York, Boston, Salem, Buffalo, ..."

Funkcje systemowe

Funkcja systemowa USER zwraca wartości związane z sesją. Na przykład nazwę użytkownika, której bieżący użytkownik użył do zalogowania się.

Funkcja Przykład Opis Składnia

DATABASE

 

Zwraca nazwę obszaru tematycznego, do którego bieżący użytkownik jest zalogowany.

DATABASE()

USER

 

Zwraca nazwę użytkownika dla modelu semantycznego, do którego bieżący użytkownik jest zalogowany.

USER()

Funkcje ciągów czasowych

Funkcje ciągów czasowych umożliwiają agregowanie i prognozowanie danych na podstawie wymiarów czasu. Na przykład za pomocą funkcji AGO można obliczyć przychód z okresu wypadającego rok wcześniej.

Elementy wymiarów "czas" muszą być na poziomie danej funkcji lub poniżej tego poziomu. Z tego powodu kolumny jednoznacznie identyfikujące elementy na danym poziomie lub poniżej tego poziomu muszą wystąpić w zapytaniu.

Funkcja Przykład Opis Składnia

AGO

SELECT Year_ID, AGO(sales, year, 1)

Umożliwia obliczenie zagregowanej wartości miary w wybranym okresie w przeszłości. Na przykład, aby obliczyć przychód z miesiąca wypadającego rok wcześniej, należy użyć funkcji AGO(Revenue, Year, 1, SHIP_MONTH). Aby obliczyć przychody kwartalne w ostatnim kwartale, należy użyć funkcji AGO(Revenue, Quarter, 1).

AGO(MEASURE, TIME_LEVEL, OFFSET)

Gdzie:

  • MEASURE reprezentuje miarę do obliczenia, na przykład przychód.
  • TIME_LEVEL reprezentuje przedział czasowy, którego wartością musi być "Year", "Quarter", "Month", "Week" lub "Day".
  • OFFSET reprezentuje liczbę przedziałów czasowych, o które należy się cofnąć w celu wykonania obliczeń, na przykład "1" będzie oznaczać jeden rok.

PERIODROLLING

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

Oblicza agregowaną wartość miary w okresie rozpoczynającym się x przedziałów czasu i kończącym się y przedziałów czasu względem bieżącego czasu. Na przykład funkcja PERIODROLLING może obliczyć wielkość sprzedaży dla okresu rozpoczynającego się kwartał wcześniej i kończącego się kwartał później od bieżącego kwartału.

PERIODROLLING(measure, x [,y])

Gdzie:

  • MEASURE reprezentuje nazwę kolumny miary.
  • X jest liczbą całkowitą reprezentującą przesunięcie względem bieżącego czasu.
  • Y jest liczbą całkowitą reprezentującą liczbę jednostek czasu, dla których funkcja będzie obliczana.
  • HIERARCHY jest opcjonalnym argumentem reprezentującym nazwę hierarchii w wymiarze "czas", np. YR, MON, DAY, który ma być używany do obliczania okna czasowego.

TODATE

SELECT Year_ID, Month_ID, TODATE (sales, year)

Umożliwia obliczenie zagregowanej wartości miary od początku okresu do ostatniego okresu, na przykład mogą to być obliczenia dotyczące okresu od początku roku do danego dnia.

Na przykład, aby obliczyć wartość sprzedaży od początku roku do danego dnia, należy użyć funkcji TODATE(sales, year).

TODATE(MEASURE, TIME_LEVEL)

Gdzie:

  • MEASURE reprezentuje wyrażenie odwołujące się do co najmniej jednej kolumny miary, na przykład sprzedaż.
  • TIME_LEVEL reprezentuje przedział czasowy, którego wartością musi być "Year", "Quarter", "Month", "Week" lub "Day".