Funkcje specyficzne dla dostawcy Stałe Stała to ustalona wartość, którą można wykorzystać w wyrażeniu. Operatory Operatory określają, jaka operacja zostanie wykonana na wartościach znajdujących się z każdej strony operatora. Operatory, podobnie jak funkcje, wykonują operacje na elementach danych i zwracają wynik. data Wstawia bieżącą datę systemową. data-godzina Wstawia bieżącą datę i godzinę systemową. czas ze strefą czasową Wstawia czas zerowy ze strefą czasową. znacznik czasu ze strefą czasową Wstawia przykład znacznika czasu ze strefą czasową. Wstawia wartość 'fałsz'. przedział Wstawia przedział zerowy: 000 00:00:00.000. przedział roczny Wstawia zerowy przedział roczny: 0 lat. przedział miesięczny Wstawia zerowy przedział miesięczny: 0 miesięcy. przedział rok-miesiąc Wstawia zerowy przedział rok-miesiąc: 0000-00 lat i miesięcy. przedział dzienny Wstawia zerowy przedział dzienny: 0 dni. przedział godzinowy Wstawia zerowy przedział godzinowy: 0 godzin. przedział minutowy Wstawia zerowy przedział minutowy: 0 minut. przedział sekundowy Wstawia zerowy przedział sekundowy: 0 sekund. przedział dzień-godzina Wstawia zerowy przedział dzień-godzina: 0 00 dni z dokładnością do godzin. przedział dzień-minuta Wstawia zerowy przedział dzień-minuta: 0 00:00 dni z dokładnością do minut. przedział dzień-sekunda Wstawia zerowy przedział dzień-sekunda: 0 00:00:00.000000000 dni z dokładnością do sekund. przedział godzina-minuta Wstawia zerowy przedział godzina-minuta: 00:00 godzin z dokładnością do minut. przedział godzina-sekunda Wstawia zerowy przedział godzina-sekunda: 00:00:00.000000000 godzin z dokładnością do sekund. przedział minuta-sekunda Wstawia zerowy przedział minuta-sekunda: 00:00.000000000 minut z dokładnością do sekund. Wstawia wartość "null", jeśli warunki wyrażenia nie zostaną spełnione. liczba Wstawia 0, które można zastąpić nową wartością numeryczną. łańcuch Wstawia pusty łańcuch w postaci dwóch apostrofów, pomiędzy którymi można wpisać łańcuch. godzina Wstawia bieżącą godzinę systemową. Wstawia wartość rzeczywistą.
Ustala początek wyrażenia. ( wyrażenie ) Ustala koniec wyrażenia. ( wyrażenie ) Mnoży dwie wartości numeryczne. wartość1 * wartość2 , Oddziela składniki wyrażenia. wyrażenie ( parametr1; parametr2 ) Dzieli dwie wartości numeryczne. wartość1 / wartość2 Łączy łańcuchy. łańcuch1 || łańcuch2 Dodaje dwie wartości numeryczne. wartość1 + wartość2 Odejmuje dwie wartości numeryczne lub zmienia znak wartości numerycznej na minus. wartość1 - wartość2 lub - wartość Porównuje wartości reprezentowane przez "wartość1" z argumentem "wartość2" i wyszukuje wartości mniejsze od "wartość2". wartość1 < wartość2 Porównuje wartości reprezentowane przez "wartość1" z argumentem "wartość2" i wyszukuje wartości mniejsze lub równe "wartość2". wartość1 <= wartość2 Porównuje wartości reprezentowane przez "wartość1" z argumentem "wartość2" i wyszukuje wartości różne od "wartość2". wartość1 <> wartość2 Porównuje wartości reprezentowane przez "wartość1" z argumentem "wartość2" i wyszukuje wartości równe "wartość2". wartość1 = wartość2 Porównuje wartości reprezentowane przez "wartość1" z argumentem "wartość2" i wyszukuje wartości większe od "wartość2". wartość1 > wartość2 Oddziela składniki w wyrażeniu elementów literałów. [przestrzeń_nazw].[wymiar].[hierarchia].[poziom]->[L1] Porównuje wartości reprezentowane przez "wartość1" z argumentem "wartość2" i wyszukuje wartości większe lub równe "wartość2". wartość1 >= wartość2 Zwraca wartość "true", jeśli warunki po obu stronach wyrażenia są spełnione. argument1 and argument2 Działa z wyrażeniami podsumowującymi w celu zdefiniowania zakresu, który ma zostać dostosowany na podstawie kolumn grupowania w zapytaniu. Zakres jest zależny od kontekstu. funkcja_agregująca ( wyrażenie AUTO ) Określa, czy wartość mieści się w danym zakresie. wyrażenie between wartość1 and wartość2 Przykład: [Przychód] between 200 and 300 Wynik: Zwraca liczbę wyników, których przychód mieści się w przedziale pomiędzy 200 a 300. Revenue Between ---- ---- $332.06 false $230.55 true $107.94 false Działa z klauzulami when, then, else i end. Case określa początek określonej sytuacji, w której zdefiniowano czynności when, then i else. wyrażenie case { when wyrażenie then wyrażenie } [ else wyrażenie ] end Ustala, czy "łańcuch1" zawiera "łańcuch2". W tej składni obsługiwane są oba metaznaki: znak procenta (%) reprezentuje zero, jeden lub wiele znaków, a znak podkreślenia (_) reprezentuje dowolny znak. Opcjonalne słowo kluczowe LITERAL określa sposób interpretacji znaków '%' i '_'. Gdy słowo LITERAL jest obecne, znaki '%' i '_' nie są traktowane jako metaznaki (patrz przykłady 3 i 5). W przeciwnym razie, przy braku słowa kluczowego LITERAL, znaki '%' i '_' pełnią rolę metaznaków (patrz przykłady 1, 2 i 4). string1 contains [LITERAL] string2 Przykład 1: [PRODUCT_LINE] contains 'door' Wynik 1: Outdoor Equipment Przykład 2: [PRODUCT_LINE] contains 'Golf%' Wynik 2: Golf Equipment Przykład 3: [PRODUCT_LINE] contains literal 'Golf%' Wynik 3: Golf% Przykład 4: [PRODUCT_LINE] contains 'Current_Year%' Wynik 4: Current Year Price, Current Year Price%, Current_Year Price%. Przykład 5: [PRODUCT_LINE] contains literal 'Current_Year%' Wynik 5: Current_Year%. Słowo kluczowe, które może zostać wykorzystane jako pierwszy argument funkcji podsumowania elementu. Ta funkcja pojawia się w przykładowym raporcie Przychód całkowity według kraju dostępnym w pakiecie Hurtownia danych WIO (zapytanie). funkcja_agregująca ( currentMeasure within set wyrażenie ) current_date Zwraca bieżącą datę bazy danych. current_date Działa z konstrukcją lookup. lookup (....) in (....) default (....) Słowo kluczowe używane w wyrażeniu agregującym w celu włączenia tylko różniących się wystąpień wartości. Zobacz także funkcję unique. distinct elemDanych Przykład: count ( distinct [OrderDetailQuantity] ) Wynik: 1704 Działa z konstrukcjami if lub case. Jeżeli warunek if nie jest spełniony lub wyrażenie case nie jest prawdziwe, wykonywane jest wyrażenie else. Ta funkcja pojawia się w przykładowym raporcie 10 najlepszych detalistów w 2005 roku dostępnym w pakiecie Hurtownia danych WIO (analiza). if ( warunek ) then .... else ( wyrażenie ) , lub case .... else ( wyrażenie ) end Wskazuje koniec konstrukcji case lub when. case .... end Ustala, czy "łańcuch1" kończy się łańcuchem "łańcuch2". W tej składni obsługiwane są oba metaznaki: znak procenta (%) reprezentuje zero, jeden lub wiele znaków, a znak podkreślenia (_) reprezentuje dowolny znak. Opcjonalne słowo kluczowe LITERAL określa sposób interpretacji znaków '%' i '_'. Gdy słowo LITERAL jest obecne, znaki '%' i '_' nie są traktowane jako metaznaki (patrz przykłady 3 i 5). W przeciwnym razie, przy braku słowa kluczowego LITERAL, znaki '%' i '_' pełnią rolę metaznaków (patrz przykłady 1, 2 i 4). string1 ends with [LITERAL] string2 Przykład 1: [PRODUCT_LINE] ends with 'Equipment' Wynik 1: Camping Equipment, Golf Equipment Przykład 2: [PRODUCT_LINE] ends with '%Equipment' Wynik 2: Golf Equipment, Camping Equipment Przykład 3: [PRODUCT_LINE] ends with literal 'Equipment%' Wynik 3: Equipment% Przykład 4: [PRODUCT_LINE] ends with '%Price' Wynik 4: Product Price, Current_Year Price Przykład 5: [PRODUCT_LINE] ends with literal '%Price' Wynik 5: %Price Określa, czy "łańcuch1" pasuje do wzorca "łańcuch2", przy czym opcjonalny "znak" umożliwia poprzedzanie konkretnych znaków w łańcuchu wzorca. łańcuch1 LIKE łańcuch2 [ ESCAPE znak ] Przykład: [PRODUCT_LINE] like 'G%' Wynik: Wszystkie linie produktów zaczynające się od 'G'. Przykład: [PRODUCT_LINE] like '%Ga%' escape 'a' Wynik: Wszystkie linie produktów kończące się na 'G%'. Działa z wyrażeniami sumującymi w celu zdefiniowania zakresu agregacji w zapytaniu. funkcja_agregująca ( wyrażenie for wyrażenie { ; wyrażenie } ) Działa z wyrażeniami sumującymi w celu zdefiniowania zakresu, który ma zostać dostosowany na podstawie podzbioru kolumn grupowania w zapytaniu. Odpowiada klauzuli for. funkcja_agregująca ( wyrażenie for ANY wyrażenie { ; wyrażenie } ) Działa z wyrażeniami sumującymi w celu zdefiniowania zakresu, którym mają zostać wszystkie określone kolumny grupowania w zapytaniu. Zobacz także klauzulę for. funkcja_agregująca ( wyrażenie for ALL wyrażenie { ; wyrażenie } ) Działa z wyrażeniami sumującymi w celu ustawienia całego zapytania jako zakresu. Zobacz także klauzulę for. Ta funkcja pojawia się w przykładowym raporcie Zwroty produktów i zadowolenie klientów dostępnym w pakiecie Hurtownia danych WIO (analiza). funkcja_agregująca ( wyrażenie for report ) Działa z konstrukcjami then i else. If definiuje warunek; jeśli warunek if jest spełniony, stosowane jest wyrażenie then. Jeżeli warunek if nie jest spełniony, stosowane jest wyrażenie else. Ta funkcja pojawia się w przykładowym raporcie 10 najlepszych detalistów w 2005 roku dostępnym w pakiecie Hurtownia danych WIO (analiza). if ( warunek ) then ( wyrażenie ) else ( wyrażenie ) Określa, czy "wyrażenie1" znajduje się na danej liście wyrażeń. wyrażenie1 in ( lista_wyrażeń ) Określa, czy "wyrażenie1" znajduje się na danej liście wartości stałych lub zakresów. wyrażenie1 in_range { stała : stała [ , stała : stała ] } Przykład: [kod] in_range { 5 } Wynik: Jest to odpowiednik wyrażenia [kod] = 5. Przykład: [kod] in_range { 5: } Wynik: Jest to odpowiednik wyrażenia [kod] >= 5. Przykład: [kod] in_range { :5 } Wynik: Jest to odpowiednik wyrażenia [kod] <= 5. Przykład: [kod] in_range { 5:10 } Wynik: Jest to odpowiednik wyrażenia ( [kod] >= 5 and [kod] <= 10 ). Przykład: [kod] in_range { :5,10,20: } Wynik: Jest to odpowiednik wyrażenia ( [kod] <= 5 or [kod] = 10 or [kod] >= 20 ). Określa, czy "wartość" jest niezdefiniowana w danych. wartość is missing Określa, czy "wartość" jest niezdefiniowana w danych. wartość is null Określa, czy "wartość" została zdefiniowana w danych. wartość is not missing Określa, czy "wartość" została zdefiniowana w danych. wartość is not null Określa, czy "łańcuch1" pasuje do wzorca "łańcuch2", przy czym opcjonalny "znak" umożliwia poprzedzanie konkretnych znaków w łańcuchu wzorca. W tej składni obsługiwane są oba metaznaki: znak procenta (%) reprezentuje zero, jeden lub wiele znaków, a znak podkreślenia (_) reprezentuje dowolny znak. łańcuch1 LIKE łańcuch2 [ ESCAPE znak ] Przykład 1: [PRODUCT_LINE] like 'G%' Wynik 1: All product lines that start with 'G'. Przykład 2: [PRODUCT_LINE] like '%Ga%' escape 'a' Wynik 2: All the product lines that end with 'G%'. Przykład 3: [PRODUCT_LINE] like 'C_R_' Wynik 3: wszystkie linie produktów o nazwie CARS lub CARD. Przykład: lookup ( [Kraj]) in ( 'Kanada'--> ( [Cena katalogowa] * 0.60); 'Australia'--> ( [Cena katalogowa] * 0.80 ) ) default ( [Cena katalogowa] ) Wyszukuje i zamienia dane na wartość określoną przez użytkownika. Preferowane jest użycie konstrukcji case. lookup ( nazwa ) in ( wartość1 --> wartość2 ) default ( wyrażenie ) Zwraca wartość TRUE, gdy "argument" jest nieprawdziwy, lub FALSE, gdy "argument" jest prawdziwy. NOT argument Zwraca wartość TRUE, jeśli jeden z argumentów "argument1" lub "argument2" jest prawdziwy. argument1 or argument2 Wykonuje operację sumowania przed zastosowaniem filtru sumowania. funkcja_podsumowująca ([wyrażenie] prefilter) Przykład: total ( [Ilość] for report prefilter ) summaryFilter: total( [Ilość] for [NrProduktu] ) > 50000 Wynik: sumuje ilości w raporcie przed zastosowaniem filtru podsumowującego. PNo Total Total Total forPNo forRep forRep_Prefilter --------- -------- ---------- ------------------- 88 54928 298140 2215354 89 51126 298140 2215354 90 69996 298140 2215354 94 69004 298140 2215354 95 53086 298140 2215354 Oblicza liczbę wierszy wyprowadzonych przez zapytanie. Używaj z Count (). count ( ROWS ) Oblicza liczbę wierszy wyprowadzonych przez zapytanie. Używaj z Count (). count ( ROWS  [ wyrażenie ]) Ustala, czy "łańcuch1" rozpoczyna się od "łańcuch2". W tej składni obsługiwane są oba metaznaki: znak procenta (%) reprezentuje zero, jeden lub wiele znaków, a znak podkreślenia (_) reprezentuje dowolny znak. Opcjonalne słowo kluczowe LITERAL określa sposób interpretacji znaków '%' i '_'. Gdy słowo LITERAL jest obecne, znaki '%' i '_' nie są traktowane jako metaznaki (patrz przykłady 3 i 5). W przeciwnym razie, przy braku słowa kluczowego LITERAL, znaki '%' i '_' pełnią rolę metaznaków (patrz przykłady 1, 2 i 4). string1 starts with [LITERAL] string2 Przykład 1: [PRODUCT_LINE] starts with 'Golf' Wynik 1: Golf Equipment Przykład 2: [PRODUCT_LINE] starts with 'Outdoor%' Wynik 2: Outdoor Equipment Przykład 3: [PRODUCT_LINE] starts with literal 'Golf%' Wynik 3: Golf% Przykład 4: [PRODUCT_LINE] starts with 'Current_Year%' Wynik 4: Current Year Price, Current Year Price%, Current_Year Price% Przykład 5: [PRODUCT_LINE] starts with literal 'Current_Year%' Wynik 5: Current_Year% Działa z konstrukcjami if lub case. Jeżeli warunek if nie jest spełniony lub wyrażenie when nie jest prawdziwe, wówczas wykonywane jest wyrażenie then. Ta funkcja pojawia się w przykładowym raporcie 10 najlepszych detalistów w 2005 roku dostępnym w pakiecie Hurtownia danych WIO (analiza). if ( warunek ) then ..., lub case wyrażenie when wyrażenie then .... end Działa z konstrukcją case. Można zdefiniować warunki, które mają zostać spełnione, gdy wyrażenie WHEN będzie prawdziwe. case [wyrażenie] when ... end
Podsumowania Niniejsza lista zawiera predefiniowane funkcje, które zwracają pojedynczą wartość podsumowania dla grupy powiązanych wartości lub różną wartość podsumowania dla każdej instancji grupy powiązanych wartości. Zwraca obliczoną wartość za pomocą odpowiedniej funkcji agregującej na podstawie typu agregacji wyrażenia. Ta funkcja pojawia się w przykładowym raporcie Kwoty zabudżetowane w stosunku do rzeczywistych dostępnym w pakiecie Hurtownia danych WIO (analiza). aggregate ( wyrażenie [ auto ] ) aggregate ( wyrażenie for [ all|any ] expression { ; wyrażenie } ) aggregate ( wyrażenie for report ) Zwraca wartość średnią wybranych elementów danych. Distinct to alternatywne wyrażenie kompatybilne z wcześniejszymi wersjami produktu. average ( [ distinct ] wyrażenie [ auto ] ) average ( [ distinct ] wyrażenie for [ all|any ] wyrażenie { ; wyrażenie } ) average ( [ distinct ] wyrażenie for report ) Przykład: average ( Sprzedaż ) Wynik: Zwraca średnią z wszystkich wartości Sprzedaży. Zwraca liczbę wybranych elementów danych z wyłączeniem wartości null. Distinct to alternatywne wyrażenie kompatybilne z wcześniejszymi wersjami produktu. All jest obsługiwane wyłącznie w trybie DQM i pozwala uniknąć założenia podwójnego zliczania elementów danych w tabeli wymiarów. count ( [ all | distinct ] wyrażenie [ auto ] ) count ( [ all | distinct ] wyrażenie for [ all|any ] wyrażenie { ; wyrażenie } ) count ( [ all | distinct ] wyrażenie for report ) Przykład: count ( Sprzedaż ) Wynik: Zwraca całkowitą liczbę wpisów dla sprzedaży. Zwraca wartość maksymalną wybranych elementów danych. Distinct to alternatywne wyrażenie kompatybilne z wcześniejszymi wersjami produktu. maximum ( [ distinct ] wyrażenie [ auto ] ) maximum ( [ distinct ] wyrażenie for [ all|any ] wyrażenie { ; wyrażenie } ) maximum ( [ distinct ] wyrażenie for report ) Przykład: maximum ( Sprzedaż ) Wynik: Zwraca wartość maksymalną z wszystkich wartości sprzedaży. Zwraca wartość mediany wybranych elementów danych. median ( wyrażenie [ auto ] ) median ( wyrażenie for [ all|any ] wyrażenie { ; wyrażenie } ) median ( wyrażenie for report ) Zwraca wartość minimalną wybranych elementów danych. Distinct to alternatywne wyrażenie kompatybilne z wcześniejszymi wersjami produktu. minimum ( [ distinct ] wyrażenie [ auto ] ) minimum ( [ distinct ] wyrażenie for [ all|any ] wyrażenie { ; wyrażenie } ) minimum ( [ distinct ] wyrażenie for report ) Przykład: minimum ( Sprzedaż ) Wynik: Zwraca wartość minimalną z wszystkich wartości sprzedaży. Zwraca wartość średnią ruchomą obliczoną według wierszy dla danego zestawu wartości i określonej liczby wierszy. "<Opcja-for>" definiuje zakres funkcji. Opcja "at" definiuje poziom agregacji i może być używana tylko w kontekście relacyjnych źródeł danych. moving-average ( wyrażenie_numeryczne ; wyrażenie_numeryczne [ wyrażenie at { ; wyrażenie } ] [ <opcja-for> ] [ prefilter ] ) moving-average (  wyrażenie_numeryczne ; wyrażenie_numeryczne [ <opcja-for> ] [ prefilter ] ) <opcja-for> ::= wyrażenie for { ; wyrażenie }|for report|auto Przykład: moving-average ( Ilość ; 3 ) Wynik: Dla każdego wiersza funkcja zwraca ilość i średnią ruchomą dla bieżącego wiersza i poprzedzających go dwóch wierszy. Qty Moving-Average (Qty, 3) ------ ------------------------------------ 200 200 700 450 400 433.3333 200 433.3333 200 266.6667 500 300.0000 Zwraca sumę ruchomą obliczoną według wierszy dla danego zestawu wartości i określonej liczby wierszy. "<Opcja-for>" definiuje zakres funkcji. Opcja "at" definiuje poziom agregacji i może być używana tylko w kontekście relacyjnych źródeł danych. moving-total ( wyrażenie_numeryczne ; wyrażenie_numeryczne [ wyrażenie at { ; wyrażenie } ] [ <opcja-for> ] [ prefilter ] ) moving-total (  wyrażenie_numeryczne ; wyrażenie_numeryczne [ <opcja-for> ] [ prefilter ] ) <opcja-for> ::= wyrażenie for { ; wyrażenie }|for report|auto Przykład: moving-total ( Ilość ; 3 ) Wynik: Dla każdego wiersza funkcja zwraca ilość i sumę ruchomą dla bieżącego wiersza i poprzedzających go dwóch wierszy. Qty Moving-Total (Qty, 3) ------ -------------------------------- 200 200 700 900 400 1300 200 1300 200 800 500 900 Zwraca procent wartości sumy wybranych elementów danych. "<Opcja-for>" definiuje zakres funkcji. Opcja "at" definiuje poziom agregacji i może być używana tylko w kontekście relacyjnych źródeł danych. Ta funkcja pojawia się w przykładowym raporcie interaktywnym Kalkulacja wartości procentowych (wg lat). percentage ( wyrażenie_numeryczne [ wyrażenie at  { ; wyrażenie } ] [ <opcja-for> ] [ prefilter ] ) percentage (  wyrażenie_numeryczne [ <opcja-for> ] [ prefilter ] ) <opcja-for> ::= wyrażenie for { ; wyrażenie }|for report|auto Przykład: percentage ( Sprzedaż 98 ) Wynik: Funkcja zwraca procentową wartość całkowitej sprzedaży w roku 1998 przypadającą na każdego przedstawiciela handlowego. Employee Sales 98 Percentage --------- --------- ------------- Gibbons 60646 7.11% Flertjan 62523 7.35% Cornel 22396 2.63% Zwraca wartość na skali od 0 do 100, która oznacza procent rozkładu, który jest równy lub mniejszy od wybranych elementów danych. "<Opcja-for>" definiuje zakres funkcji. Opcja "at" definiuje poziom agregacji i może być używana tylko w kontekście relacyjnych źródeł danych. percentile ( wyrażenie_numeryczne [ wyrażenie at { ; wyrażenie } ] [ <opcja-for> ] [ prefilter ] ) percentile (  wyrażenie_numeryczne [ <opcja-for> ] [ prefilter ] ) <opcja-for> ::= wyrażenie for { ; wyrażenie }|for report|auto Przykład: percentile ( Sprzedaż 98 ) Wynik: Dla każdego wiersza funkcja zwraca procent wierszy równych lub mniejszych od wartości ilości w tym wierszu. Qty Percentile (Qty) ------ ----------------- 800 1 700 0.875 600 0.75 500 0.625 400 0.5 400 0.5 200 0.25 200 0.25 Zwraca klasyfikację wartości w zakresie podanym przez użytkownika. Zwraca liczby całkowite oznaczające dowolny zakres klasyfikacji, na przykład od 1 (najwyższy) do 100 (najniższy). "<Opcja-for>" definiuje zakres funkcji. Opcja "at" definiuje poziom agregacji i może być używana tylko w kontekście relacyjnych źródeł danych. quantile ( wyrażenie_numeryczne ; wyrażenie_numeryczne [ wyrażenie at { ; wyrażenie } ] [ <opcja-for> ] [ prefilter ] ) quantile (  wyrażenie_numeryczne ; wyrażenie_numeryczne [ <opcja-for> ] [ prefilter ] ) <opcja-for> ::= wyrażenie for { ; wyrażenie }|for report|auto Przykład: quantile ( Ilość ; 4 ) Wynik: Zwraca ilość, klasyfikację wartości ilości i wartości ilości w podziale na 4 grupy kwantyli (kwartyle). Qty Rank Quantile (Qty, 4) ------ ------- --------------- 800 1 1 700 2 1 600 3 2 500 4 2 400 5 3 400 5 3 200 7 4 200 7 4 Zwraca klasyfikację wartości przedstawioną w formie liczby całkowitej od 1 (najwyższa) do 4 (najniższa) w odniesieniu do grupy wartości. "<Opcja-for>" definiuje zakres funkcji. Opcja "at" definiuje poziom agregacji i może być używana tylko w kontekście relacyjnych źródeł danych. quartile ( wyrażenie_numeryczne [ wyrażenie at { ; wyrażenie } ] [ <opcja-for> ] [ prefilter ] ) quartile (  wyrażenie_numeryczne [ <opcja-for> ] [ prefilter ] ) <opcja-for> ::= wyrażenie for { ; wyrażenie }|for report|auto Przykład: quartile ( Ilość ) Wynik: Zwraca ilość i kwartyl wartości ilości przedstawiony w formie liczby całkowitej od 1 (najwyższa) do 4 (najniższa). Qty Quartile (Qty) ------ --------------------- 450 1 400 1 350 2 300 2 250 3 200 3 150 4 100 4 Zwraca wartość klasyfikacji wybranych elementów danych. Kolejność sortowania jest opcjonalna; domyślną kolejnością jest malejąca (DESC). Jeżeli co najmniej dwa wiersze osiągną tę samą wartość, powstanie luka w sekwencji wartości klasyfikacji (znana także klasyfikacją olimpijską). "<Opcja-for>" definiuje zakres funkcji. Opcja "at" definiuje poziom agregacji i może być używana tylko w kontekście relacyjnych źródeł danych. Distinct to alternatywne wyrażenie kompatybilne z wcześniejszymi wersjami produktu. Wartości Null są klasyfikowane jako ostatnie. Ta funkcja pojawia się w przykładowym raporcie 10 najlepszych detalistów w 2005 roku dostępnym w pakiecie Hurtownia danych WIO (analiza). rank ( wyrażenie [ ASC|DESC ] { ; wyrażenie [ ASC|DESC ] } [ wyrażenie at { ; wyrażenie } ] [ <opcja-for> ] [ prefilter ] ) rank ( [ distinct ] wyrażenie [ ASC|DESC ] { ; wyrażenie [ ASC|DESC ] } [ <opcja-for>] [ prefilter ] ) <opcja-for> ::= wyrażenie for { ; wyrażenie }|for report|auto Przykład: rank ( Sprzedaż 98 ) Wynik: Dla każdego wiersza funkcja zwraca wartość klasyfikacji sprzedaży w roku 1998 przypadającą na każdego przedstawiciela handlowego. Niektóre liczby są pomijane w przypadku, gdy wiersze osiągną tę samą wartość klasyfikacji. Employee Sales 98 Rank --------- --------- ------------ Gibbons 60000 1 Flertjan 50000 2 Cornel 50000 2 Smith 48000 4 Zwraca średnią bieżącą obliczoną według wierszy (łącznie z bieżącym wierszem) dla zestawu wartości. "<Opcja-for>" definiuje zakres funkcji. Opcja "at" definiuje poziom agregacji i może być używana tylko w kontekście relacyjnych źródeł danych. running-average ( wyrażenie_numeryczne [ wyrażenie at { ; wyrażenie } ] [ <opcja-for> ] [ prefilter ] ) running-average (  wyrażenie_numeryczne [ <opcja-for> ] [ prefilter ] ) <opcja-for> ::= wyrażenie for { ; wyrażenie }|for report|auto Przykład: running-average ( Ilość ) Wynik: Dla każdego wiersza funkcja zwraca ilość i średnią ruchomą dla bieżącego wiersza i wierszy go poprzedzających. Name Qty Avg Running-Average for name ------- ------ ------ ----------------------- Smith 7 5 7 Smith 3 5 5 Smith 6 5 5.33 Smith 4 5 5 Wong 3 4 3 Wong 5 4 4 Zwraca liczbę bieżącą obliczaną według wierszy (łącznie z bieżącym wierszem) dla zestawu wartości. "<Opcja-for>" definiuje zakres funkcji. Opcja "at" definiuje poziom agregacji i może być używana tylko w kontekście relacyjnych źródeł danych. running-count ( wyrażenie_numeryczne [ wyrażenie at { ; wyrażenie } ] [ <opcja-for> ] [ prefilter ] ) running-count (  wyrażenie_numeryczne [ <opcja-for> ] [ prefilter ] ) <opcja-for> ::= wyrażenie for { ; wyrażenie }|for report|auto Przykład: running-count ( Ilość ) Wynik: Dla każdego wiersza funkcja zwraca ilość i liczebność bieżącą dla pozycji bieżącego wiersza. Name Qty Count Running-Count for name ------- ------ --------- ------------------------ Smith 7 4 1 Smith 3 4 2 Smith 6 4 3 Smith 4 4 4 Wong 3 3 1 Wong 5 3 2 Zwraca różnicę bieżącą obliczaną według wierszy jako różnicę między wartością bieżącego i poprzedniego wiersza (łącznie z bieżącym wierszem) dla zestawu wartości. "<Opcja-for>" definiuje zakres funkcji. Opcja "at" definiuje poziom agregacji i może być używana tylko w kontekście relacyjnych źródeł danych. running-difference ( wyrażenie_numeryczne [ wyrażenie at { ; wyrażenie } ] [ <opcja-for> ] [ prefilter ] ) running-difference (  wyrażenie_numeryczne [ <opcja-for> ] [ prefilter ] ) <opcja-for> ::= wyrażenie for { ; wyrażenie }|for report|auto Przykład: running-difference ( Ilość ) Wynik: Dla każdego wiersza funkcja zwraca ilość i różnicę bieżącą między wartością bieżącego i poprzedniego wiersza. Name Qty Running-Difference for name ------- ------ --------------------------- Smith 7 NULL Smith 3 -4 Smith 6 3 Smith 4 -2 Wong 3 -1 Wong 5 2 Zwraca maksimum bieżące obliczone według wierszy (łącznie z bieżącym wierszem) dla zestawu wartości. "<Opcja-for>" definiuje zakres funkcji. Opcja "at" definiuje poziom agregacji i może być używana tylko w kontekście relacyjnych źródeł danych. running-maximum ( wyrażenie_numeryczne [ wyrażenie at { ; wyrażenie } ] [ <opcja-for> ] [ prefilter ] ) running-maximum (  wyrażenie_numeryczne [ <opcja-for> ] [ prefilter ] ) <opcja-for> ::= wyrażenie for { ; wyrażenie }|for report|auto Przykład: running-maximum ( Ilość ) Wynik: Dla każdego wiersza funkcja zwraca ilość i maksimum bieżące dla bieżącego wiersza i wierszy go poprzedzających. Name Qty Max Running-Maximum (Qty) for name ------- ------ ------ ------------------------- Smith 2 7 2 Smith 3 7 3 Smith 6 7 6 Smith 7 7 7 Wong 3 5 3 Wong 5 5 5 Zwraca minimum bieżące obliczane według wierszy (łącznie z bieżącym wierszem) dla zestawu wartości. "<Opcja-for>" definiuje zakres funkcji. Opcja "at" definiuje poziom agregacji i może być używana tylko w kontekście relacyjnych źródeł danych. running-minimum ( wyrażenie_numeryczne [ wyrażenie at { ; wyrażenie } ] [ <opcja-for> ] [ prefilter ] ) running-minimum (  wyrażenie_numeryczne [ <opcja-for> ] [ prefilter ] ) <opcja-for> ::= wyrażenie for { ; wyrażenie }|for report|auto Przykład: running-minimum ( Ilość ) Wynik: Dla każdego wiersza funkcja zwraca ilość i minimum bieżące dla bieżącego wiersza i wierszy go poprzedzających. Name Qty Min Running-Minimum (Qty) for name ------- ----- ------ -------------------------- Smith 7 2 7 Smith 3 2 3 Smith 6 2 3 Smith 2 2 2 Wong 4 3 4 Wong 5 3 4 Zwraca sumę bieżącą obliczoną według wierszy (łącznie z bieżącym wierszem) dla zestawu wartości. "<Opcja-for>" definiuje zakres funkcji. Opcja "at" definiuje poziom agregacji i może być używana tylko w kontekście relacyjnych źródeł danych. running-total ( wyrażenie_numeryczne [ wyrażenie at { ; wyrażenie } ] [ <opcja-for> ] [ prefilter ] ) running-total (  wyrażenie_numeryczne [ <opcja-for> ] [ prefilter ] ) <opcja-for> ::= wyrażenie for { ; wyrażenie }|for report|auto Przykład: running-total ( Ilość ) Wynik: Dla każdego wiersza funkcja zwraca ilość i sumę bieżącą dla bieżącego wiersza i wierszy go poprzedzających. Name Qty Total Running-Total (Qty) for name ------- ------ -------- ------------------------- Smith 2 18 2 Smith 3 18 5 Smith 6 18 11 Smith 7 18 18 Wong 3 12 3 Wong 5 12 8 Zwraca odchylenie standardowe wybranych elementów danych. standard-deviation ( wyrażenie [ auto ] ) standard-deviation ( wyrażenie for [ all|any ] expression { ; wyrażenie } ) standard-deviation ( wyrażenie for report ) Przykład: standard-deviation ( Koszt_produktu ) Wynik: Funkcja zwraca wartość oznaczającą odchylenie między kosztami produktu a średnim kosztem produktu. Oblicza odchylenie standardowe populacji i zwraca pierwiastek kwadratowy wariancji populacji. standard-deviation-pop ( wyrażenie [ auto ] ) standard-deviation-pop ( wyrażenie for [ all|any ] expression { ; wyrażenie } ) standard-deviation-pop ( wyrażenie for report ) Przykład: standard-deviation-pop ( Koszt_produktu ) Wynik: Funkcja zwraca wartość pierwiastka kwadratowego wariancji populacji. Oblicza odchylenie standardowe próbki i zwraca pierwiastek kwadratowy wariancji populacji. standard-deviation-samp ( wyrażenie [ auto ] ) standard-deviation-samp ( wyrażenie for [ all|any ] expression { ; wyrażenie } ) standard-deviation-samp ( wyrażenie for report ) Przykład: standard-deviation-samp ( Koszt_produktu ) Wynik: Funkcja zwraca wartość pierwiastka kwadratowego wariancji próbki. Zwraca klasyfikację wartości - Wysoką, Średnią lub Niską - w odniesieniu do grupy wartości. tertile ( wyrażenie [ auto ] ) tertile ( wyrażenie for [ all|any ] expression { ; wyrażenie } ) tertile ( wyrażenie for report ) Przykład: tertile ( Ilość ) Wynik: Funkcja zwraca ilość, kwantyl wartości ilości w podziale na tertyle oraz wartości ilości w podziale na tertyle. Qty Quantile (Qty, 3) Tertile (Qty) ------ ------------------------ ------------------ 800 1 H 700 1 H 500 2 M 400 2 M 200 3 L 200 3 L Zwraca sumę wybranych elementów danych. Distinct to alternatywne wyrażenie kompatybilne z wcześniejszymi wersjami produktu. Ta funkcja pojawia się w przykładowym raporcie Kwoty zabudżetowane w stosunku do rzeczywistych dostępnym w pakiecie Hurtownia danych WIO (analiza). total ( [ distinct ] wyrażenie [ auto ] ) total ( [ distinct ] wyrażenie for [ all|any ] wyrażenie { ; wyrażenie } ) total ( [ distinct ] wyrażenie for report ) Przykład: total ( Sprzedaż ) Wynik: Funkcja zwraca sumę wszystkich wartości sprzedaży. Funkcje statystyczne Ta lista zawiera predefiniowane funkcje podsumowujące o charakterze statystycznym. Zwraca wariancję wybranych elementów danych. variance ( wyrażenie [ auto ] ) variance ( wyrażenie for [ all|any ] expression { ; wyrażenie } ) variance ( wyrażenie for report ) Przykład: variance ( Koszt produktu ) Wynik: Funkcja zwraca wartość wskazującą, jak bardzo koszty produktu różnią się od średniego kosztu produktu. Zwraca wariancję populacji zestawu liczb po odrzuceniu wartości null w tym zestawie. variance-pop ( wyrażenie [ auto ] ) variance-pop ( wyrażenie for [ all|any ] expression { ; wyrażenie } ) variance-pop ( wyrażenie for report ) Przykład: variance-pop ( Ilość ) Wynik: Dla każdego wiersza funkcja zwraca wariancję populacji zestawu liczb po odrzuceniu wartości null w tym zestawie. Zwraca wariancję próbki zestawu liczb po odrzuceniu wartości null w tym zestawie. variance-samp (  wyrażenie [ auto ] ) variance-samp (  wyrażenie for [ all|any ] wyrażenie { ; expression } ) variance-samp (  wyrażenie for report ) Przykład: variance-samp ( Ilość ) Wynik: Dla każdego wiersza funkcja zwraca wariancję próbki zestawu liczb po odrzuceniu wartości null w tym zestawie. corr ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2  [ auto ] ) corr ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 for [ all|any ] wyrażenie { ; wyrażenie } ) corr ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 for report ) Zwraca współczynnik korelacji dla zestawu par liczbowych. Jest on obliczany w następujący sposób: COVAR_POP(wyrażenie_numeryczne1; wyrażenie_numeryczne2) / (STDDEV_POP(wyrażenie_numeryczne1) * STDDEV_POP(wyrażenie_numeryczne2)) Przykład: corr ( Koszt ;  Marża  for report) Wynik: współczynnik korelacji między parametrami Koszt a Marża. Cost Margin corr (Cost, Margin for report) ------- ---------- ----------------------------------------- 4 0.33 0.0872648 5 0.28 0.0872648 9.22 0.23 0.0872648 15.93 0.28 0.0872648 34.97 0.3 0.0872648 covariance-pop ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 ) covariance-pop ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 for [ all|any ] wyrażenie { ; wyrażenie } ) covariance-pop ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 for report ) Zwraca kowariancję populacji dla zestawu par liczbowych. Przykład: covariance-pop ( Koszt ;  Marża  for report) Wynik: kowariancja populacji między parametrami Koszt a Marża. Cost Margin covariance-pop (Cost, Margin for report) ------- ---------- --------------------------------------------------------- 4 0.33 0.032384 5 0.28 0.032384 9.22 0.23 0.032384 15.93 0.28 0.032384 34.97 0.3 0.032384 covariance-samp ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 ) covariance-samp ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 for [ all|any ] wyrażenie { ; wyrażenie } ) covariance-samp ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 for report ) Zwraca kowariancję próbki dla zestawu par liczbowych. Przykład: covariance-samp ( Koszt ;  Marża  for report) Wynik: kowariancja próbki między parametrami Koszt a Marża. Cost Margin covariance-samp (Cost, Margin for report) ------- ---------- ------------------------------------------------------------ 4 0.33 0.04048 5 0.28 0.04048 9.22 0.23 0.04048 15.93 0.28 0.04048 34.97 0.3 0.04048 regression-average-x ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 ) regression-average-x ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 for [ all|any ] wyrażenie { ; wyrażenie } ) regression-average-x ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 for report ) Zwraca średnią z niezależnej zmiennej (wyrażenie_numeryczne2) linii regresji. Przykład: regression-average-x ( Koszt ;  Marża  for report) Wynik: średnia z parametru Marża dla linii regresji dla parametrów Koszt i Marża. Cost Margin regression-average-x (Cost, Margin for report) ------- ---------- ----------------------------------------------------------------- 4 0.33 0.284 5 0.28 0.284 9.22 0.23 0.284 15.93 0.28 0.284 34.97 0.3 0.284 regression-average-y ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 ) regression-average-y ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 for [ all|any ] wyrażenie { ; wyrażenie } ) regression-average-y ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 for report ) Zwraca średnią z zależnej zmiennej (wyrażenie_numeryczne1) linii regresji. Przykład: regression-average-y ( Koszt ;  Marża  for report) Wynik: średnia z parametru Koszt dla linii regresji dla parametrów Koszt i Marża. Cost Margin regression-average-y (Cost, Margin for report) ------- ---------- ----------------------------------------------------------------- 4 0.33 13.824 5 0.28 13.824 9.22 0.23 13.824 15.93 0.28 13.824 34.97 0.3 13.824 regression-count ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 ) regression-count ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 for [ all|any ] wyrażenie { ; wyrażenie } ) regression-count ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 for report ) Zwraca liczbę wartości liczbowych różnych od null służących do dopasowania linii regresji. Przykład: regression-count ( Koszt ;  Marża  for report) Wynik: liczba wartości liczbowych różnych od null służących do dopasowania linii regresji dla parametrów Koszt i Marża. Cost Margin regression-count (Cost, Margin for report) ------- ---------- ----------------------------------------------------------- 4 0.33 5 5 0.28 5 9.22 0.23 5 15.93 0.28 5 34.97 0.3 5 regression-intercept ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 ) regression-intercept ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 for [ all|any ] wyrażenie { ; wyrażenie } ) regression-intercept ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 for report ) Zwraca przecięcie z osią y linii regresji. Jest ono obliczane w następujący sposób: AVG(wyrażenie_numeryczne1) - REGR_SLOPE(wyrażenie_numeryczne1; wyrażenie_numeryczne2) * AVG(wyrażenie_numeryczne2) Przykład: regression-intercept ( Koszt ;  Marża  for report) Wynik: obliczenie przecięcia z osią y linii regresji dla parametrów Koszt i Marża. Cost Margin regression-intercept (Cost, Margin for report) ------- ---------- ---------------------------------------------------------------- 4 0.33 5.18015038 5 0.28 5.18015038 9.22 0.23 5.18015038 15.93 0.28 5.18015038 34.97 0.3 5.18015038 regression-r2 ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 ) regression-r2 ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 for [ all|any ] wyrażenie { ; wyrażenie } ) regression-r2 ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 for report ) Zwraca współczynnik oznaczenia (znany także jako "R-kwadrat" lub "dokładność dopasowania") linii regresji. Ta wartość jest obliczana dla następujących warunków: IF VAR_POP(wyrażenie_numeryczne2) = 0 THEN NULL IF VAR_POP(wyrażenie_numeryczne1) = 0 AND VAR_POP(wyrażenie_numeryczne2) <> 0 THEN 1 IF VAR_POP(wyrażenie_numeryczne1) > 0 and VAR_POP(wyrażenie_numeryczne2) <> 0 THEN POWER(CORR (wyrażenie_numeryczne1; wyrażenie_numeryczne2)) Przykład: regression-r2 ( Koszt ;  Marża  for report) Wynik: współczynnik wyznaczania linii regresji dla parametrów Koszt i Marża. Cost Margin regression-r2 (Cost, Margin for report) ------- ---------- ------------------------------------------------------ 4 0.33 0.00761514 5 0.28 0.00761514 9.22 0.23 0.00761514 15.93 0.28 0.00761514 34.97 0.3 0.00761514 regression-slope ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 ) regression-slope ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 for [ all|any ] wyrażenie { ; wyrażenie } ) regression-slope ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 for report ) Zwraca nachylenie linii regresji. Jest ono obliczane w następujący sposób: COVAR_POP(wyrażenie_numeryczne1;wyrażenie_numeryczne2) / VAR_POP(wyrażenie_numeryczne2) Przykład: regression-slope ( Ilość ; Marża ) Wynik: nachylenie linii regresji dla parametrów Koszt i Marża. Cost Margin regression-slope (Cost, Margin for report) ------- ---------- ----------------------------------------------------------- 4 0.33 30.43609023 5 0.28 30.43609023 9.22 0.23 30.43609023 15.93 0.28 30.43609023 34.97 0.3 30.43609023 regression-sxx ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 ) regression-sxx ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 for [ all|any ] wyrażenie { ; wyrażenie } ) regression-sxx ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 for report ) Zwraca następujące obliczenie po wyeliminowaniu par NULL: REGR_COUNT(wyrażenie_numeryczne1; wyrażenie_numeryczne2) * VAR_POP(wyrażenie_numeryczne2) Przykład: regression-sxx ( Koszt ;  Marża  for report) Wynik: obliczenie sxx linii regresji dla parametrów Koszt i Marża. Cost Margin regression-sxx (Cost, Margin for report) ------- ---------- --------------------------------------------------------- 4 0.33 0.00532 5 0.28 0.00532 9.22 0.23 0.00532 15.93 0.28 0.00532 34.97 0.3 0.00532 regression-sxy ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 ) regression-sxy ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 for [ all|any ] wyrażenie { ; wyrażenie } ) regression-sxy ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 for report ) Zwraca następujące obliczenie po wyeliminowaniu par NULL: REGR_COUNT(wyrażenie_numeryczne1; wyrażenie_numeryczne2) * COVAR_POP(wyrażenie_numeryczne1; wyrażenie_numeryczne2) Przykład: regression-sxy ( Koszt ;  Marża  for report) Wynik: obliczenie sxy linii regresji dla parametrów Koszt i Marża. Cost Margin regression-sxy (Cost, Margin for report) ------- ---------- --------------------------------------------------------- 4 0.33 0.16192 5 0.28 0.16192 9.22 0.23 0.16192 15.93 0.28 0.16192 34.97 0.3 0.16192 regression-syy ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 ) regression-syy ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 for [ all|any ] wyrażenie { ; wyrażenie } ) regression-syy ( wyrażenie_numeryczne1 ;  wyrażenie_numeryczne2 for report ) Zwraca następujące obliczenie po wyeliminowaniu par NULL: REGR_COUNT(wyrażenie_numeryczne1; wyrażenie_numeryczne2) * VAR_POP(wyrażenie_numeryczne1) Przykład: regression-syy ( Koszt ;  Marża  for report) Wynik: obliczenie syy linii regresji dla parametrów Koszt i Marża. Cost Margin regression-syy (Cost, Margin for report) ------- ---------- --------------------------------------------------------- 4 0.33 647.15932 5 0.28 647.15932 9.22 0.23 647.15932 15.93 0.28 647.15932 34.97 0.3 647.15932 Podsumowania elementów Lista ta zawiera predefiniowane funkcje, które zwracają jedną wartość podsumowania dla zestawu elementów lub różną wartość podsumowania dla każdego elementu w zestawie elementów.
Błąd Istnieje błąd w wyrażeniu w podświetlonym elemencie.
Konstrukcje Ta lista zawiera konstrukcje i szablony, których można użyć do tworzenia wyrażenia. Szablony grupują wiele funkcji. Na przykład szablon konstrukcji case wyszukiwania obejmuje funkcje case, when, else i end. wyszukująca instrukcja case Poniżej przedstawiono szablon konstrukcji case wyszukiwania, obejmującej funkcje CASE, WHEN, ELSE i END. CASE WHEN [Kraj] = 'Kanada' THEN ([Cena katalogowa] * 0.60) WHEN [KodKraju] > 100 THEN [Cena katalogowa] * 0.80 ELSE [Cena katalogowa] END prosta instrukcja case Poniżej przedstawiono szablon prostej konstrukcji case, obejmującej funkcje CASE, WHEN, ELSE i END. CASE [Kraj] WHEN 'Kanada' THEN ([Cena katalogowa] * 0,60) WHEN 'Australia' THEN [Cena katalogowa] * 0,80 ELSE [Cena katalogowa] END if then else Poniżej przedstawiono szablon instrukcji if...then...else. Pojawia się ona w przykładowym raporcie 10 najlepszych detalistów w 2005 roku dostępnym w pakiecie Hurtownia danych WIO (analiza). IF ([Kraj] = 'Kanada') THEN ([Cena katalogowa] * 0,60) ELSE ([Cena katalogowa]) in_range Poniżej przedstawiono szablon wyrażenia in_range. [kod] IN_RANGE { :30 ; 40; 50; 999: } Przykład: [kod] IN_RANGE { 5 } Wynik: Jest to odpowiednik wyrażenia [kod] = 5. Przykład: [kod] IN_RANGE { 5: } Wynik: Jest to odpowiednik wyrażenia [kod] >= 5. Przykład: [kod] IN_RANGE { :5 } Wynik: Jest to odpowiednik wyrażenia [kod] <= 5. Przykład: [kod] IN_RANGE { 5:10 } Wynik: Jest to odpowiednik wyrażenia ( [kod] >= 5 and [kod] <= 10 ). Przykład: [kod] IN_RANGE { :5;10;20: } Wynik: Jest to odpowiednik wyrażenia ( [kod] <= 5 or [kod] = 10 or [kod] >= 20 ).
Predykaty okresu Lista zawiera predykaty, których można używać do porównania wyrażeń okresu. zawiera Zwraca wartość "true", jeśli "wyrażenie_okres1" zawiera "wyrażenie_okres2", czyli jeśli pierwszy okres zawiera wartość data-czas lub wszystkie wartości, które są zawarte w drugim okresie. wyrażenie_okres1 zawiera ( wyrażenie_okres2 | wyrażenie_data_czas ) period( 1989-11-01; 1991-05-19 ) zawiera period( 1991-05-19; 1991-06-04 ) Wynik: false period( 1989-11-01; 1991-05-19 ) zawiera period( 1990-05-19; 1991-04-04 ) Wynik: true period( 1989-11-01; 1991-05-19 ) zawiera 1991-04-04 Wynik: true jest równe Zwraca wartość "true", jeśli "wyrażenie_okres1" i "wyrażenie_okres2" mają takie same wartości rozpoczęcia i zakończenia okresu. wyrażenie_okres1 równa się wyrażenie_okres2 period( 1989-11-01; 1991-05-19 ) równa się period( 1989-11-01; 1991-05-19 ) Wynik: true bezpośrednio poprzedza Zwraca wartość "true", jeśli "wyrażenie_okres1" bezpośrednio poprzedza "wyrażenie_okres2", czyli wartość zakończenia pierwszego okresu równa się wartości rozpoczęcia drugiego okresu. wyrażenie_okres1 bezpośrednio poprzedza wyrażenie_okres2 period( 1989-11-01; 1991-05-19 ) bezpośrednio poprzedza period( 1991-05-19; 1991-06-04 ) Wynik: true period( 1989-11-01; 1991-05-18 ) bezpośrednio poprzedza period( 1991-05-19; 1991-06-04 ) Wynik: false następuje bezpośrednio po Zwraca wartość "true", jeśli "wyrażenie_okres1" następuje bezpośrednio po "wyrażenie_okres2", czyli wartość rozpoczęcia pierwszego okresu równa się wartości zakończenia drugiego okresu. wyrażenie_okres1 następuje bezpośrednio po wyrażenie_okres2 period( 1991-05-19; 1994-01-10 ) następuje bezpośrednio po period( 1991-01-19; 1991-05-19 ) Wynik: true period( 1991-05-19; 1994-01-10 ) następuje bezpośrednio po period( 1991-01-20; 1991-05-18 ) Wynik: false nakłada się Zwraca wartość "true", jeśli "wyrażenie_okres1" nakłada się na "wyrażenie_okres2", czyli co najmniej jedna wartość jest wspólna. wyrażenie_okres1 nakłada się na wyrażenie_okres2 period( 1991-05-19; 1994-01-10 ) nakłada się na period( 1993-01-19; 1995-05-19 ) Wynik: true poprzedza Zwraca wartość "true", jeśli "wyrażenie_okres1" poprzedza "wyrażenie_okres2", czyli wszystkie wartości zawarte w pierwszym okresie są mniejsze niż wartość rozpoczęcia drugiego okresu lub jej równe. wyrażenie_okres1 poprzedza wyrażenie_okres2 period( 1989-11-01; 1991-05-19 ) poprzedza period( 1991-05-19; 1991-06-04 ) Wynik: true period( 1989-11-01; 1991-05-18 ) poprzedza period( 1991-05-19; 1991-06-04 ) Wynik: true następuje po Zwraca wartość "true", jeśli "wyrażenie_okres1" następuje po "wyrażenie_okres2", czyli wszystkie wartości zawarte w pierwszym okresie są większe niż wartość zakończenia drugiego okresu lub jej równe. wyrażenie_okres1 następuje po wyrażenie_okres2 period( 1991-05-19; 1994-01-10 ) następuje po period( 1991-01-19; 1991-05-19 ) Wynik: true period( 1991-05-20; 1994-01-10 ) następuje po period( 1991-01-20; 1991-05-19 ) Wynik: true
Funkcje daty/godziny Niniejsza lista zawiera funkcje biznesowe do obliczania daty i godziny. _add_seconds ( wyrażenie_czas; wyrażenie_liczba_całk ) Zwraca czas lub wartość data/czas, zależnie od formatu argumentu "wyrażenie_czas", będącą efektem dodania liczby sekund zdefiniowanej przez "wyrażenie_liczba_całk" do "wyrażenie_czas". Przykład: _add_seconds ( 13:04:59 ; 1 ) Wynik: 13:05:00 Przykład: _add_seconds ( 2002-04-30 12:10:10.000; 1 ) Wynik: 2002-04-30 12:10:11.000 Przykład: _add_seconds ( 2002-04-30 00:00:00.000; 1/100 ) Zwróć uwagę na to, że drugi argument nie jest liczbą całkowitą. Jest on obsługiwany przez niektóre technologie baz danych i zwiększa część określającą czas. Wynik: 2002-04-30 00:00:00.010 _add_minutes ( wyrażenie_czas; wyrażenie_liczba_całk ) Zwraca czas lub wartość data/czas, zależnie od formatu argumentu "wyrażenie_czas", będącą efektem dodania liczby minut zdefiniowanej przez "wyrażenie_liczba_całk" do "wyrażenie_czas". Przykład: _add_minutes ( 13:59:00 ; 1 ) Wynik: 14:00:00 Przykład: _add_minutes ( 2002-04-30 12:59:10.000; 1 ) Wynik: 2002-04-30 13:00:10.000 Przykład: _add_minutes ( 2002-04-30 00:00:00.000; 1/60 ) Zwróć uwagę na to, że drugi argument nie jest liczbą całkowitą. Jest on obsługiwany przez niektóre technologie baz danych i zwiększa część określającą czas. Wynik: 2002-04-30 00:00:01.000 _add_hours ( wyrażenie_czas; wyrażenie_liczba_całk ) Zwraca czas lub wartość data/czas, zależnie od formatu argumentu "wyrażenie_czas", będącą efektem dodania liczby godzin zdefiniowanej przez "wyrażenie_liczba_całk" do "wyrażenie_czas". Przykład: _add_hours ( 13:59:00 ; 1 ) Wynik: 14:59:00 Przykład: _add_hours ( 2002-04-30 12:10:10.000; 1 ) Wynik: 2002-04-30 13:10:10.000, Przykład: _add_hours ( 2002-04-30 00:00:00.000; 1/60 ) Zwróć uwagę na to, że drugi argument nie jest liczbą całkowitą. Jest on obsługiwany przez niektóre technologie baz danych i zwiększa część określającą czas. Wynik: 2002-04-30 00:01:00.000 _add_days ( wyrażenie_data; wyrażenie_liczba_całk ) Zwraca datę lub wartość data/czas, zależnie od formatu argumentu "wyrażenie_data", będącą efektem dodania liczby dni zdefiniowanej przez "wyrażenie_liczba_całk" do "wyrażenie_data". Przykład: _add_days ( 2002-04-30 ; 1 ) Wynik: 2002-05-01 Przykład: _add_days ( 2002-04-30 12:10:10.000; 1 ) Wynik: 2002-05-01 12:10:10.000 Przykład: _add_days ( 2002-04-30 00:00:00.000; 1/24 ) Zwróć uwagę na to, że drugi argument nie jest liczbą całkowitą. Jest on obsługiwany przez niektóre technologie baz danych i zwiększa część określającą czas. Wynik: 2002-04-30 01:00:00.000 _add_months ( wyrażenie_data; wyrażenie_liczba_całk ) Dodaje miesiące "wyrażenie_liczba_całk" do "wyrażenie_data". Jeśli miesiąc wynikowy ma mniej dni niż składnik dnia miesiąca, wówczas zwracany jest ostatni dzień miesiąca wynikowego. We wszystkich pozostałych przypadkach zwracana wartość to ten sam dzień miesiąca, co "data_wyrażenie". Przykład: _add_months ( 2012-04-15 ; 3 ) Wynik: 2012-07-15 Wynik nie jest ostatnim dniem miesiąca wynikowego. Przykład: _add_months ( 2012-02-29 ; 1 ) Wynik: 2012-03-29 Użyj funkcji _last_of_month w celu powrotu do ostatniego dnia miesiąca. Przykład: _last_of_month ( _add_months ( 2012-02-29 ; 1 ) ) Wynik: 2012-03-31 Dzień jest dostosowywany odpowiednio do ostatniego dnia miesiąca wynikowego. Przykład: _add_months ( 2012-01-31 ; 1 ) Wynik: 2012-02-29 Dodawanie do znacznika czasowego. Przykład: _add_months ( 2002-04-30 12:10:10.000 ; 1 ) Wynik: 2002-05-30 12:10:10.000 _add_years ( wyrażenie_data; wyrażenie_liczba_całk ) Dodaje lata "wyrażenie_liczba_całk" do "wyrażenie_data". Jeśli "wyrażenie_data" ma wartość 29 lutego, zaś rok wynikowy nie jest rokiem przestępnym, wówczas dzień wynikowy ustawiany jest na wartość 28 lutego. We wszystkich pozostałych przypadkach zwracana wartość to ten sam dzień i miesiąc, co "data_wyrażenie". Przykład: _add_years ( 2012-04-15 ; 1 ) Wynik: 2013-04-15 Data 29 lutego jest korygowana w przypadku lat nieprzestępnych. Przykład: _add_years ( 2012-02-29 ; 1 ) Wynik: 2013-02-28 Dodawanie do znacznika czasowego. Przykład: _add_years ( 2002-04-30 12:10:10.000 ; 1 ) Wynik: 2003-04-30 12:10:10.000 _age ( wyrażenie_data ) Zwraca liczbę uzyskaną przez odjęcie "wyrażenie_data" od daty bieżącej. Zwrócona wartość ma formę RRRRMMDD, gdzie RRRR oznacza liczbę lat, MM - miesięcy, a DD - dni. Przykład: _age ( 1990-04-30 ) (jeśli datą bieżącą jest 2003-02-05) Wynik: 120906, co oznacza 12 lat, 9 miesięcy i 6 dni. _date_to_int ( wyrażenie_data ) Zwraca wartość "wyrażenie_data" wyrażoną w postaci liczby całkowitej. Zwrócona wartość ma formę RRRRMMDD, gdzie RRRR oznacza liczbę lat, MM - miesięcy, a DD - dni. Przykład: _date_to_int ( 2003-01-01 ) Wynik: 20030101 _day_of_week ( wyrażenie_data; liczba_całk ) Zwraca dzień tygodnia (od 1 do 7), gdzie 1 to pierwszy dzień tygodnia, jak określono w drugim parametrze (od 1 do 7, gdzie 1 oznacza poniedziałek, a 7 - niedzielę). Zwróć uwagę, że zgodnie z normą ISO 8601 tydzień zaczyna się od poniedziałku, który jest 1. dniem. Przykład: _day_of_week ( 2003-01-01 ; 1 ) Wynik: 3 _day_of_year ( wyrażenie_data ) Zwraca dzień roku (od 1 do 366) w parametrze "wyrażenie_data". Jest on także zwany dniem juliańskim. Przykład: _day_of_year ( 2003-03-01 ) Wynik: 61 _days_between ( wyrażenie_data1 ; wyrażenie_data2 ) Zwraca liczbę dodatnią lub ujemną oznaczającą liczbę dni pomiędzy datami określonymi przez parametry "wyrażenie_data1" i "wyrażenie_data2". Jeśli "wyrażenie_data1" < "wyrażenie_data2", wówczas wynik będzie liczbą ujemną. Przykład: _days_between ( 2002-06-21 , 2002-04-30 ) Wynik: 52 Przykład: _days_between ( 2002-04-30 ; 2002-06-21 ) Wynik: -52 _days_to_end_of_month ( wyrażenie_data ) Zwraca liczbę oznaczającą liczbę dni pozostałych w miesiącu określonym przez parametr "wyrażenie_data". Przykład: _days_to_end_of_month ( 2002-04-20 14:30:22.123 ) Wynik: 10 _first_of_month ( wyrażenie_data ) Zwraca datę lub wartość data/czas, zależnie od argumentu, uzyskaną poprzez konwersję parametru "wyrażenie_data" na datę z tym samym rokiem i miesiącem, ale z dniem ustawionym na 1. Przykład: _first_of_month ( 2002-04-20 ) Wynik: 2002-04-01 Przykład: _first_of_month ( 2002-04-20 12:10:10.000 ) Wynik: 2002-04-01 12:10:10.000 _last_of_month ( wyrażenie_data ) Zwraca datę lub wartość data/czas, zależnie od argumentu, oznaczającą ostatni dzień miesiąca określonego przez parametr "wyrażenie_data". Przykład: _last_of_month ( 2002-01-14 ) Wynik: 2002-01-31 Przykład: _last_of_month ( 2002-01-14 12:10:10.000 ) Wynik: 2002-01-31 12:10:10.000 _make_timestamp ( wyrażenie_liczba_całk1; wyrażenie_liczba_całk2; wyrażenie_liczba_całk3 ) Zwraca znacznik czasu zbudowany z następujących części: "wyrażenie_liczba_całk1" (rok), "wyrażenie_liczba_całk2" (miesiąc) i "wyrażenie_liczba_całk3" (dzień). Część oznaczająca czas ma wartość domyślną 00:00:00.000. Przykład: _make_timestamp ( 2002 ; 01 ; 14 ) Wynik: 2002-01-14 00:00:00.000 _months_between ( wyrażenie_data1; wyrażenie_data2 ) Zwraca dodatnią lub ujemną liczbę całkowitą oznaczającą liczbę miesięcy pomiędzy datami określonymi przez parametry "wyrażenie_data1" i "wyrażenie_data2". Jeśli "wyrażenie_data1" jest wcześniejsze niż "wyrażenie_data2", wynik będzie liczbą ujemną. Przykład: _months_between ( 2002-04-03 ; 2002-01-30 ) Wynik: 2 Przykład: _months_between ( 2002-01-30 , 2002-04-03 ) Wynik: -2 _shift_timezone ( timestamp_value ; from_time_zone ; target_time_zone )_shift_timezone ( timestamp_with_time_zone_value ; target_time_zone ) Przesuwa wartość znacznika czasu z jednej strefy czasowej do innej strefy czasowej. Ta funkcja uwzględnia czas letni, jeśli obowiązuje. Jeśli pierwszy argument jest typu"znacznik czasu", wówczas drugi i trzeci argument reprezentują odpowiednio "źródłowe" i "docelowe" strefy czasowe. Jeśli pierwszy argument jest typu "znacznik czasu ze strefą czasową", wówczas "źródłowa" strefa czasowa jest już przyjęta w pierwszym argumencie, dlatego drugi argument reprezentuje "docelową" strefę czasową. Typ danych pierwszego argumentu określi również typ danych wartości zwracanej. Drugi i trzeci argument są typu "łańcuch" i reprezentują identyfikatory stref czasowych. Listę tych identyfikatorów można znaleźć poniżej. Uwaga: użycie tej funkcji spowoduje przetwarzanie lokalne. Przykład: _shift_timezone( 2013-06-30 12:00:00 , 'America/New_York' , 'GMT' ) Wynik: 2013-06-30 16:00:00 Przykład: _shift_timezone( 2013-11-30 12:00:00-05:00 , 'America/Vancouver' ) Wynik: 2013-11-30 09:00:00-08:00 Identyfikatory stref czasowych: GMT (GMT+00:00) Greenwich Mean Time Europe/Lisbon (GMT+00:00) Portugal Time (Lisbon) Europe/Amsterdam (GMT+01:00) Netherlands Time Europe/Paris (GMT+01:00) France Time Europe/Berlin (GMT+01:00) Germany Time Europe/Brussels (GMT+01:00) Belgium Time Europe/Rome (GMT+01:00) Italy Time Europe/Vienna (GMT+01:00) Austria Time Africa/Cairo (GMT+02:00) Egypt Time Africa/Johannesburg (GMT+02:00) South Africa Time Europe/Athens (GMT+02:00) Greece Time Africa/Addis_Ababa (GMT+03:00) Ethiopia Time Asia/Dubai (GMT+04:00) United Arab Emirates Time Asia/Karachi (GMT+05:00) Pakistan Time Asia/Calcutta (GMT+05:30) India Time Asia/Dhaka (GMT+06:00) Bangladesh Time Asia/Saigon (GMT+07:00) Vietnam Time Asia/Hong_Kong (GMT+08:00) Hong Kong SAR China Time Asia/Tokyo (GMT+09:00) Japan Time Australia/Darwin (GMT+09:30) Australia Time (Darwin) Australia/Sydney (GMT+10:00) Australia Time (Sydney) Pacific/Guadalcanal (GMT+11:00) Solomon Islands Time America/Argentina/San_Juan (GMT-03:00) Argentina Time (San Juan) America/Buenos_Aires (GMT-03:00) Argentina Time (Buenos Aires) America/Sao_Paulo (GMT-03:00) Brazil Time (Sao Paulo) America/St_Johns (GMT-03:30) Canada Time (St. John’s) America/Puerto_Rico (GMT-04:00) Puerto Rico Time America/New_York (GMT-05:00) United States Time (New York) America/Toronto (GMT-05:00) Canada Time (Toronto) America/Jamaica (GMT-05:00) Jamaica Time America/Chicago (GMT-06:00) United States Time (Chicago) America/Mexico_City (GMT-06:00) Mexico Time (Mexico City) America/Cambridge_Bay (GMT-07:00) Canada Time (Cambridge Bay) America/Edmonton (GMT-07:00) Canada Time (Edmonton) America/Yellowknife (GMT-07:00) Canada Time (Yellowknife) America/Denver (GMT-07:00) United States Time (Denver) America/Chihuahua (GMT-07:00) Mexico Time (Chihuahua) America/Los_Angeles (GMT-08:00) United States Time (Los Angeles) America/Tijuana (GMT-08:00) Mexico Time (Tijuana) America/Vancouver (GMT-08:00) Canada Time (Vancouver) America/Anchorage (GMT-09:00) United States Time (Anchorage) Pacific/Honolulu (GMT-10:00) United States Time (Honolulu) Pacific/Tahiti (GMT-10:00) French Polynesia Time (Tahiti) Pacific/Midway (GMT-11:00) U.S. Minor Outlying Islands Time (Midway) Pacific/Niue (GMT-11:00) Niue Time Można także użyć niestandardowego identyfikatora strefy czasowej, w formacie GMT(+|-)HH:MM. Na przykład: GMT-06:30 lub GMT+02:00. _week_of_year ( wyrażenie_data ) Zwraca numer tygodnia roku określonego przez parametr "wyrażenie_data" zgodnie z normą ISO 8601. Tydzień 1 roku to pierwszy tydzień roku zawierający czwartek, który odpowiada pierwszemu tygodniowi zawierającemu 4 stycznia. Tydzień zaczyna się od poniedziałku (1. dnia) i kończy się w niedzielę (7. dnia). Przykład: _week_of_year ( 2003-01-01 ) Wynik: 1 _years_between ( wyrażenie_data1; wyrażenie_data2 ) Zwraca dodatnią lub ujemną liczbę całkowitą oznaczającą liczbę lat pomiędzy datami określonymi przez parametry "wyrażenie_data1" i "wyrażenie_data2". Jeśli "wyrażenie_data1" < "wyrażenie_data2", wynik będzie liczbą ujemną. Przykład: _years_between ( 2003-01-30 ; 2001-04-03 ) Wynik: 1 Przykład: _years_between ( 2001-04-03 , 2003-01-30 ) Wynik: -1 _ymdint_between ( wyrażenie_data1 ; wyrażenie_data2 ) Zwraca liczbę oznaczającą różnicę między datami określonymi przez parametry "wyrażenie_data1" i "wyrażenie_data2". Zwrócona wartość ma formę RRRRMMDD, gdzie RRRR oznacza liczbę lat, MM - miesięcy, a DD - dni. Przykład: _ymdint_between ( 1990-04-30 ; 2003-02-05 ) Wynik: 120905, co oznacza 12 lat, 9 miesięcy i 5 dni. _year ( wyrażenie_data ) Zwraca wartość pola roku jako "wyrażenie_data". Przykład: _year ( 2003-03-01 ) Wynik: 2003 _month ( wyrażenie_data ) Zwraca wartość pola miesiąca jako "wyrażenie_data". Przykład: _month ( 2003-03-01 ) Wynik: 3 _day ( wyrażenie_data ) Zwraca wartość pola dnia jako "wyrażenie_data". Przykład: _day ( 2003-03-01 ) Wynik: 1 _hour ( wyrażenie_data ) Zwraca wartość pola godziny jako "wyrażenie_data". Przykład: _hour ( 2002-01-31 12:10:10,254 ) Wynik: 12 _minute ( wyrażenie_data ) Zwraca wartość pola minuty jako "wyrażenie_data". Przykład: _minute ( 2002-01-31 12:10:10,254 ) Wynik: 10 _second ( wyrażenie_data ) Zwraca wartość pola sekund jako "wyrażenie_data". Przykład: _second ( 2002-01-31 12:10:10,254 ) Wynik: 10,254 _timezone_hour ( datownik_ze_strefą_czasową )_timezone_hour ( godzina_ze_strefą_czasową ) Zwraca wartość pola godziny strefy czasowej w wyrażeniu. Wyrażenie musi należeć do typu "Datownik ze strefą czasową" lub "Godzina ze strefą czasową". Przykład: _timezone_hour ( 2002-01-31 12:10:10,254-05:30 ) Wynik: -5 _timezone_minute ( datownik_ze_strefą_czasową )_timezone_minute ( minuta_ze_strefą_czasową ) Zwraca wartość pola minuty strefy czasowej w wyrażeniu. Wyrażenie musi należeć do typu "Datownik ze strefą czasową" lub "Godzina ze strefą czasową". Przykład: _timezone_minute ( 2002-01-31 12:10:10,254-05:30 ) Wynik: -30 _start_of_day ([ wyrażenie_data ]) Zwraca wartość rozpoczęcia "wyrażenie_data" albo wartość rozpoczęcia dzisiaj jako znacznik czasu Przykład: _start_of_day ( 2014-11-23 12:10:10.254 ) Wynik: 2014-11-23 00:00:00 Przykład: _start_of_day () Wynik: 2016-01-01 00:00:00 _end_of_day ([ wyrażenie_data ]) Zwraca wartość zakończenia "wyrażenie_data" albo wartość zakończenia dzisiaj jako znacznik czasu Przykład: _end_of_day ( 2014-11-23 12:10:10.254 ) Wynik: 2014-11-23 23:59:59 Przykład: _end_of_day () Wynik: 2016-01-01 23:59:59 _unix_timestamp ( wyrażenie_data ) Zwraca liczbę sekund od 1970-01-01 00:00:00-00 dla danej wartości "wyrażenie_data". Przykład: _unix_timestamp ( 2014-11-23 ) Wynik: 1416718800 _from_unixtime ( wyrażenie_liczba_całk ) Zwraca czas uniksowy określony przez "wyrażenie_liczba_całk" jako znacznik czasu ze strefą czasową. Przykład: _from_unixtime (1417807335) Wynik: 2014-12-05 19:22:15+00:00
Funkcje makr Niniejsza lista zawiera funkcje, które można wykorzystać w makrze. Makro może zawierać jedną lub więcej funkcji makr. Makro jest ograniczone znakiem (#) na początku i końcu. Wszystko pomiędzy tymi znakami jest traktowane jako wyrażenie makra i jest uruchamiane w czasie wykonania. W przypadku funkcji makr, które akceptują jako argumenty wyrażenia reprezentujące znacznik czasu ze strefą czasową, akceptowany format to 'rrrr-mm-dd gg:mm:ss[.ff]+gg:mm', gdzie ułamki sekundy są opcjonalne i mogą być przedstawione za pomocą od 1 do 9 cyfr. Zamiast spacji oddzielającej datę od godziny dopuszczalny jest znak 'T'. Ponadto zamiast strefy czasowej '+gg:mm', dopuszczalny jest znak 'Z', który będzie przetwarzany wewnętrznie jako '+00:00'. Funkcje makr zwracające wyrażenia reprezentujące znacznik czasu ze strefą czasową zwracają domyślnie 9-cyfrowe ułamki sekund. W razie potrzeby do obcięcia wyniku można użyć funkcji makra timestampMask(). Zwraca znacznik czasu ze strefą czasową (jako łańcuch), wynikający z dodania liczby sekund określonej przez parametr "wyrażenie_liczba_całk" do "wyrażenie_łańcuchowe", gdzie "wyrażenie_łańcuchowe" jest znacznikiem czasu ze strefą czasową. _add_seconds ( wyrażenie_łańcuchowe ; wyrażenie_liczba_całk ) Przykład: # _add_seconds ( '2005-11-01 12:00:00.000-05:00' ; -1 ) # Wynik: 2005-11-01 11:59:59.000-05:00 Przykład: # _add_seconds ( $current_timestamp ; 1 ) # Wynik: 2005-11-01 12:00:01.000000000-05:00 Przykład: # timestampMask ( _add_seconds ( $current_timestamp ; 1 ) ; 'hh:mm:ss' ) # Wynik: 12:00:01 Zwraca znacznik czasu ze strefą czasową (jako łańcuch), wynikający z dodania liczby minut określonej przez parametr "wyrażenie_liczba_całk" do "wyrażenie_łańcuchowe", gdzie "wyrażenie_łańcuchowe" jest znacznikiem czasu ze strefą czasową. _add_minutes ( wyrażenie_łańcuchowe ; wyrażenie_liczba_całk ) Przykład: # _add_minutes ( '2005-11-01 12:00:00.000-05:00' ; -1 ) # Wynik: 2005-11-01 11:59:00.000-05:00 Przykład: # _add_minutes ( $current_timestamp ; 1 ) # Wynik: 2005-11-01 12:01:00.000000000-05:00 Przykład: # timestampMask ( _add_minutes ( $current_timestamp ; 1 ) ; 'hh:mm:ss' ) # Wynik: 12:01:00 Zwraca znacznik czasu ze strefą czasową (jako łańcuch), wynikający z dodania liczby godzin określonej przez parametr "wyrażenie_liczba_całk" do "wyrażenie_łańcuchowe", gdzie "wyrażenie_łańcuchowe" jest znacznikiem czasu ze strefą czasową. _add_hours ( wyrażenie_łańcuchowe ; wyrażenie_liczba_całk ) Przykład: # _add_hours ( '2005-11-01 12:00:00.000-05:00' ; -1 ) # Wynik: 2005-11-01 13:00:00.000-05:00 Przykład: # _add_hours ( $current_timestamp ; 1 ) # Wynik: 2005-11-01 13:00:00.000000000-05:00 Przykład: # timestampMask ( _add_hours ( $current_timestamp ; 1 ) ; 'hh:mm:ss' ) # Wynik: 13:00:00 Zwraca znacznik czasu ze strefą czasową (jako łańcuch) wynikający z dodania liczby dni określonej przez parametr "wyrażenie_liczba_całk" do "wyrażenie_łańcuchowe", gdzie "wyrażenie_łańcuchowe" jest znacznikiem czasu ze strefą czasową. Gdy pierwszy argument jest datą określoną jako łańcuch w formacie rrrr-mm-dd, wartość zwracana jest łańcuchem sformatowanym jako data. _add_days ( wyrażenie_łańcuchowe ; wyrażenie_liczba_całk ) Przykład: # _add_days ( '2005-11-01 12:00:00.000-05:00' ; -1 ) # Wynik: 2005-10-31 12:00:00.000000000-05:00 Przykład: # _add_days ( $current_timestamp ; 1 ) # Wynik: 2005-11-02 12:00:00.000000000-05:00 Przykład: # timestampMask ( _add_days ( $current_timestamp ; 1 ) ; 'yyyy-mm-dd' ) # Wynik: 2005-11-02 Przykład: # _add_days( '2019-11-14' , 3 ) # Wynik: 2019-11-17 Zwraca znacznik czasu ze strefą czasową (jako łańcuch) wynikający z dodania liczby miesięcy określonej przez parametr "wyrażenie_liczba_całk" do "wyrażenie_łańcuchowe", gdzie "wyrażenie_łańcuchowe" jest znacznikiem czasu ze strefą czasową. Gdy pierwszy argument jest datą określoną jako łańcuch w formacie rrrr-mm-dd, wartość zwracana jest łańcuchem sformatowanym jako data. _add_months ( wyrażenie_łańcuchowe  wyrażenie_liczba_całk ) Przykład: # _add_months ( '2005-11-01 12:00:00.000-05:00' ; -1 ) # Wynik: 2005-10-01 12:00:00.000000000-05:00 Przykład: # _add_months ( $current_timestamp ; 1 ) # Wynik: 2005-12-01 12:00:00.000000000-05:00 Przykład: # timestampMask ( _add_months ( $current_timestamp ; 1 ) ; 'yyyy-mm-dd' ) # Wynik: 2005-12-01 Przykład: # _add_months( '2019-11-14' , -1 ) # Wynik: 2019-10-14 Zwraca znacznik czasu ze strefą czasową (jako łańcuch), wynikający z dodania liczby lat określonej przez parametr "wyrażenie_liczba_całk" do "wyrażenie_łańcuchowe", gdzie "wyrażenie_łańcuchowe" jest znacznikiem czasu ze strefą czasową. Gdy pierwszy argument jest datą określoną jako łańcuch w formacie rrrr-mm-dd, wartość zwracana jest łańcuchem sformatowanym jako data. _add_years ( wyrażenie_łańcuchowe ; wyrażenie_liczba_całk ) Przykład: # _add_years ( '2005-11-01 12:00:00.000-05:00' ; -1 ) # Wynik: 2004-11-01 12:00:00.000000000-05:00 Przykład: # _add_years ( $current_timestamp ; 1 ) # Wynik: 2006-11-01 12:00:00.000000000-05:00 Przykład: # timestampMask ( _add_years ( $current_timestamp ; 1 ) ; 'yyyy-mm-dd' ) # Wynik: 2006-11-01 Przykład: # _add_years( '2019-11-14' , -2 ) # Wynik: 2017-11-14 _first_of_month ( wyrażenie_łańcuchowe ) Zwraca znacznik czasu ze strefą czasową (jako łańcuch) powstały w wyniku konwersji wartości dnia w parametrze "wyrażenie_łańcuchowe" na 1, gdzie "wyrażenie_łańcuchowe" jest znacznikiem czasu ze strefą czasową. Przykład: # _first_of_month ( '2005-11-11 12:00:00.000-05:00' ) # Wynik: 2005-11-01 12:00:00.000000000-05:00 Przykład: # timestampMask ( _first_of_month ( '2005-11-11 12:00:00.000-05:00' ) ; 'yyyymmdd' ) # Wynik: 20051101 _last_of_month ( wyrażenie_łańcuchowe ) Zwraca znacznik czasu ze strefą czasową (jako łańcuch) oznaczający ostatni dzień miesiąca określony przez parametr "wyrażenie_łańcuchowe", gdzie "wyrażenie_łańcuchowe" jest znacznikiem czasu ze strefą czasową. Przykład: # _last_of_month ( '2005-11-11 12:00:00.000-05:00' ) # Wynik: 2005-11-30 12:00:00.000000000-05:00 Przykład: # timestampMask ( _last_of_month ( '2005-11-11 12:00:00.000-05:00' ) ; 'yyyy-mm-dd' ) # Wynik: 2005-11-30 modelj ( 'identifier' [ , 'model_search_path' [ , 'options' ] ] ) Zwraca część modelu metadanych w formacie json. Bieżący model będzie używany, gdy nie będzie określony parametr 'model_search_path'. Argument 'options' można ustawić na 'cleanup', co spowoduje zmianę niektórych części wyniku na wartości stałe (co jest przydatne przy testowaniu). sq ( modelj ( '[gosales].[country].[country]' ) Ujmuje "wyrażenie_łańcuchowe" w nawias. sb ( wyrażenie_łańcuchowe ) Przykład: # sb ( 'abc' ) # Wynik: [abc] Ujmuje "wyrażenie_łańcuchowe" w apostrofy. sq ( wyrażenie_łańcuchowe ) Przykład: # sq ( 'zero' ) # Wynik: 'zero' Ujmuje "wyrażenie_łańcuchowe" w cudzysłów. dq ( wyrażenie_łańcuchowe ) Przykład: # dq ( 'zero' ) # Wynik: "zero" Wykorzystuje informacje o tożsamości bieżącego uwierzytelnionego użytkownika do wyszukiwania wartości na określonej mapie parametru. Każda część tożsamości użytkownika (nazwa konta, nazwy grup i ról) jest stosowana jako klucz do mapy. Unikalna lista wartości wyszukana na mapie parametru jest następnie zwracana jako łańcuch, w którym każda wartość jest ujęta w apostrofy, a poszczególne wartości są oddzielone od siebie przecinkami. CSVIdentityName ( %nazwa_mapy_param [ ; łańcuch_separatora ] ) Przykład: # CSVIdentityName ( %mapa_poziomu_upr_dostępu ) # Wynik: 'poziom_500' , 'poziom_501' , 'poziom_700' Zwraca części tożsamości użytkownika (nazwę konta, nazwy grup i ról) jako listę łańcuchów. Unikalna lista wartości jest zwracana jako łańcuch, przy czym każda wartość jest ujęta w apostrofy, a wartości są oddzielone od siebie przecinkami. CSVIdentityNameList ( [ łańcuch_separatora ] ) Przykład: # CSVIdentityNameList ( ) # Wynik: 'Wszyscy' , 'Administratorzy raportów' , 'Użytkownik zapytania' Zwraca paszport Cognos® Access Manager. CAMPassport ( ) Przykład: # CAMPassport ( ) # Wynik: 111:98812d62-4fd4-037b-4354-26414cf7ebef:3677162321 Zwraca części identyfikatora użytkownika Cognos® Access Manager ID (CAMID), takie jak nazwa konta, nazwy grup i ról, jako listę wartości oddzielonych przecinkami. CAMIDList ( [ łańcuch_separatora ] ) Przykład: #CAMIDList ( ) # Wynik: CAMID ( "::Wszyscy" ) , CAMID ( ":Autorzy" ) , CAMID ( ":Użytkownicy zapytania" ) , CAMID ( ":Konsumenci" ) , CAMID ( ":Autorzy metryk" ) Zwraca tablicę identyfikatorów użytkownika Cognos® Access Manager IDs (CAMID) na podstawie typu tożsamości (konta, grupy lub roli). Funkcji CAMIDListForType można używać w połączeniu z funkcjami makr csv i join. CAMIDListForType ( typ tożsamości ) Przykład: [qs].[userRole] in ( # csv ( CAMIDListForType ( 'role' ) ) # ) Wynik: [qs].[userRole] in ( 'CAMID ( "::Administratorzy systemu" ) ' ; 'CAMID ( ":Autorzy" )' ) Łączy dwa łańcuchy. wartość1 + wartość2 Przykład: # '{ ' + $runLocale + ' }' # Wynik: {en-us} Usuwa znaki początkowe z pierwszego argumentu. Opcjonalny drugi argument definiuje zestaw znaków do usunięcia. Domyślnie funkcja usuwa białe znaki (tj. spacje, znaki tabulacji, powrotu karetki i nowego wiersza). lstrip ( wyrażenie_łańcuchowe [ ; zestaw_znaków ] ) Przykład: # sq( lstrip ( ' abc ' ) ) # Wynik: 'abc ' Przykład: # lstrip ( ' 0053,2100 ' ; '0 \t\r\n' ) # Wynik: 53,2100 Zwraca wartość parametru "parameterName", jeśli jest zdefiniowana. Jeśli parametr "parameterName" nie istnieje, zostanie zwrócona wartość "defaultText". Gdy parametr "datatype" jest ustawiony na "string", wartość wyniku będzie ujęta w apostrofy. Użycie tej funkcji nie spowoduje wyjątku braku parametru. ParamValue ( parameterName [ , defaultText [, datatype ] ] ) Przykład: # ParamValue ( 'p_country' ) # Wynik: 'Canada' - parametr p_country jest ustawiony Wynik: null - p_country nie jest znanym parametrem Wynik: null - p_country jest używany w pytaniu opcjonalnym i nie jest ustawiony Przykład: # ParamValue ( 'p_country' , 'Netherlands' ) # Wynik: 'Canada' - parametr p_country jest ustawiony Wynik: 'Netherlands' - p_country nie jest znanym parametrem Wynik: 'Netherlands' - p_country jest używany w pytaniu opcjonalnym i nie jest ustawiony Przykład: # ParamValue ( 'p_country', ' cast ( null as varchar(20)) ' , 'token' ) # Wynik: 'Canada' - parametr p_country jest ustawiony Wynik: cast ( null as varchar(20)) - p_country nie jest znanym parametrem Wynik: cast ( null as varchar(20)) - p_country jest używany w opcjonalnym pytaniu i nie jest ustawiony Monituje użytkownika o wprowadzenie pojedynczej wartości lub elementu. Wymagana jest tylko "nazwa_pytania". Domyślnym typem danych będzie 'string', jeśli nie zostanie on określony. Pytanie jest opcjonalne, jeżeli zostanie określony "domyślnyTekst". Jeśli zostanie określony "Tekst", będzie on poprzedzał wartość. Można określić "elemZapytania" w celu skorzystania z jego właściwości informacji pytania. Jeśli zostanie określony "tekst_kończący", zostanie on dołączony do wartości. Jeśli typem danych jest 'memberuniquename', wówczas tworzone jest pytanie z prośbą o wybranie pojedynczego elementu. Dobrą metodą postępowania jest udostępnienie - w postaci trzeciego argumentu - wartości domyślnej. Wartość domyślna musi być unikalną nazwą poprawnego elementu; może być również aliasem odwołującym się do unikalnej nazwy elementu, jak w komponencie Report Studio. prompt ( nazwa_pytania ; typ_danych ; tekst_domyślny ; tekst ; elemZapytania ; tekst_kończący ) Przykład: select . . . where COUNTRY_MULTILINGUAL.COUNTRY_CODE > #prompt ( 'Początkowy kod kraju' ; 'integer' ; '10' ) # Wynik: select . . . where COUNTRY_MULTILINGUAL.COUNTRY_CODE > 10 Przykład: [gosales].[COUNTRY].[COUNTRY] = # prompt ( 'pytanieKraj' ; 'string' ; '''Kanada''' ) # Wynik: [gosales].[COUNTRY].[COUNTRY] = 'Kanada' Example: set ( #prompt ('myProduct'; 'memberuniquename'; '[Sprzęt kempingowy]'; ''; '[Sprzedaż].[Produkt].[Produkt].[Linia produktów]')#) Wynik: set([Sprzedaż].[Produkt].[Produkt].[Linia produktów]->[wszystkie].[1]) Parametr "domyślnyTekst" musi zostać określony w taki sposób, aby był prawidłowy pod względem formalnym w kontekście makra, ponieważ wartość ta nie jest formatowana. Domyślny łańcuch '''Kanada''' w przykładzie 2 został określony jako łańcuch w apostrofach, w których podwojono osadzone pojedyncze apostrofy, stąd 3 apostrofy. Dzięki temu łańcuch ten zostanie poprawnie wyświetlony w pojedynczych apostrofach w wyrażeniu. Przyjmuje się, że w przypadku łańcuchowego typu danych "domyślnyTekst" powinien być zawsze określony w ten sposób, chyba że zastosowany został w kontekście parametru procedury zapisanej w bazie. W przypadku parametru "domyślnyTekst" typu 'date' lub 'datetime' w kontekście SQL powinien być stosowany specjalny format. Przykłady tych formatów to 'DATE ''2001-12-25''' i 'DATETIME ''2001-12-25 12:00:00'''. We wszystkich innych kontekstach należy używać daty lub wartości data/czas bez słowa kluczowego i apostrofów (np. '2001-12-25'). Monituje użytkownika o wprowadzenie jednej lub kilku wartości lub elementów. Wymagana jest tylko "nazwa_pytania". Domyślnym typem danych będzie 'string', jeśli nie zostanie on określony. Pytanie jest opcjonalne, jeżeli zostanie określony "domyślnyTekst". Jeśli zostanie określony "Tekst", będzie on poprzedzał listę wartości. Można określić "elemZapytania" w celu skorzystania z jego właściwości informacji pytania. Jeśli zostanie określony "tekst_kończący", zostanie on dołączony do listy wartości. Jeśli typem danych jest 'memberuniquename', wówczas tworzone jest pytanie z prośbą o wybranie wielu elementów. Dobrą metodą postępowania jest udostępnienie - w postaci trzeciego argumentu - wartości domyślnej. Wartość domyślna musi być unikalną nazwą poprawnego elementu; może być również aliasem odwołującym się do unikalnej nazwy elementu, jak w komponencie Report Studio. promptmany ( nazwa_pytania ; typ_danych ; tekst_domyślny ; tekst ; elemZapytania ; tekst_kończący ) Przykład: select . . . where COUNTRY_MULTILINGUAL.COUNTRY in ( # promptmany ( 'nazwa_kraju' ) # ) Wynik: select . . . where COUNTRY_MULTILINGUAL.COUNTRY_CODE in ( 'Kanada' ; 'Holandia' ; 'Rosja' ) Przykład: select . . . from gosales.gosales.dbo.COUNTRY_MULTILINGUAL COUNTRY_MULTILINGUAL ; gosales.gosales.dbo.COUNTRY XX where COUNTRY_MULTILINGUAL.COUNTRY_CODE = XX.COUNTRY_CODE # promptmany ( 'Wybrane KodyKrajów' ; 'integer' ; ' ' ; ' and COUNTRY_MULTILINGUAL.COUNTRY_CODE in ( ' ; '' ; ' ) ' ) # Wynik: select . . . from gosales.gosales.dbo.COUNTRY_MULTILINGUAL COUNTRY_MULTILINGUAL ; gosales.gosales.dbo.COUNTRY XX where COUNTRY_MULTILINGUAL.COUNTRY_CODE = XX.COUNTRY_CODE and COUNTRY_MULTILINGUAL.COUNTRY_CODE in ( 'Kanada' ; 'Holandia' ; 'Rosja' ) Example: set ( #promptmany ('myProduct'; 'memberuniquename'; '[Sprzęt kempingowy]'; ''; '[Sprzedaż].[Produkt].[Produkt].[Linia produktów]')#) Wynik: set([Sprzedaż].[Produkt].[Produkt].[Linia produktów]->[all].[1]; [Sprzedaż].[Produkt].[Produkt].[Linia produktów]->[all].[2]) Wykonaj zapytanie dla jednej kolumny i zwróć wartość (tylko) w pierwszym wierszu. Wynik nie jest sformatowany, upewnij się, że w razie potrzeby wywołanie jest ujęte w sq (). queryValue ( value_expression [ , filter_expression ] ) Przykład: # sq ( queryValue ( 'TheCalendar.TheWeekdayName' , 'TheCalendar.TheDate = 2018-06-06' ) ) # Wynik: 'Wednesday' Tworzy tablicę z listy parametrów. array ( wyrażenie_łańcuchowe|wyrażenie_tablicowe { ; wyrażenie_łańcuchowe|wyrażenie_tablicowe } ) Przykład: # csv ( array ( 'a1' ; array ( 'x1' ; 'x2' ) ; 'a2' ) ) # Wynik: 'a1' , 'x1' , 'x2' , 'a2' Tworzy łańcuch z elementów tablicy, gdzie wartości są oddzielone średnikami. Opcjonalnie można określić separator i łańcuchy w apostrofach. Domyślny separator to średnik ( ; ), a domyślny znak cudzysłowu to apostrof ( ' ). csv ( wyrażenie_tablicowe [ ; łańcuch_separatora [ ; łańcuch_apostrofu ] ] ) Przykład: # sq ( csv ( array ( 'a1' , 'a2' ) ) ) # Wynik: 'a1', 'a2' Pobierz pozycję z pliku konfiguracji IBM® Cognos®. Znacznik_wymuszania_dekodowania jest opcjonalny i musi mieć jedną z wartości: 'true' , '1', 1 , 'false', '0', 0. Wartością domyślną jest 'false'. W wyjątkowych przypadkach znacznik_wymuszania_dekodowania musi być ustawiony na wartość 'true'. Gdy znacznik_wymuszania_dekodowania musi być ustawiony na wartość 'true', wówczas dla wpisów skonfigurowanych w ramach konfiguracji IBM® Cognos® za pośrednictwem właściwości Zaawansowane zostanie zwrócona wartość zwykłego tekstu dla wpisu konfiguracji. W przypadku wpisów niezidentyfikowanych we właściwościach Zaawansowane zwracany jest pusty łańcuch, niezależnie od obecności zaszyfrowanych danych. Wpis we właściwościach Zaawansowane to qs.getConfigurationEntry.1 i jest to lista nazw oddzielonych średnikiem; domyślnie jest ona pusta i wywołania tej funkcji ze znacznikiem ustawionym na wartość true zwracają łańcuch pusty. getConfigurationEntry ( łańcuch_wpisu ; znacznik_wymuszania_dekodowania ) Przykład: # getConfigurationEntry ( 'serverLocale'  ) # Wynik: en Zwraca wpis z pliku zasobów. Pierwszy argument jest identyfikatorem zasobu w pliku zasobów. Opcjonalny drugi argument jest nazwą pliku zasobów bez przyrostka określającego ustawienia narodowe (np. 'mfwa4j' w przypadku pliku komunikatów 'mfwa4j_en.properties'). Domyślnym plikiem zasobów jest 'xqejavamsgs'. Opcjonalny trzeci argument określa ustawienia narodowe, domyślnie 'en'. getResourceString ( resource_id_string [, resource_file_string [ , locale_string ] ] ) Przykład: # getResourceString ( 'XQE_BIN_binLow' ) # Wynik: XQE-BIN-0001 less than %1 Przykład: # getResourceString ( 'MFW_UT_INTERNAL_ERROR' , 'mfw4j' , 'en' ) # Wynik: MFW-UT-1002 An internal problem has occurred. Please contact your system administrator. Wyszukuje i zwraca elementy tablicy, które są zgodne z wzorcem określonym w parametrze "łańcuch_wzorcowy". Jedynymi obsługiwanymi metaznakami są: ^ (początek słowa), $ (koniec słowa), ! (negacja - dozwolony tylko jako pierwszy znak). grep ( łańcuch_wzorcowy ; wyrażenie_tablicowe ) Przykład: # sq ( csv ( grep ( 's' , array ( 'as', 'an', 'arts' ) ) ) ) # wynik: 'as', 'arts' Przykład: # sq ( csv ( grep ( '^g' , array ( 'group', 'golf' ) ) ) ) # Wynik: 'group', 'golf' Wynik: # sq ( csv ( grep ( 's$' , array ( 'oranges', 'mangoes' ) ) ) ) # Wynik: 'oranges', 'mangoes' Przykład: # sq ( csv ( grep ( '!o' , array ( 'oranges', 'apples' ) ) ) ) # Wynik: 'apples' Znajduje pozycję w łańcuchu 'str', na której znajduje się podłańcuch 'substr'. Jeśli podłańcuch 'substr' nie zostanie znaleziony, zwracana jest wartość -1. Można też podać opcjonalne przesunięcie, 'offset', od którego ma się rozpocząć wyszukiwanie. Pierwszy argument 'str' może być także wyrażeniem tablicowym. Wówczas funkcja jest stosowana do każdego elementu tablicy i wynikiem funkcji jest tablica wartości. index ( str , substr [ , offset ] ) # index ( 'The black horse jumped over the black sheep.', 'black' ) # Wynik: 4 # index ( 'The black horse jumped over the black sheep.', 'black', 10 ) # Wynik: 32 # index ( 'The black horse jumped over the black sheep.', 'green' ) # Wynik: -1 # sq ( join ( ' | ', index ( array ('black' , 'red', 'green' ) , 'e' ) ) ) # Wynik: -1 | 1 | 2 Łączy elementy tablicy za pomocą "łańcucha_separatora". join ( łańcuch_separatora ; wyrażenie_tablicowe ) Przykład: # sq ( join ( ' | | ' ; array ( 'as'; 'an'; 'arts' ) ) ) # Wynik: 'as | | an | | arts' Oblicza liczbę znaków w łańcuchu "wyrażenie_łańcuchowe". Jeśli argument jest wyrażeniem tablicowym, to wynik będzie tablicą wartości, w której każdy wpis oznaczać będzie liczbę znaków w każdym z elementów wyrażenia tablicowego. length ( wyrażenie_łańcuchowe | wyrażenie_tablicowe ) length ( 'abcdef' ) Wynik: 6 join ( '--', length ( array ( 'abcdef' , 'xyz' ) ) ) Wynik: 6--3 Znajduje ostatnią pozycję w łańcuchu 'str', na której znajduje się podłańcuch 'substr'. Ta funkcja nazywana jest indeksowaniem wstecz. Można wyobrazić sobie, że rozpoczyna wyszukiwanie od końca łańcucha. Jeśli podłańcuch 'substr' nie zostanie znaleziony, zwracana jest wartość -1. Można też podać opcjonalne przesunięcie względem końca, 'offset', od którego ma się rozpocząć wyszukiwanie. Pierwszy argument 'str' może być także wyrażeniem tablicowym. Wówczas funkcja jest stosowana do każdego elementu tablicy i wynikiem funkcji jest tablica wartości. rindex ( str , substr [ , offset ] ) # rindex ( 'The black horse jumped over the black sheep.', 'black' ) # Wynik: 32 # rindex ( 'The black horse jumped over the black sheep.', 'black', 10 ) # Wynik: 4 # rindex ( 'The black horse jumped over the black sheep.', 'green' ) # Wynik: -1 # sq ( join ( ' | ', rindex ( array ('black' , 'red', 'green' ) , 'e' ) ) ) # Wynik: -1 | 1 | 3 Usuwa znaki końcowe z pierwszego argumentu. Opcjonalny drugi argument definiuje zestaw znaków do usunięcia. Domyślnie funkcja usuwa białe znaki (tj. spacje, znaki tabulacji, powrotu karetki i nowego wiersza). rstrip ( wyrażenie_łańcuchowe [ ; zestaw_znaków ] ) Przykład: # sq( rstrip ( ' abc ' ) ) # Wynik: ' abc' Przykład: # rstrip ( ' 0053,2100 ' ; '0 \t\r\n' ) # Wynik: 0053,21 Sortuje elementy tablicy w kolejności alfabetycznej. Duplikaty są zachowywane. sort ( wyrażenie_tablicowe ) Przykład: # csv ( sort ( array ( 's3'; 'a'; 'x' ) ) ) # Wynik: 'a', 's3', 'x' Dzieli łańcuch lub elementy łańcuchowe tablicy na oddzielne elementy. split ( łańcuch_wzorcowy; wyrażenie_łańcuchowe|wyrażenie_tablicowe ) Przykład: # sq ( csv ( split ( '::', 'ab=c::de=f::gh=i' ) ) ) # Wynik: 'ab=c', 'de=f', 'gh=i' Przykład: # sq ( csv ( split ( '=' , split ( '::', 'ab=c::de=f::gh=i' ) ) ) ) # Wynik: 'ab', 'c', 'de', 'f', 'gh', 'i' Usuwa znaki końcowe i początkowe z pierwszego argumentu. Opcjonalny drugi argument definiuje zestaw znaków do usunięcia. Domyślnie funkcja usuwa białe znaki (tj. spacje, znaki tabulacji, powrotu karetki i nowego wiersza). strip ( wyrażenie_łańcuchowe [ ; zestaw_znaków ] ) Przykład: # sq( strip ( ' abc ' ) ) # Wynik: 'abc' Przykład: # strip ( ' 0053,2100 ' ; '0 \t\r\n' ) # Wynik: 53,21 Wyszukuje wzorca w łańcuchu lub w elementach łańcuchowych tablicy i zastępuje pierwsze wystąpienie "łańcucha_wzorcowego" "łańcuchem_zastępczym". Jedynymi obsługiwanymi metaznakami są: ^ (początek słowa), $ (koniec słowa) substitute ( łańcuch_wzorcowy; łańcuch_zastępczy; wyrażenie_łańcuchowe|wyrażenie_tablicowe ) Przykład: #sq ( substitute ( '^cn='; '***'; 'cn=help' ) )# Wynik: '***help' Przykład: # csv ( substitute ( '^cn='; '***'; array ( 'cn=help' ; 'acn=5' ) ) ) # Wynik: '***help', 'acn=5' Przykład: # csv ( substitute ( 'cn='; ''; array ( 'cn=help' ; 'acn=5' ) ) ) # Wynik: 'help', 'a5' Przykład: #sq ( substitute ( 'help$', '***', 'cn=help' ) )# Wynik: 'cn=***' Wyodrębnia część wyrażenia łańcuchowego rozpoczynającą się od przesunięcia początku. Można określić długość, czyli liczbę znaków do wyodrębnienia. Jeśli długość nie zostanie określona, zwrócony zostanie podłańcuch do końca wyrażenia łańcuchowego. Pierwszy argument może być także wyrażeniem tablicowym. Wówczas funkcja jest stosowana do każdego elementu tablicy i wynikiem funkcji jest tablica łańcuchów. substr ( wyrażenie_łańcuchowe , przesunięcie_początku [ , długość ] ) substr ( 'The horse is black.', 0, 3 ) Wynik: The substr ( 'The horse is black.', 4 ) Wynik: horse is black. substr ( 'The horse is black', index ('The horse is black.' , 'green' ) ) Wynik: The horse is black. join ( ' | ', substr ( array ('black' , 'red', 'green' ) , 2, 2 ) ) Wynik: ac | d | en substr ('over the moon', -2, 4) Wynikiem jest błąd: drugi argument funkcji 'substr' musi być większy lub równy -1.' . Zwraca "wyrażenie_łańcuchowe1" oznaczające znacznik czasu ze strefą czasową, obcięte do formatu określonego w parametrze "wyrażenie_łańcuchowe2". Parametr "wyrażenie_łańcuchowe2" musi mieć jeden z następujących formatów: 'rrrr', 'mm', 'dd', 'rrrr-mm', 'rrrrmm', 'rrrr-mm-dd', 'rrrrmmdd', 'rrrr-mm-dd gg:mm:ss', 'rrrr-mm-dd gg:mm:ss+gg:mm', 'rrrr-mm-dd gg:mm:ss.ff3', 'rrrr-mm-dd gg:mm:ss.ff3+gg:mm', 'rrrr-mm-ddTgg:mm:ss', 'rrrr-mm-ddTgg:mm:ss+gg:mm', 'rrrr-mm-ddTgg:mm:ss.ff3+gg:mm' lub 'rrrr-mm-ddTgg:mm:ss.ff3+gg:mm'. Funkcje makr zwracające znacznik czasu ze strefą czasową w formacie łańcuchowym mają domyślnie precyzję 9-cyfr dla części oznaczającej ułamki sekund. Opcje formatu pozwalają na jej obcięcie do precyzji 3 lub 0. timestampMask ( wyrażenie_łańcuchowe1 ; wyrażenie_łańcuchowe2 ) Przykład: # timestampMask ( $current_timestamp ; 'yyyy-dd-mm' ) # Wynik: 2005-11-01 Przykład: # timestampMask (  '2005-11-01 12:00:00.000-05:00' ; 'yyyy-mm-dd hh:mm:ss+hh:mm' ) # Wynik: 2005-11-01 12:00:00-05:00 Przykład: # timestampMask (  '2005-11-01 12:00:00.123456789-05:00' ; 'yyyy-mm-ddThh:mm:ss+hh:mm.ff3+hh:mm' ) # Wynik: 2005-11-01T12:00:00.123-05:00 Zwraca łańcuch oznaczający znacznik czasu ze strefą czasową, wynikający z dostosowania parametru "wyrażenie_łańcuchowe" do strefy czasowej systemu operacyjnego. Zwróć uwagę, że w razie potrzeby do obcięcia wyniku można użyć funkcji makra timestampMask(). toLocal ( wyrażenie_łańcuchowe ) Przykład: # toLocal ( '2005-11-01 17:00:00.000-00:00' ) # gdzie lokalna strefa czasowa OS to -05:00 Wynik: 2005-11-01 12:00:00.000000000-05:00 Przykład: # timestampMask ( toLocal ( '2005-11-01 17:00:00.000-00:00' ) ; 'yyyy-mm-dd hh:mm:ss+hh:mm' ) # gdzie lokalna strefa czasowa OS to -05:00 Wynik: 2005-11-01 12:00:00-05:00 Przykład: # toLocal ( '2005-11-01 13:30:00.000-03:30' ) # gdzie lokalna strefa czasowa OS to -05:00 Wynik: 2005-11-01 12:00:00.000000000-05:00 Zwraca łańcuch "wyrażenie_łańcuchowe" ze wszystkimi znakami zamienionymi na małe litery zgodnie z regułami ustawień narodowych "łańcuch_ustawień_narodowych". Jeśli nie określono ustawień narodowych,przyjmowane są ustawienia 'en'. tolower ( wyrażenie_łańcuchowe [ ; łańcuch_ustawień_narodowych ] ) Przykład: # tolower ( 'ABC' ) # Wynik: abc Przykład: # tolower ( 'ABC' ; 'fr' ) # Wynik: abc Zwraca łańcuch "wyrażenie_łańcuchowe" ze wszystkimi znakami zamienionymi na wielkie litery zgodnie z regułami ustawień narodowych "łańcuch_ustawień_narodowych". Jeśli "łańcuch_ustawień_narodowych" nie zostanie określony,przyjmowane są ustawienia 'en'. toupper ( wyrażenie_łańcuchowe [ ; łańcuch_ustawień_narodowych ] ) Przykład: # toupper ( 'abc' ) # Wynik: ABC Przykład: # toupper ( 'abc' ; 'fr' ) # Wynik: ABC Zwraca łańcuch oznaczający znacznik czasu ze strefą czasową, wynikający z dostosowania parametru "wyrażenie_łańcuchowe" do referencyjnej strefy czasowej UTC na południku zerowym, zwanej także czasem GMT. Zwróć uwagę, że w razie potrzeby do obcięcia wyniku można użyć funkcji makra timestampMask(). toUTC ( wyrażenie_łańcuchowe ) Przykład: # toUTC ( '2005-11-01 12:00:00.000-05:00' ) # Wynik: 2005-11-01 17:00:00.000000000-00:00 Przykład: # timestampMask( toUTC ( '2005-11-01 12:00:00.000-05:00' ) ; 'yyyy-mm-dd hh:mm:ss.ff3+hh:mm' ) # Wynik: 2005-11-01 17:00:00.000-00:00 Przykład: # toUTC ( $current_timestamp ) # Wynik: 2005-11-01 17:00:00.000000000-00:00 Usuwa zduplikowane pozycje z tablicy. Kolejność elementów jest zachowana. unique ( wyrażenie_tablicowe ) # csv ( unique ( array ( 's3'; 'a'; 's3'; 'x' ) ) ) # Wynik: 's3', 'a', 'x' Koduje przekazany argument metodą kodowania URL-i. Funkcja ta jest przydatna podczas określania łańcuchów połączeń XML. urlencode ( prompt ( 'wartUżytkownika' ) ) urlencode ( prompt ( 'dowolna_wartość' ) ) %27wartTestowa%27 prosta instrukcja case Makro przedstawia szablon prostej konstrukcji case, obejmującej funkcje case, when, then, else i end. Uwaga: ta struktura makra jest obsługiwana tylko w trybie DQM. CASE <wyrażenie> WHEN <literał> THEN <wyrażenie> [ELSE <wyrażenie>] END Przykład: #CASE prompt('pDateRange';'token') WHEN 'Current Week' THEN '[PR Current Week]' ELSE '[PR Prior Week]' END# Wynik: [PR Current Week]
Funkcje blokowe Niniejsza lista zawiera funkcje używane do uzyskiwania dostępu do elementów zestawu, zazwyczaj w kontekście Analysis Studio. Zwraca pierwsze elementy znalezione w zestawie aż do osiągnięcia "maks_wyrażenie_numeryczne" + "przepełn_wyrażenie_numeryczne". Jeżeli liczba "maks_wyrażenie_numeryczne" + "przepełn_wyrażenie_numeryczne" zostanie przekroczona, wówczas zwrócona zostanie tylko maksymalna liczba elementów. W przypadku zestawu zawierającego tylko kilka elementów wykraczających poza liczbę określoną przez maks_wyrażenie_numeryczne, parametr przepełn_wyrażenie_numeryczne pozwala dołączyć ten mały zestaw dodatkowych elementów. Jeżeli zestaw zawiera więcej elementów niż dopuszcza przepełnienie, wówczas zwrócona zostanie tylko liczba elementów określona przez parametr maks_wyrażenie_numeryczne. _firstFromSet ( wyrażenie_zestaw ; maks_wyrażenie_numeryczne ; przepełn_wyrażenie_numeryczne ) _firstFromSet ( [spółka_Wycieczki_i_Obozy],[Produkty],[Produkty],[Linia produktów] ; 2 ; 8 ) Wynik: Zwraca pięć elementów w zestawie Linia produktów. Pierwsze dwa elementy zwracane są w ramach liczby maksymalnej, a kolejne trzy - w ramach przepełnienia. Sprzęt kempingowy Sprzęt do gry w golfa Sprzęt do wspinaczki górskiej Ochrona na świeżym powietrzu Akcesoria osobiste  _firstFromSet ( [spółka_Wycieczki_i_Obozy],[Produkty],[Produkty],[Linia produktów] ; 2 ; 2 ) Wynik: Sprzęt kempingowy, Sprzęt do gry w golfa Zwraca zestaw zawierający "wyrażenie_element", gdy rozmiar "wyrażenie_zestaw" jest większy niż "wyrażenie_numeryczne", tj. nowy element zostanie wygenerowany, jeśli liczba elementów w "wyrażenie_zestaw" jest większa niż określona w "wyrażenie_numeryczne". _remainderSet ( wyrażenie_element; wyrażenie_zestaw ; wyrażenie_numeryczne ) _remainderSet ( member ( aggregate ( currentMeasure within set [spółka_Wycieczki_i_Obozy],[Produkty],[Produkty],[Linia produktów] ) ; 'Agregacja produktów' ; 'Agregacja produktów' ; [spółka_Wycieczki_i_Obozy],[Produkty],[Produkty] ) ; [spółka_Wycieczki_i_Obozy],[Produkty],[Produkty],[Linia produktów] ; 1 ) Wynik: Ilość sprzedana dla agregacji produktów