Функции, связанные с поставщиком Константы Константа - это постоянное значение, которое можно использовать в выражении. Операторы Операторы указывают, что происходит со значениями по обе стороны оператора. Операторы аналогичны функциям в том смысле, что они преобразуют элементы данных и возвращают результат. дата Позволяет вставить текущую системную дату. date-time Позволяет вставить текущую системную дату и время. time with time zone Позволяет вставить нулевое время и часовой пояс. timestamp with time zone Позволяет вставить пример временной отметки с часовым поясом. Позволяет вставить значение false. interval Позволяет вставить нулевой интервал: 000 00:00:00.000. interval year Позволяет вставить нулевой годовой интервал: 0 год. interval month Позволяет вставить нулевой месячный интервал: 0 месяц. interval year to month Позволяет вставить нулевой интервал от года до месяца: 0000-00 от года до месяца. interval day Позволяет вставить нулевой дневной интервал: 0 день. interval hour Позволяет вставить нулевой часовой интервал: 0 часов. interval minute Позволяет вставить нулевой минутный интервал: 0 минут. interval second Позволяет вставить нулевой секундный интервал: 0 секунд. interval day to hour Позволяет вставить нулевой интервал от дня до часа:0 00 от дня до часа. interval day to minute Позволяет вставить нулевой интервал от дня до минуты: 0 00:00 от дня до минуты. interval day to second Позволяет вставить нулевой интервал от дня до секунды: 0 00:00:00.000000000 от дня до секунды. interval hour to minute Позволяет вставить нулевой интервал от часа до минуты: 00:00 от часа до минуты. interval hour to second Позволяет вставить нулевой интервал от часа до секунды: 00:00:00.000000000 от часа до секунды. interval minute to second Позволяет вставить нулевой интервал от минуты до секунды: 00:00.000000000 от минуты до секунды. Позволяет вставить "null", если не удовлетворяются условия выражения. число Позволяет вставить число 0, которое можно заменить новым числовым значением. строка Позволяет вставить пустую строку в виде двух кавычек, внутри которых можно ввести текст. время Позволяет вставить текущее системное время. Позволяет вставить значение "true".
Определяет начало выражения. ( expression ) Определяет конец выражения. ( expression ) Перемножает два числовых значения. value1 * value2 , Разделяет компоненты выражения. expression ( parameter1; parameter2 ) Делит одно числовое значение на другое. value1 / value2 Объединяет строки. string1 || string2 Складывает два числовых значения. value1 + value2 Вычитает одно числовое значение из другого или меняет знак числового значения. value1 - value2 или - value Сравнивает значения, представленные "value1", со значением "value2" и возвращает значения, меньшие "value2". value1 < value2 Сравнивает значения, представленные "value1", со значением "value2" и возвращает значения, меньшие или равные "value2". value1 <= value2 Сравнивает значения, представленные "value1", со значением "value2" и возвращает значения, отличные от "value2". value1 <> value2 Сравнивает значения, представленные "value1", со значением "value2" и возвращает значения, равные "value2". value1 = value2 Сравнивает значения, представленные "value1", со значением "value2" и возвращает значения, большие "value2". value1 > value2 Разделяет компоненты в буквальном выражении члена. [namespace].[dimension].[hierarchy].[level]->[L1] Сравнивает значения, представленные "value1", со значением "value2" и возвращает значения, большие или равные "value2". value1 >= value2 Возвращает значение "true", если выполняются условия в обоих частях этого выражения. argument1 and argument2 Используется в сочетании с выражениями сводок, чтобы задать область, которую нужно отрегулировать в соответствии со столбцами в запросе, на основе которых производится группировка. Область зависит от контекста. aggregate_function ( expression AUTO ) Определяет, находится ли значение в заданном диапазоне. expression between value1 and value2 Пример: [Доход] between 200 and 300 Результат: Возвращает количество результатов с доходом в интервале от 200 до 300. Revenue Between ---- ---- $332.06 false $230.55 true $107.94 false Используется в сочетании с when, then, else и end. Case указывает начало определенной ситуации, в которой определены действия when, then и else. case expression { when expression then expression } [ else expression ] end Определяет, содержит ли строка "string1" строку "string2". Этот синтаксис поддерживает оба метасимвола: знак процента (%) представляет ноль, один или несколько символов, а знак подчеркивания (_) представляет любой символ. Необязательное ключевое слово LITERAL указывает, как интерпретируются '%' и '_'. Когда присутствует ключевое слово LITERAL, '%' и '_' не должны рассматриваться как метасимволы (смотрите Пример 3 и 5). Иначе, в отсутствие ключевого слова LITERAL '%' и '_' интерпретируются как метасимволы (смотрите Пример 1, 2 и 4). string1 contains [LITERAL] string2 Пример 1: [PRODUCT_LINE] contains 'снаряжение' Результат 1: Туристическое снаряжение Пример 2: [PRODUCT_LINE] contains 'гольф%' Результат 2: Снаряжение для гольфа Пример 3: [PRODUCT_LINE] contains literal 'Гольф%' Результат 3: Гольф% Пример 4: [PRODUCT_LINE] contains 'текущий_год%' Результат 4: Текущий год-Цена, Текущий год-Цена%, Текущий_год-Цена%. Пример 5: [PRODUCT_LINE] contains literal 'Текущий_год%' Результат 5: Текущий_год%. Ключевое слово, которое может использоваться в качестве первого аргумента в функциях суммирования членов. Эта функция содержится в пример отчета Итоговый доход по странам в пакете хранилища данных GO (запрос). aggregate_function ( currentMeasure within set expression ) current_date  Возвращает текущую дату базы данных. current_date  Используется в сочетании с конструкцией lookup. lookup (....) in (....) default (....) Ключевое слово, используемое в выражении агрегирования, которое должно содержать только уникальные значения. Смотрите также функцию Unique. distinct dataItem Пример: count ( distinct [OrderDetailQuantity] ) Результат: 1704 Работает c конструкциями if или case. Если условие if или выражение case не разрешается в true, используется выражение else. Эта функция содержится в примере отчета "10 крупнейших розничных продавцов в 2005 году" в пакете хранилища данных GO (анализ). if ( condition ) then .... else ( expression ) ; or case .... else ( expression ) end Указывает конец конструкции case или when. case .... end Определяет, заканчивается ли строка "string1" строкой "string2". Этот синтаксис поддерживает оба метасимвола: знак процента (%) представляет ноль, один или несколько символов, а знак подчеркивания (_) представляет любой символ. Необязательное ключевое слово LITERAL указывает, как интерпретируются '%' и '_'. Когда присутствует ключевое слово LITERAL, '%' и '_' не должны рассматриваться как метасимволы (смотрите Пример 3 и 5). Иначе, в отсутствие ключевого слова интерпретируется, '%' и '_' ведут себя как метасимволы (смотрите Пример 1, 2 и 4). string1 ends with [LITERAL] string2 Пример 1: [PRODUCT_LINE] ends with 'снаряжение' Результат 1: Туристическое снаряжение, Гольф-снаряжение Пример 2: [PRODUCT_LINE] ends with '%снаряжение' Результат 2: Гольф-снаряжение, Туристическое снаряжение Пример 3: [PRODUCT_LINE] ends with literal 'Снаряжение%' Результат 3: Снаряжение% Пример 4: [PRODUCT_LINE] ends with '%цена' Результат 4: Продукт-цена, Текущий_год-цена Пример 5: [PRODUCT_LINE] ends with literal '%Цена' Результат 5: %Цена Определяет, соответствует ли строка "string1" шаблону строки "string2", когда необязательный символ "char" используется в качестве управляющего символа в строке шаблона. string1 LIKE string2 [ ESCAPE char ] Пример: [PRODUCT_LINE] like 'G%' Результат: Все линии продуктов, начинающиеся с 'G'. Пример: [PRODUCT_LINE] like '%Ga%' escape 'a' Результат: Все линии продуктов, заканчивающиеся на 'G%'. Используется в сочетании с выражениями сводок, чтобы задать область агрегации в запросе. aggregate_function ( expression for expression { ; expression } ) Используется в сочетании с выражениями сводок, чтобы задать область на основе подмножества столбцов в запросе, на основе которых производится группировка. Эквивалент оператора for. aggregate_function ( expression for ANY expression { ; expression } ) Используется в сочетании с выражениями сводок, чтобы задать в качестве области все заданные в запросе столбцы, на основе которых производится группировка. Также смотрите оператор for. aggregate_function ( expression for ALL expression { ; expression } ) Используется в сочетании с выражениями сводок, чтобы задать в качестве области весь запрос. Также смотрите оператор for. Эта функция содержится в образце отчета "Возвраты и удовлетворенность заказчиков" в пакете хранилища данных GO (анализ). aggregate_function ( expression for report ) Используется в сочетании с конструкциями then и else. If определяет условие; если условие if истинно, используется выражение then. Если условие if не истинно, используется выражение else. Эта функция содержится в примере отчета "10 крупнейших розничных продавцов в 2005 году" в пакете хранилища данных GO (анализ). if ( condition ) then ( expression ) else ( expression ) Определяет, содержится ли выражение "expression1" в данном списке выражений. expression1 in ( expression_list ) Определяет, содержится ли выражение "expression1" в заданном списке постоянных значений или в заданном диапазоне. expression1 in_range { константа : константа [ ; константа : константа ] } Пример: [код] in_range { 5 } Результат: Это эквивалентно значению [код] = 5 Пример: [код] in_range { 5: } Результат: Это эквивалентно значению [код] >= 5. Пример: [код] in_range { :5 } Результат: Это эквивалентно значению [код] <= 5. Пример: [код] in_range { 5:10 } Результат: Это эквивалентно значению ( [код] >= 5 and [код] <= 10 ). Пример: [код] in_range { :5,10,20: } Результат: Это эквивалентно значению ( [код] <= 5 or [код] = 10 or [код] >= 20 ). Определяет, задано ли значение "value" в данных. value is missing Определяет, задано ли значение "value" в данных. value is null Определяет, задано ли значение "value" в данных. value is not missing Определяет, задано ли значение "value" в данных. value is not null Определяет, соответствует ли строка "string1" шаблону строки "string2", когда необязательный символ "char" используется в качестве управляющего символа в строке шаблона. Этот синтаксис поддерживает оба метасимвола: знак процента (%) представляет ноль, один или несколько символов, а знак подчеркивания (_) представляет любой символ. string1 LIKE string2 [ ESCAPE char ] Пример 1: [PRODUCT_LINE] like 'G%' Результат 1: Все линии продуктов, начинающиеся с 'Г'. Пример 2: [PRODUCT_LINE] like '%Го%' escape 'о' Результат 2: Все линии продуктов, заканчивающиеся на 'Г%'. Пример 3: [PRODUCT_LINE] like 'К_Р_' Результат 2: Все линии продуктов, содержащие имена КАРТЫ или КАРТИНЫ. Пример: lookup ( [Country]) in ( 'Canada'--> ( [List Price] * 0.60); 'Australia'--> ( [List Price] * 0.80 ) ) default ( [List Price] ) Находит данные и заменяет их на указанные значения. Рекомендуется использовать конструкцию case. lookup ( name ) in ( value1 --> value2 ) default ( expression ) Возвращает TRUE, если аргумент "argument" разрешается в true, и FALSE в противном случае. NOT argument Возвращает TRUE, если аргумент "argument1" или аргумент "argument2" разрешается в значение true. argument1 or argument2 Выполняет вычисление сводки до применения фильтра сводки. функция_сводки ([выражение] prefilter) Пример: total ( [Количество] for report prefilter ) summaryFilter: total( [Количество] for [Номер_продукта] ) > 50000 Результат: Суммирует количества в отчете до применения фильтра сводки. 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 Подсчитывает число выходных строк запроса. Используется в сочетании с оператором Count(). count ( ROWS ) Подсчитывает число выходных строк запроса. Используется в сочетании с оператором Count(). count ( ROWS  [ expression ]) Определяет, начинается ли строка "string1" строкой "string2". Этот синтаксис поддерживает оба метасимвола: знак процента (%) представляет ноль, один или несколько символов, а знак подчеркивания (_) представляет любой символ. Необязательное ключевое слово LITERAL указывает, как интерпретируются '%' и '_'. Когда присутствует ключевое слово LITERAL, '%' и '_' не должны рассматриваться как метасимволы (смотрите Пример 3 и 5). Иначе, в отсутствие ключевого слова интерпретируется, '%' и '_' ведут себя как метасимволы (смотрите Пример 1, 2 и 4). string1 starts with [LITERAL] string2 Пример 1: [PRODUCT_LINE] starts with 'Гольф' Результат 1: Гольф-Снаряжение Пример 2: [PRODUCT_LINE] starts with 'Туристическое%' Результат 2: Туристическое снаряжение Пример 3: [PRODUCT_LINE] starts with literal 'Гольф%' Результат: Гольф% Пример 4: [PRODUCT_LINE] starts with 'Текущий_год%' Результат 4: Текущий год-Цена, Текущий год-Цена%, Текущий_год-Цена% Пример 5: [PRODUCT_LINE] starts with literal 'Текущий_год%' Результат 5: Текущий_год% Работает c конструкциями if или case. Если условие if или выражение when не разрешается в true, используется выражение then. Эта функция содержится в примере отчета "10 крупнейших розничных продавцов в 2005 году" в пакете хранилища данных GO (анализ). if ( condition ) then ..., or case expression when expression then .... end Используется в сочетании с конструкцией case. Вы можете указать, что должно произойти, когда выражение WHEN истинно. case [expression] when ... end
Сводки Этот список содержит готовые функции, возвращающие либо одно итоговое значение для группы связанных значений, либо отдельные итоговые значения для каждого экземпляра группы связанных значений. Возвращает вычисленное значение с помощью соответствующей функции агрегации на основе типа агрегации выражения. Эта функция содержится в примере отчета "Бюджетные и фактические" в пакете хранилища данных GO (анализ). aggregate ( expression [ auto ] ) aggregate ( expression for [ all|any ] expression { ; expression } ) aggregate ( expression for report ) Возвращает среднее значение выбранных элементов данных. Distinct является альтернативным выражением, совместимым с более ранними версиями продукта. average ( [ distinct ] expression [ auto ] ) average ( [ distinct ] expression for [ all|any ] expression { ; expression } ) average ( [ distinct ] expression for report ) Пример: average ( Продажи ) Результат: Возвращает среднее всех значений элемента Продажи. Возвращает число выбранных элементов данных, за исключением нулевых значений. Distinct является альтернативным выражением, совместимым с более ранними версиями продукта. Все поддерживается только в режиме DQM и позволяет избежать предположения о двойном подсчете элемента данных в таблице измерения. count ( [ all | distinct ] expression [ auto ] ) count ( [ all | distinct ] expression for [ all|any ] expression { , expression } ) count ( [ all | distinct ] expression for report ) Пример: count ( Продажи ) Результат: Возвращает общее число записей для элемента Продажи. Возвращает наибольшее значение выбранных элементов данных. Distinct является альтернативным выражением, совместимым с более ранними версиями продукта. maximum ( [ distinct ] expression [ auto ] ) maximum ( [ distinct ] expression for [ all|any ] expression { ; expression } ) maximum ( [ distinct ] expression for report ) Пример: maximum ( Продажи ) Результат: Возвращает максимальное значение из всех значений элемента Продажи. Возвращает значение медианы выбранных элементов данных. median ( expression [ auto ] ) median ( expression for [ all|any ] expression { ; expression } ) median ( expression for report ) Возвращает наименьшее значение выбранных элементов данных. Distinct является альтернативным выражением, совместимым с более ранними версиями продукта. minimum ( [ distinct ] expression [ auto ] ) minimum ( [ distinct ] expression for [ all|any ] expression { ; expression } ) minimum ( [ distinct ] expression for report ) Пример: minimum ( Продажи ) Результат: Возвращает минимальное значение из всех значений элемента Продажи. Возвращает скользящее среднее по строкам для заданного набора значений через указанное число строк. Параметр "<for-option>" определяет область значений функции. Параметр "at" определяет уровень агрегации и может использоваться только в контексте реляционных источников данных. moving-average ( numeric_expression ; numeric_expression [ at expression { ; expression } ] [ <for-option> ] [ prefilter ] ) moving-average (  numeric_expression ; numeric_expression [ <for-option> ] [ prefilter ] ) <for-option> ::= for expression { ; expression }|for report|auto Пример: moving-average ( Кол-во ; 3 ) Результат: Для каждой строки будет возвращено количество и скользящее среднее, рассчитанное по текущей строке и двум предыдущим строкам. Qty Moving-Average (Qty, 3) ------ ------------------------------------ 200 200 700 450 400 433.3333 200 433.3333 200 266.6667 500 300.0000 Возвращает текущее итоговое значение по строкам для заданного набора значений по указанному числу строк. Параметр "<for-option>" определяет область значений функции. Параметр "at" определяет уровень агрегации и может использоваться только в контексте реляционных источников данных. moving-total ( numeric_expression ; numeric_expression [ at expression { ; expression } ] [ <for-option> ] [ prefilter ] ) moving-total (  numeric_expression ; numeric_expression [ <for-option> ] [ prefilter ] ) <for-option> ::= for expression { ; expression }|for report|auto Пример: moving-total ( Кол-во ; 3 ) Результат: Для каждой строки будет возвращено количество и скользящий итог, рассчитанный по текущей строке и двум предыдущим строкам. Qty Moving-Total (Qty, 3) ------ -------------------------------- 200 200 700 900 400 1300 200 1300 200 800 500 900 Возвращает процент общего значения для выбранных элементов данных. Параметр "<for-option>" определяет область значений функции. Параметр "at" определяет уровень агрегации и может использоваться только в контексте реляционных источников данных. Эта функция содержится в интерактивном образце отчета вычисления процента (по году). percentage ( numeric_expression [ at expression  { ; expression } ] [ <for-option> ] [ prefilter ] ) percentage (  numeric_expression [ <for-option> ] [ prefilter ] ) <for-option> ::= for expression { ; expression }|for report|auto Пример: percentage ( Продажи 98 ) Результат: Будет возвращена процентная доля от общего объема продаж за 1998 г., которая приходится на каждого менеджера. Employee Sales 98 Percentage --------- --------- ------------- Gibbons 60646 7.11% Flertjan 62523 7.35% Cornel 22396 2.63% Возвращает значение от 1 до 100, указывающее процент распределения, которое равно или меньше значений выбранных элементов данных. Параметр "<for-option>" определяет область значений функции. Параметр "at" определяет уровень агрегации и может использоваться только в контексте реляционных источников данных. percentile ( numeric_expression [ at expression { ; expression } ] [ <for-option> ] [ prefilter ] ) percentile (  numeric_expression [ <for-option> ] [ prefilter ] ) <for-option> ::= for expression { ; expression }|for report|auto Пример: percentile ( Продажи 98 ) Результат: Для каждой строки отображается процентная доля строк, значения которых равны или меньше, чем количественное значение для этой строки. 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 Возвращает ранг значения в заданном диапазоне. Возвращаемые целые числа могут представлять любой ранг от 1 (самый высокий) до 100 (самый низкий). Параметр "<for-option>" определяет область значений функции. Параметр "at" определяет уровень агрегации и может использоваться только в контексте реляционных источников данных. quantile ( numeric_expression ; numeric_expression [ at expression { ; expression } ] [ <for-option> ] [ prefilter ] ) quantile (  numeric_expression ; numeric_expression [ <for-option> ] [ prefilter ] ) <for-option> ::= for expression { ; expression }|for report|auto Пример: quantile ( Кол-во ; 4 ) Результат: Будет возвращено количество, ранг значения количества и значения количества, разбитые на 4 группы квантилей (квартили). 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 Возвращает ранг значения, представленный целым числом от 1 (самый высокий) до 4 (самый низкий), относительно группы значений. Параметр "<for-option>" определяет область значений функции. Параметр "at" определяет уровень агрегации и может использоваться только в контексте реляционных источников данных. quartile ( numeric_expression [ at expression { ; expression } ] [ <for-option> ] [ prefilter ] ) quartile (  numeric_expression [ <for-option> ] [ prefilter ] ) <for-option> ::= for expression { ; expression }|for report|auto Пример: quartile ( Кол-во ) Результат: Будет возвращено количество и квартиль значения количества, представленный целым числом от 1 (самый высокий) до 4 (самый низкий). Qty Quartile (Qty) ------ --------------------- 450 1 400 1 350 2 300 2 250 3 200 3 150 4 100 4 Возвращает ранг выбранных элементов данных. Порядок сортировки можно выбрать произвольно; по умолчанию принимается порядок сортировки по нисходящей (DESC). Если две или несколько строк совпадают, то в упорядоченной последовательности возникает пропуск (так называемое ранжирование по олимпийской системе). Параметр "<for-option>" определяет область значений функции. Параметр "at" определяет уровень агрегации и может использоваться только в контексте реляционных источников данных. Distinct является альтернативным выражением, совместимым с более ранними версиями продукта. Нулевые значения ранжируются в последнюю очередь. Эта функция содержится в примере отчета "10 крупнейших розничных продавцов в 2005 году" в пакете хранилища данных GO (анализ). rank ( expression [ ASC|DESC ] { ; expression [ ASC|DESC ] } [ at expression { ; expression } ] [ <for-option> ] [ prefilter ] ) rank ( [ distinct ] expression [ ASC|DESC ] { ; expression [ ASC|DESC ] } [ <for-option>] [ prefilter ] ) <for-option> ::= for expression { ; expression }|for report|auto Пример: rank ( Продажи 98 ) Результат: Для каждой строки будет возвращено значение ранга продаж в 1998 г., соответствующее каждому торговому представителю. При этом пропускаются некоторые числа при совпадении строк. Employee Sales 98 Rank --------- --------- ------------ Gibbons 60000 1 Flertjan 50000 2 Cornel 50000 2 Smith 48000 4 Возвращает скользящее среднее по строкам (включая текущую строку) для набора значений. Параметр "<for-option>" определяет область значений функции. Параметр "at" определяет уровень агрегации и может использоваться только в контексте реляционных источников данных. running-average ( numeric_expression [ at expression { ; expression } ] [ <for-option> ] [ prefilter ] ) running-average (  numeric_expression [ <for-option> ] [ prefilter ] ) <for-option> ::= for expression { ; expression }|for report|auto Пример: running-average ( Кол-во ) Результат: Для каждой строки будет возвращено количество и скользящее среднее, рассчитанное по текущей строке и предыдущим строкам. 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 Возвращает скользящее значение по строкам (включая текущую строку) для набора значений. Параметр "<for-option>" определяет область значений функции. Параметр "at" определяет уровень агрегации и может использоваться только в контексте реляционных источников данных. running-count ( numeric_expression [ at expression { ; expression } ] [ <for-option> ] [ prefilter ] ) running-count (  numeric_expression [ <for-option> ] [ prefilter ] ) <for-option> ::= for expression { ; expression }|for report|auto Пример: running-count ( Кол-во ) Результат: Для каждой строки будет возвращено количество и скользящее значение положения текущей строки. 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 Возвращает текущую разницу по строкам, вычисляемую как разность значений для текущей строки и для предыдущей, для набора значений. Параметр "<for-option>" определяет область значений функции. Параметр "at" определяет уровень агрегации и может использоваться только в контексте реляционных источников данных. running-difference ( numeric_expression [ at expression { ; expression } ] [ <for-option> ] [ prefilter ] ) running-difference (  numeric_expression [ <for-option> ] [ prefilter ] ) <for-option> ::= for expression { ; expression }|for report|auto Пример: running-difference ( Кол-во ) Результат: Для каждой строки будет возвращено количество и скользящая разность между значениями для текущей и предыдущей строк. Name Qty Running-Difference for name ------- ------ --------------------------- Smith 7 NULL Smith 3 -4 Smith 6 3 Smith 4 -2 Wong 3 -1 Wong 5 2 Возвращает скользящий максимум по строкам (включая текущую строку) для набора значений. Параметр "<for-option>" определяет область значений функции. Параметр "at" определяет уровень агрегации и может использоваться только в контексте реляционных источников данных. running-maximum (  numeric_expression [ at expression { ; expression } ] [ <for-option> ] [ prefilter ] ) running-maximum (  numeric_expression [ <for-option> ] [ prefilter ] ) <for-option> ::= for expression { ; expression }|for report|auto Пример: running-maximum ( Кол-во ) Результат: Для каждой строки будет возвращено количество и скользящий максимум, рассчитанный по текущей и предыдущей строкам. 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 Возвращает скользящий минимум по строкам (включая текущую строку) для набора значений. Параметр "<for-option>" определяет область значений функции. Параметр "at" определяет уровень агрегации и может использоваться только в контексте реляционных источников данных. running-minimum ( numeric_expression [ at expression { ; expression } ] [ <for-option> ] [ prefilter ] ) running-minimum (  numeric_expression [ <for-option> ] [ prefilter ] ) <for-option> ::= for expression { ; expression }|for report|auto Пример: running-minimum ( Кол-во ) Результат: Для каждой строки будет возвращено количество и скользящий минимум, рассчитанный по текущей и предыдущей строкам. 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 Возвращает скользящее суммарное значение по строкам (включая текущую строку) для набора значений. Параметр "<for-option>" определяет область значений функции. Параметр "at" определяет уровень агрегации и может использоваться только в контексте реляционных источников данных. running-total ( numeric_expression [ at expression { ; expression } ] [ <for-option> ] [ prefilter ] ) running-total (  numeric_expression [ <for-option> ] [ prefilter ] ) <for-option> ::= for expression { ; expression }|for report|auto Пример: running-total ( Кол-во ) Результат: Для каждой строки будет возвращено количество и скользящее итоговое значение, рассчитанной по текущей и предыдущей строкам. 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 Возвращает стандартное отклонение выбранных элементов данных. standard-deviation (  expression [ auto ] ) standard-deviation (  expression for [ all|any ] expression { ; expression } ) standard-deviation (  expression for report ) Пример: standard-deviation ( Стоимость продукта ) Результат: Возвращается значение, указывающее отклонение между стоимостью продукта и его средней стоимостью. Рассчитывается и возвращается стандартное отклонение как квадратный корень из дисперсии для данного множества. standard-deviation-pop (  expression [ auto ] ) standard-deviation-pop (  expression for [ all|any ] expression { ; expression } ) standard-deviation-pop (  expression for report ) Пример: standard-deviation-pop ( Стоимость продукта ) Результат: Возвращает значение квадратного корня из дисперсии для данного множества. Рассчитывается и возвращается пример стандартного отклонения как квадратный корень из дисперсии для данного множества. standard-deviation-samp (  expression [ auto ] ) standard-deviation-samp (  expression for [ all|any ] expression { ; expression } ) standard-deviation-samp (  expression for report ) Пример: standard-deviation-samp ( Стоимость продукта ) Результат: Возвращает значение квадратного корня дисперсии примера множества. Возвращает ранг значений в категориях "Высокий", "Средний" и "Низкий" по отношению к группе значений. tertile (  expression [ auto ] ) tertile (  expression for [ all|any ] expression { ; expression } ) tertile (  expression for report ) Пример: tertile ( Кол-во ) Результат: Будет возвращено количество, квантиль количества, представленный в виде разбиения на терцили, и терцили самих значений. Qty Quantile (Qty, 3) Tertile (Qty) ------ ------------------------ ------------------ 800 1 H 700 1 H 500 2 M 400 2 M 200 3 L 200 3 L Возвращает общее значение выбранных элементов данных. Distinct является альтернативным выражением, совместимым с более ранними версиями продукта. Эта функция содержится в примере отчета "Бюджетные и фактические" в пакете хранилища данных GO (анализ). total ( [ distinct ] expression [ auto ] ) total ( [ distinct ] expression for [ all|any ] expression { ; expression } ) total ( [ distinct ] expression for report ) Пример: total ( Продажи ) Результат: Возвращает общий итог всех значений элемента Продажи. Статистические функции Список содержит заранее заданные функции суммирования (сводки) статистического характера. Возвращает дисперсию выбранных элементов данных. variance (  expression [ auto ] ) variance (  expression for [ all|any ] expression { ; expression } ) variance (  expression for report ) Пример: variance ( Стоимость продукта ) Результат: Возвращает значение, показывающее, насколько велик диапазон колебания стоимости продукта относительно среднего значения. Возвращает дисперсию для определенного множества значений после отбрасывания нулевых значений. variance-pop (  expression [ auto ] ) variance-pop (  expression for [ all|any ] expression { ; expression } ) variance-pop (  expression for report ) Пример: variance-pop ( Кол-во ) Результат: Для каждой строки возвращает дисперсию для определенного множества значений после отбрасывания нулевых значений. Возвращает пример дисперсии для множества числовых значений после отбрасывания нулевых значений в этом множестве. variance-samp (  expression [ auto ] ) variance-samp (  expression for [ all|any ] expression { ; expression } ) variance-samp (  expression for report ) Пример: variance-samp ( Кол-во ) Результат: Для каждой строки возвращает пример дисперсии для множества значений после отбрасывания нулевых значений в этом множестве. corr ( numeric_expression1 ;  numeric_expression2  [ auto ] ) corr ( numeric_expression1 ;  numeric_expression2 for [ all|any ] expression { ; expression } ) corr ( numeric_expression1 ;  numeric_expression2 for report ) Возвращает коэффициент корреляции для набора пар чисел. Вычисляется следующим образом: COVAR_POP(numeric_expression1, numeric_expression2) / (STDDEV_POP(numeric_expression1) * STDDEV_POP(numeric_expression2)) Пример: corr ( Стоимость ;  Прибыль  for report) Результат: Коэффициент корреляции между элементами Стоимость и Прибыль. 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 ( numeric_expression1 ;  numeric_expression2 ) covariance-pop ( numeric_expression1 ;  numeric_expression2 for [ all|any ] expression { ; expression } ) covariance-pop ( numeric_expression1 ;  numeric_expression2 for report ) Возвращает дисперсию множества для набора пар чисел. Пример: covariance-pop ( Стоимость ;  Прибыль  for report) Результат: Дисперсия множества для элементов Стоимость и Прибыль. 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 ( numeric_expression1 ;  numeric_expression2 ) covariance-samp ( numeric_expression1 ;  numeric_expression2 for [ all|any ] expression { ; expression } ) covariance-samp ( numeric_expression1 ;  numeric_expression2 for report ) Возвращает пример дисперсии для набора пар чисел. Пример: covariance-samp ( Стоимость ;  Прибыль  for report) Результат: Пример дисперсии для элементов Стоимость и Прибыль. 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 ( numeric_expression1 ;  numeric_expression2 ) regression-average-x ( numeric_expression1 ;  numeric_expression2 for [ all|any ] expression { ; expression } ) regression-average-x ( numeric_expression1 ;  numeric_expression2 for report ) Возвращает среднее значение независимой переменной (numeric_expression2) строки регрессии. Пример: regression-average-x ( Стоимость ;  Прибыль  for report) Результат: Среднее значение для элемента Прибыль в строке регрессии для элементов Стоимость и Прибыль. 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 ( numeric_expression1 ;  numeric_expression2 ) regression-average-y ( numeric_expression1 ;  numeric_expression2 for [ all|any ] expression { ; expression } ) regression-average-y ( numeric_expression1 ;  numeric_expression2 for report ) Возвращает среднее значение зависимой переменной (numeric_expression1) строки регрессии. Пример: regression-average-y ( Стоимость ;  Прибыль  for report) Результат: Среднее значение для элемента Стоимость в строке регрессии для элементов Стоимость и Прибыль. 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 ( numeric_expression1 ;  numeric_expression2 ) regression-count ( numeric_expression1 ;  numeric_expression2 for [ all|any ] expression { ; expression } ) regression-count ( numeric_expression1 ;  numeric_expression2 for report ) Возвращает количество ненулевых чисел, используемых для заполнения строки регрессии. Пример: regression-count ( Стоимость ;  Прибыль  for report) Результат: Количество ненулевых чисел, используемых для заполнения строки регрессии для элементов Стоимость и Прибыль. 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 ( numeric_expression1 ;  numeric_expression2 ) regression-intercept ( numeric_expression1 ;  numeric_expression2 for [ all|any ] expression { ; expression } ) regression-intercept ( numeric_expression1 ;  numeric_expression2 for report ) Возвращает пересечение с осью y для линии регрессии. Вычисляется следующим образом: AVG(numeric_expression1) - REGR_SLOPE(numeric_expression1, numeric_expression2) * AVG(numeric_expression2) Пример: regression-intercept ( Стоимость ;  Прибыль  for report) Результат: Пересечение с осью y для линии регрессии для элементов Стоимость и Прибыль. 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 ( numeric_expression1 ;  numeric_expression2 ) regression-r2 ( numeric_expression1 ;  numeric_expression2 for [ all|any ] expression { ; expression } ) regression-r2 ( numeric_expression1 ;  numeric_expression2 for report ) Возвращает коэффициент детерминации (его также называют "R-квадрат" или "критерий соответствия") для линии регрессии. Это значение вычисляется на основе следующих условий: IF VAR_POP(numeric_expression2) = 0 THEN NULL IF VAR_POP(numeric_expression1) = 0 AND VAR_POP(numeric_expression2) <> 0 THEN 1 IF VAR_POP(numeric_expression1) > 0 and VAR_POP(numeric_expression2) <> 0 THEN POWER(CORR (numeric_expression1, numeric_expression2)) Пример: regression-r2 ( Стоимость ;  Прибыль  for report) Результат: Коэффициент детерминации для линии регрессии для элементов Стоимость и Прибыль. 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 ( numeric_expression1 ;  numeric_expression2 ) regression-slope ( numeric_expression1 ;  numeric_expression2 for [ all|any ] expression { ; expression } ) regression-slope ( numeric_expression1 ;  numeric_expression2 for report ) Возвращает наклон линии регрессии. Вычисляется следующим образом: COVAR_POP(numeric_expression1,numeric_expression2) / VAR_POP(numeric_expression2) Пример: regression-slope ( Стоимость ;  Прибыль ) Результат: Наклон линии регрессии для элементов Стоимость и Прибыль. 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 ( numeric_expression1 ;  numeric_expression2 ) regression-sxx ( numeric_expression1 ;  numeric_expression2 for [ all|any ] expression { ; expression } ) regression-sxx ( numeric_expression1 ;  numeric_expression2 for report ) Возвращает следующее вычисление после устранения нулевых (NULL) пар: REGR_COUNT(numeric_expression1, numeric_expression2) * VAR_POP(numeric_expression2) Пример: regression-sxx ( Стоимость ;  Прибыль  for report) Результат: Вычисление sxx для линии регрессии для элементов Стоимость и Прибыль. 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 ( numeric_expression1 ;  numeric_expression2 ) regression-sxy ( numeric_expression1 ;  numeric_expression2 for [ all|any ] expression { ; expression } ) regression-sxy ( numeric_expression1 ;  numeric_expression2 for report ) Возвращает следующее вычисление после устранения нулевых (NULL) пар: REGR_COUNT(numeric_expression1, numeric_expression2) * COVAR_POP(numeric_expression1, numeric_expression2) Пример: regression-sxy ( Стоимость ;  Прибыль  for report) Результат: Вычисление sxy для линии регрессии для элементов Стоимость и Прибыль. 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 ( numeric_expression1 ;  numeric_expression2 ) regression-syy ( numeric_expression1 ;  numeric_expression2 for [ all|any ] expression { ; expression } ) regression-syy ( numeric_expression1 ;  numeric_expression2 for report ) Возвращает следующее вычисление после устранения нулевых (NULL) пар: REGR_COUNT(numeric_expression1, numeric_expression2) * VAR_POP(numeric_expression1) Пример: regression-syy ( Стоимость ;  Прибыль  for report) Результат: Вычисление syy для линии регрессии для элементов Стоимость и Прибыль. 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 Суммирующие функции даты и времени Данный список содержит готовые функции, возвращающие либо одно суммарное значение для набора членов, либо отдельные суммарные значения для каждого члена в наборе членов.
Ошибка Ошибка в выражении, выделенном маркером.
Конструкции Этот список содержит конструкции и шаблоны, которые можно использовать для создания выражения. Шаблоны объединяют несколько функций в группу. Например, шаблон оператора case с поиском включает функции case, when, else и end. search case Эта конструкция является шаблоном оператора case с поиском; она включает функции CASE, WHEN, ELSE и END. CASE WHEN [Country] = 'Canada' THEN ([List Price] * 0,60) WHEN [CountryCode] > 100 THEN [List Price] * 0,80 ELSE [List Price] END simple case Конструкция является шаблоном для simple case, включая функции CASE, WHEN, ELSE и END. CASE [Country] WHEN 'Canada' THEN ([List Price] * 0,60) WHEN 'Australia' THEN [List Price] * 0,80 ELSE [List Price] END if then else Эта конструкция является шаблоном для выражения if...then...else. Эта конструкция содержится в образце отчета "10 крупнейших розничных продавцов в 2005 году" в пакете хранилища данных GO (анализ). IF ([Country] = 'Canada') THEN ([List Price] * 0.60) ELSE ([List Price]) in_range Это шаблон выражения in_range. [код] IN_RANGE { :30 ; 40, 50, 999: } Пример: [код] IN_RANGE { 5 } Результат: Это эквивалентно значению [код] = 5 Пример: [код] IN_RANGE { 5: } Результат: Это эквивалентно значению [код] >= 5. Пример: [код] IN_RANGE { :5 } Результат: Это эквивалентно значению [код] <= 5. Пример: [код] IN_RANGE { 5:10 } Результат: Это эквивалентно значению ( [код] >= 5 and [код] <= 10 ). Пример: [код] IN_RANGE { :5,10,20: } Результат: Это эквивалентно значению ( [код] <= 5 or [код] = 10 or [код] >= 20 ).
Предикаты периодов Этот список содержит предикаты, которые можно использовать для сравнения выражений периодов. содержит Возвращает значение "true", если "period_expression1" содержит "period_expression2"; то есть, значение "true" будет возвращено, если первый период содержит значение даты и времени или все значения, содержащиеся во втором периоде. period_expression1 contains ( period_expression2 | datetime_expression ) period( 1989-11-01, 1991-05-19 ) contains period( 1991-05-19, 1991-06-04 ) Результат: false period( 1989-11-01, 1991-05-19 ) contains period( 1990-05-19, 1991-04-04 ) Результат: true period( 1989-11-01, 1991-05-19 ) contains 1991-04-04 Результат: true equals Возвращает "true", если у "period_expression1" и "period_expression2" одни и те же значения начала и конца периода. period_expression1 equals period_expression2 period( 1989-11-01, 1991-05-19 ) equals period( 1989-11-01, 1991-05-19 ) Результат: true immediately precedes Возвращает значение "true", если "period_expression1" идет непосредственно перед "period_expression2"; то есть, значение конца первого периода равно значению начала второго периода. period_expression1 immediately precedes period_expression2 period( 1989-11-01, 1991-05-19 ) immediately precedes period( 1991-05-19, 1991-06-04 ) Результат: true period( 1989-11-01, 1991-05-18 ) immediately precedes period( 1991-05-19, 1991-06-04 ) Результат: false immediately succeeds Возвращает значение "true", если "period_expression1" идет непосредственно перед "period_expression2"; то есть, значение начала первого периода равно значению конца второго периода. period_expression1 immediately succeeds period_expression2 period( 1991-05-19, 1994-01-10 ) immediately succeeds period( 1991-01-19, 1991-05-19 ) Результат: true period( 1991-05-19, 1994-01-10 ) immediately succeeds period( 1991-01-20, 1991-05-18 ) Результат: false overlaps Возвращает "true", если "period_expression1" перекрывается с "period_expression2"; то есть, у них есть хотя бы одно общее значение. period_expression1 overlaps period_expression2 period( 1991-05-19, 1994-01-10 ) overlaps period( 1993-01-19, 1995-05-19 ) Результат: true precedes Возвращает значение "true", если "period_expression1" предшествует "period_expression2"; то есть, все значения, содержащиеся в первом периоде, меньше или равны значению начала второго периода. period_expression1 precedes period_expression2 period( 1989-11-01, 1991-05-19 ) precedes period( 1991-05-19, 1991-06-04 ) Результат: true period( 1989-11-01, 1991-05-18 ) precedes period( 1991-05-19, 1991-06-04 ) Результат: true succeeds Возвращает значение "true", если "period_expression1" идет после "period_expression2"; то есть, все значения, содержащиеся в первом периоде, больше или равны значению конца второго периода. period_expression1 succeeds period_expression2 period( 1991-05-19, 1994-01-10 ) succeeds period( 1991-01-19, 1991-05-19 ) Результат: true period( 1991-05-20, 1994-01-10 ) succeeds period( 1991-01-20, 1991-05-19 ) Результат: true
Бизнес-функции для работы с датой и временем В этом списке содержатся бизнес-функции для выполнения вычислений даты и времени. _add_seconds ( time_expression, integer_expression ) Возвращает время или дату и время в зависимости от формата "time_expression", который получается при сложении количества секунд "integer_expression" с "time_expression". Пример: _add_seconds ( 13:04:59 , 1 ) Результат: 13:05:00 Пример: _add_seconds ( 2002-04-30 12:10:10.000, 1 ) Результат: 2002-04-30 12:10:11.000 Пример: _add_seconds ( 2002-04-30 00:00:00.000, 1/100 ) Обратите внимание на то, что второй аргумент не является целым числом. Функция поддерживается в некоторых методах работы с базами данных и увеличивает значение времени. Результат: 2002-04-30 00:00:00.010 _add_minutes ( time_expression, integer_expression ) Возвращает время или дату и время в зависимости от формата "time_expression", который получается при сложении количества минут "integer_expression" с "time_expression". Пример: _add_minutes ( 13:59:00 , 1 ) Результат: 14:00:00 Пример: _add_minutes ( 2002-04-30 12:59:10.000, 1 ) Результат: 2002-04-30 13:00:10.000 Пример: _add_minutes ( 2002-04-30 00:00:00.000, 1/60 ) Обратите внимание на то, что второй аргумент не является целым числом. Функция поддерживается в некоторых методах работы с базами данных и увеличивает значение времени. Результат: 2002-04-30 00:00:01.000 _add_hours ( time_expression, integer_expression ) Возвращает время или дату и время в зависимости от формата "time_expression", который получается при сложении количества часов "integer_expression" с "time_expression". Пример: _add_hours ( 13:59:00 , 1 ) Результат: 14:59:00 Пример: _add_hours ( 2002-04-30 12:10:10.000, 1 ) Результат: 2002-04-30 13:10:10.000, Пример: _add_hours ( 2002-04-30 00:00:00.000, 1/60 ) Обратите внимание на то, что второй аргумент не является целым числом. Функция поддерживается в некоторых методах работы с базами данных и увеличивает значение времени. Результат: 2002-04-30 00:01:00.000 _add_days ( date_expression; integer_expression ) Возвращает дату или дату и время в зависимости от формата "date_expression", который получается при сложении количества дней "integer_expression" и "date_expression". Пример: _add_days ( 2002-04-30 ; 1 ) Результат: 2002-05-01 Пример: _add_days ( 2002-04-30 12:10:10.000; 1 ) Результат: 2002-05-01 12:10:10.000 Пример: _add_days ( 2002-04-30 00:00:00.000; 1/24 ) Обратите внимание на то, что второй аргумент не является целым числом. Функция поддерживается в некоторых методах работы с базами данных и увеличивает значение времени. Результат: 2002-04-30 01:00:00.000 _add_months ( date_expression; integer_expression ) Прибавляет число месяцев в количестве "integer_expression" к "date_expression". Если в полученном месяце меньше дней, чем число компонента месяца, то будет возвращен последний день полученного в результате месяца. Во всех остальных случаях возвращенное значение будет тем же днем компонента месяца, что и выражение "date_expression". Пример: _add_months ( 2012-04-15 , 3 ) Результат: 2012-07-15 Результат не является последним днем полученного месяца. Пример: _add_months ( 2012-02-29 , 1 ) Результат: 2012-03-29 Используйте функцию _last_of_month, чтобы возвратить последний день месяца. Пример: _last_of_month ( _add_months ( 2012-02-29 , 1 ) ) Результат: 2012-03-31 День корректируется, так чтобы это был последний день полученного в результате месяца. Пример: _add_months ( 2012-01-31 , 1 ) Результат: 2012-02-29 Добавление во временную метку. Пример: _add_months ( 2002-04-30 12:10:10.000 , 1 ) Результат: 2002-05-30 12:10:10.000 _add_years ( date_expression; integer_expression ) Прибавляет число лет в количестве "integer_expression" к "date_expression". Если выражение "date_expression" - это 29 февраля, а полученный год не является високосным годом, то в качестве полученного дня будет задано 28 февраля. Во всех остальных случаях возвращенное значение будет тем же числом и месяцем, что и выражение "date_expression". Пример: _add_years ( 2012-04-15 , 1 ) Результат: 2013-04-15 29 февраля корректируется для невисокосных лет. Пример: _add_years ( 2012-02-29 , 1 ) Результат: 2013-02-28 Добавление во временную метку. Пример: _add_years ( 2002-04-30 12:10:10.000 ; 1 ) Результат: 2003-04-30 12:10:10.000 _age ( date_expression ) Возвращает числ, которое получается при вычитании "date_expression" из сегодняшней даты. Возвращенное значение имеет формат ГГГГММДД, где ГГГГ представляет количество лет, ММ - количество месяцев, а ДД - количество дней. Пример: _age ( 1990-04-30 ) (если сегодняшняя дата - 2003-02-05) Результат: 120906, что означает 12 лет, 9 месяцев и 6 дней. _date_to_int ( date_expression ) Возвращает целочисленное представление выражения "date_expression". Возвращенное значение имеет формат ГГГГММДД, где ГГГГ представляет количество лет, ММ - количество месяцев, а ДД - количество дней. Пример: _date_to_int ( 2003-01-01 ) Результат: 20030101 _day_of_week ( date_expression; integer ) Возвращает день недели (от 1 до 7), где 1 - это первый день недели, на что указывает второй параметр (от 1 до 7, где 1 - это понедельник, а 7 - воскресенье). Обратите внимание на то, что согласно стандарту ISO 8601, неделя начинается с понедельника, который является первым днем. Пример: _day_of_week ( 2003-01-01 ; 1 ) Результат: 3 _day_of_year ( date_expression ) Возвращает день в году (от 1 до 366) в выражении "date_ expression". Это так называемый юлианский день. Пример: _day_of_year ( 2003-03-01 ) Результат: 61 _days_between ( date_expression1 ; date_expression2 ) Возвращает положительное или отрицательное число, представляющее собой количество дней между "date_expression1" и "date_expression2". Если "date_expression1" < "date_expression2", то результатом будет отрицательное число. Пример: _days_between ( 2002-06-21 , 2002-04-30 ) Результат: 52 Пример: _days_between ( 2002-04-30 ; 2002-06-21 ) Результат: -52 _days_to_end_of_month ( date_expression ) Возвращает число, которое является количеством оставшихся дней в месяце от даты, указанной в выражении даты "date_expression". Пример: _days_to_end_of_month ( 2002-04-20 14:30:22.123 ) Результат: 10 _first_of_month ( date_expression ) Возвращает дату или дату и время, в зависимости от аргумента, путем преобразования значения выражения "date_expression" в дату первого дня того же месяца и года. Пример: _first_of_month ( 2002-04-20 ) Результат: 2002-04-01 Пример: _first_of_month ( 2002-04-20 12:10:10.000 ) Результат: 2002-04-01 12:10:10.000 _last_of_month ( date_expression ) Возвращает дату или дату и время, в зависимости от аргумента, последнего дня месяца, представленного значением "date_expression". Пример: _last_of_month ( 2002-01-14 ) Результат: 2002-01-31 Пример: _last_of_month ( 2002-01-14 12:10:10.000 ) Результат: 31.01.2002 12:10.000 _make_timestamp ( integer_expression1; integer_expression2; integer_expression3 ) Возвращает штамп времени, составленный из "integer_expression1" (год), "integer_expression2" (месяц) и "integer_expression3" (день). По умолчанию для части, относящейся ко времени, установлено значение: 00:00:00.000. Пример: _make_timestamp ( 2002 ; 01 ; 14 ) Результат: 2002-01-14 00:00:00.000 _months_between ( date_expression1; date_expression2 ) Возвращает положительное или отрицательное число, представляющее собой количество месяцев между "date_expression1" и "date_expression2". Если "date_expression1" раньше "date_expression2", возвращается отрицательное число. Пример: _months_between ( 2002-04-03 ; 2002-01-30 ) Результат: 2 Пример: _months_between ( 2002-01-30 , 2002-04-03 ) Результат: -2 _shift_timezone ( значение_временной_отметки , исходный_часовой_пояс , часовой_пояс_назначения ) _shift_timezone ( значение_временной_отметки_с_часовым_поясом , часовой_пояс_назначения ) Преобразует значение временной отметки из одного часового пояса в другой часовой пояс. Эта функция учитывает переход на летнее время, если это применимо. Если первый аргумент относится к типу "временная_метка", то второй и третий аргументы обозначают "исходный" часовой пояс и часовой пояс "назначения", соответственно. Если первый аргумент относится к типу "временная_метка_с_часовым_поясом", то "исходный" часовой пояс уже применен в первом аргументе, поэтому второй аргумент соответствует часовому поясу "назначения". Тип данных первого аргумента также определяет тип данных возвращаемого значения. Второй и третий аргументы относятся к типу "string" и соответствуют идентификаторам часовых поясов. Список этих идентификаторов можно найти ниже. Примечание: При использовании этой функции будет производиться локальная обработка. Пример: _shift_timezone( 2013-06-30 12:00:00 , 'America/New_York' , 'GMT' ) Результат: 2013-06-30 16:00:00 Пример: _shift_timezone( 2013-11-30 12:00:00-05:00 , 'America/Vancouver' ) Результат: 2013-11-30 09:00:00-08:00 Обозначения часовых поясов: 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 Можно также использовать настроенный идентификатор часового пояса, используя формат GMT(+|-)ЧЧ:ММ. Например, GMT-06:30 или GMT+02:00. _week_of_year ( date_expression ) Возвращает номер недели в году "date_expression" согласно стандарту ISO 8601. Неделя 1 годя - это первая неделя года, содержащая четверг, что эквивалентно первой неделе, содержащей 4 января. Неделя начинается в понедельник (1-ый день) и завершается в воскресенье (7-ой день). Пример: _week_of_year ( 2003-01-01 ) Результат: 1 _years_between ( date_expression1; date_expression2 ) Возвращает положительное или отрицательное число, представляющее собой количество лет между "date_expression1" и "date_expression2". Если "date_expression1" < "date_expression2", возвращается отрицательное число. Пример: _years_between ( 2003-01-30 ; 2001-04-03 ) Результат: 1 Пример: _years_between ( 2001-04-03 , 2003-01-30 ) Результат: -1 _ymdint_between ( date_expression1 ; date_expression2 ) Возвращает число, представляющее собой разность между "date_expression1" и "date_expression2". Возвращенное значение имеет формат ГГГГММДД, где ГГГГ представляет количество лет, ММ - количество месяцев, а ДД - количество дней. Пример: _ymdint_between ( 1990-04-30 ; 2003-02-05 ) Результат: 120905, что означает 12 лет, 9 месяцев и 5 дней. _year ( выражение_даты ) Возвращает значение поля year как "выражение_даты". Пример: _year ( 2003-03-01 ) Результат: 2003 _month ( выражение_даты ) Возвращает значение поля month как "выражение_даты". Пример: _month ( 2003-03-01 ) Результат: 3 _day ( выражение_даты ) Возвращает значение поля day как "выражение_даты". Пример: _day ( 2003-03-01 ) Результат: 1 _hour ( выражение_даты ) Возвращает значение поля hour как "выражение_даты". Пример: _hour ( 2002-01-31 12:10:10.254 ) Результат: 12 _minute ( выражение_даты ) Возвращает значение поля minute как "выражение_даты". Пример: _minute ( 2002-01-31 12:10:10.254 ) Результат: 10 _second ( выражение_даты ) Возвращает значение поля second как "выражение_даты". Пример: _second ( 2002-01-31 12:10:10.254 ) Результат: 10,254 _timezone_hour ( timestamp_with_time_zone_value ) _timezone_hour ( time_with_time_zone_value ) Возвращает значение поля часа суток для часового пояса в выражении. Типом выражения должно быть "отметка времени с часовым поясом" или "время с часовым поясом". Пример: _timezone_hour ( 2002-01-31 12:10:10.254-05:30 ) Результат: -5 _timezone_minute ( timestamp_with_time_zone_value ) _timezone_minute ( time_with_time_zone_value ) Возвращает значение поля минут для часового пояса в выражении. Типом выражения должно быть "отметка времени с часовым поясом" или "время с часовым поясом". Пример: _timezone_minute ( 2002-01-31 12:10:10.254-05:30 ) Результат: -30 _start_of_day ([ date_expression ]) Возвращает начало "date_expression" или начало сегодняшнего дня в виде отметки времени. Пример: _start_of_day ( 2014-11-23 12:10:10.254 ) Результат: 2014-11-23 00:00:00 Пример: _start_of_day() Результат: 2016-01-01 00:00:00 _end_of_day ([ date_expression ]) Возвращает конец "date_expression" или конец сегодняшнего дня в виде отметки времени. Пример: _end_of_day ( 2014-11-23 12:10:10.254 ) Результат: 2014-11-23 23:59:59 Пример: _end_of_day() Результат: 2016-01-01 23:59:59 _unix_timestamp ( выражение_даты ) Возвращает число секунд с 1970-01-01 00:00:00-00 для данного выражения "date_expression". Пример: _unix_timestamp ( 2014-11-23 ) Результат: 1416718800 _from_unixtime ( целочисленное выражение ) Возвращает время Unix, заданное выражением "integer_expression" в виде временной отметки с часовым поясом. Пример: _from_unixtime (1417807335) Результат: 2014-12-05 19:22:15+00:00
Макрофункции В этом списке приведены функции, которые могут использоваться в макросах. Макрос может содержать одну или несколько макрофункций. Макрос начинается символом решетки (#). Все, что находится между символами решетки воспринимается как выражение макроса и выполняется при работе программы. Для макрофункций, которые в качестве аргументов принимают выражения типа данных времени с часовым поясом, принятым форматом является 'гггг-мм-дд чч:мм:сс[.фф]+чч:мм', где часть долей секунды является необязательной и может быть представлена 1 - 9 цифрами. Вместо пробела, отделяющего дату от времени, можно также использовать букву 'T'. Также вместо часового пояса '+чч:мм' можно использовать букву 'Z', которая при внутренней обработке будет равносильна '+00:00'. Макрофункции, возвращающие выражения с типом данных временной отметки с часовым поясом, по умолчанию возвращают 9 цифр для части долей секунды. Макрофункция timestampMask() может при необходимости использоваться для отсечения этих исходящих данных. Возвращает временную отметку с часовым поясом (в виде строки), которая является результатом добавления "integer_expression" секунд к "string_expression", где "string_expression" представляет собой временную отметку с часовым поясом. _add_seconds ( string_expression , integer_expression ) Пример: # _add_seconds ( '2005-11-01 12:00:00.000-05:00' , -1 ) # Результат: 2005-11-01 11:59:59.000-05:00 Пример: # _add_seconds ( $current_timestamp , 1 ) # Результат: 2005-11-01 12:00:01.000000000-05:00 Пример: # timestampMask ( _add_seconds ( $current_timestamp , 1 ) , 'hh:mm:ss' ) # Результат: 12:00:01 Возвращает временную отметку с часовым поясом (в виде строки), которая является результатом добавления "integer_expression" минут к "string_expression", где "string_expression" представляет собой временную отметку с часовым поясом. _add_minutes ( string_expression , integer_expression ) Пример: # _add_minutes ( '2005-11-01 12:00:00.000-05:00' , -1 ) # Результат: 2005-11-01 11:59:00.000-05:00 Пример: # _add_minutes ( $current_timestamp , 1 ) # Результат: 2005-11-01 12:01:00.000000000-05:00 Пример: # timestampMask ( _add_minutes ( $current_timestamp , 1 ) , 'hh:mm:ss' ) # Результат: 12:01:00 Возвращает временную отметку с часовым поясом (в виде строки), которая является результатом добавления "integer_expression" часов к "string_expression", где "string_expression" представляет собой временную отметку с часовым поясом. _add_hours ( string_expression , integer_expression ) Пример: # _add_hours ( '2005-11-01 12:00:00.000-05:00' , -1 ) # Результат: 2005-11-01 13:00:00.000-05:00 Пример: # _add_hours ( $current_timestamp , 1 ) # Результат: 2005-11-01 13:00:00.000000000-05:00 Пример: # timestampMask ( _add_hours ( $current_timestamp , 1 ) , 'hh:mm:ss' ) # Результат: 13:00:00 Возвращает отметку времи с часовым поясом (в виде строки), которая является результатом добавления "integer_expression" дней к "string_expression", где "string_expression" представляет собой отметку времени с часовым поясом. Если первый аргумент представляет собой дату, указанную в виде строки в формате: гггг-мм-дд, возвращаемое значение представляет собой строку, отформатированную как дата. _add_days ( string_expression ; integer_expression ) Пример: # _add_days ( '2005-11-01 12:00:00.000-05:00' ; -1 ) # Результат: 2005-10-31 12:00:00.000000000-05:00 Пример: # _add_days ( $current_timestamp ; 1 ) # Результат: 2005-11-02 12:00:00.000000000-05:00 Пример: # timestampMask ( _add_days ( $current_timestamp ; 1 ) ; 'yyyy-mm-dd' ) # Результат: 2005-11-02 Пример: # _add_days( '2019-11-14' , 3 ) # Результат: 2019-11-17 Возвращает временную отметку с часовым поясом (в виде строки), которая является результатом добавления "integer_expression" месяцев к "string_expression", где "string_expression" представляет собой временную отметку с часовым поясом. Если первый аргумент представляет собой дату, указанную в виде строки в формате: гггг-мм-дд, возвращаемое значение представляет собой строку, отформатированную как дата. _add_months ( string_expression ; integer_expression ) Пример: # _add_months ( '2005-11-01 12:00:00.000-05:00' ; -1 ) # Результат: 2005-10-01 12:00:00.000000000-05:00 Пример: # _add_months ( $current_timestamp ; 1 ) # Результат: 2005-12-01 12:00:00.000000000-05:00 Пример: # timestampMask ( _add_months ( $current_timestamp ; 1 ) ; 'yyyy-mm-dd' ) # Результат: 2005-12-01 Пример: # _add_months( '2019-11-14' , -1 ) # Результат: 2019-10-14 Возвращает временную отметку с часовым поясом (в виде строки), которая является результатом добавления "integer_expression" лет к "string_expression", где "string_expression" представляет собой временную отметку с часовым поясом. Если первый аргумент представляет собой дату, указанную в виде строки в формате: гггг-мм-дд, возвращаемое значение представляет собой строку, отформатированную как дата. _add_years ( string_expression ; integer_expression ) Пример: # _add_years ( '2005-11-01 12:00:00.000-05:00' ; -1 ) # Результат: 2004-11-01 12:00:00.000000000-05:00 Пример: # _add_years ( $current_timestamp ; 1 ) # Результат: 2006-11-01 12:00:00.000000000-05:00 Пример: # timestampMask ( _add_years ( $current_timestamp ; 1 ) ; 'yyyy-mm-dd' ) # Результат: 2006-11-01 Пример: # _add_years( '2019-11-14' , -2 ) # Результат: 2017-11-14 _first_of_month ( string_expression ) Возвращает временную отметку с часовым поясом (в виде строки), преобразуя значение дня в строке "string_expression" в 1, где "string_expression" является временной отметкой с часовым поясом. Пример: # _first_of_month ( '2005-11-11 12:00:00.000-05:00' ) # Результат: 01.11.2005 12:00:00.000000000-05:00 Пример: # timestampMask ( _first_of_month ( '2005-11-11 12:00:00.000-05:00' ) ; 'yyyymmdd' ) # Результат: 20051101 _last_of_month ( string_expression ) Возвращает временную отметку с часовым поясом (в виде строки), которая является последним днем месяца, представленным строкой "string_expression", где "string_expression" является временной отметкой с часовым поясом. Пример: # _last_of_month ( '2005-11-11 12:00:00.000-05:00' ) # Результат: 2005-11-30 12:00:00.000000000-05:00 Пример: # timestampMask ( _last_of_month ( '2005-11-11 12:00:00.000-05:00' ) ; 'yyyy-mm-dd' ) # Результат: 2005-11-30 modelj ( 'иднтификатор' [ , 'путь_поиска_модели' [ , 'опции' ] ] ) Возвращает часть модели метаданных в формате json. Текущая модель будет использоваться, когда не указан 'путь_поиска_модели'. Для аргумента 'опции' может быть задано значение 'cleanup', это изменяет некоторые части результата на фиксированные значения (полезно для тестирования). sq ( modelj ( '[gosales].[страна].[страна]' ) Заключает строку "string_expression" в квадратные скобки. sb ( string_expression ) Пример: # sb ( 'abc' ) # Результат: [abc] Заключает строку "string_expression" в одинарные кавычки. sq ( string_expression ) Пример: # sq ( 'zero' ) # Результат: 'zero' Заключает строку "string_expression" в двойные кавычки. dq ( string_expression ) Пример: # dq ( 'zero' ) # Результат: "zero" Использует данные идентификации текущего зарегистрированного пользователя для поиска значений в таблице параметров. Каждый отдельный компонент данных идентификации пользователя (имя учетной записи, имена групп, названия ролей), используется как ключ к таблице. Затем уникальный список значений, полученных из таблицы параметров, возвращается в виде строки, где каждое значение заключено в одинарные кавычки, а список значений разделен запятыми. CSVIdentityName ( %parameter_map_name [ ; separator_string ] ) Пример: # CSVIdentityName ( %security_clearance_level_map ) # Результат: 'level_500' , 'level_501' , 'level_700' Возвращает компоненты данных идентификации пользователя (имя учетной записи, имена групп, названия ролей), в виде списка строк. Затем уникальный список значений возвращается в виде строки, где каждое значение заключено в одинарные кавычки, а список значений разделен запятыми. CSVIdentityNameList ( [ separator_string ] ) Пример: # CSVIdentityNameList ( ) # Результат: 'Все' , 'Администраторы отчетов' , 'Пользователь' Возвращает паспорт Cognos® Access Manager. CAMPassport ( ) Пример: # CAMPassport ( ) # Результат: 111:98812d62-4fd4-037b-4354-26414cf7ebef:3677162321 Возвращает компоненты Cognos® Access Manager ID (CAMID) пользователя (имя учетной записи, имена групп, названия ролей), в виде списка, разделенного запятыми. CAMIDList ( [ separator_string ] ) Пример: #CAMIDList ( ) # Результат: CAMID ( "::Everyone" ) ; CAMID ( ":Authors" ) ; CAMID ( ":Query Users" ) ; CAMID ( ":Consumers" ) ; CAMID ( ":Metrics Authors" ) Возвращает массив ID пользователя Cognos® Access Manager (CAMID), исходя из типа данных (учетная запись, группа или роль). CAMIDListForType можно использовать в функциях макросов csv или join. CAMIDListForType ( identity type ) Пример: [qs].[userRole] in ( # csv ( CAMIDListForType ( 'role' ) ) # ) Результат: [qs].[userRole] in ( 'CAMID ( "::System Administrators" ) ' ; 'CAMID ( ":Authors" )' ) Сцепляет две строки. value1 + value2 Пример: # '{ ' + $runLocale + ' }' # Результат: {en-us} Убирает символы из начала первого аргумента. Необязательный второй аргумент задает набор символов, которые нужно убрать. По умолчанию, эта функция убирает пробел (то есть, пробел, символ табуляции, символ возврата каретки и перевода строки). lstrip ( строчное_выражение [ ; набор_символов ] ) Пример: # sq( lstrip ( ' abc ' ) ) # Результат: 'abc ' Пример: # lstrip ( ' 0053.2100 ' ; '0 \t\r\n' ) # Результат: 53.2100 Возвращает значение параметра "parameterName", если он определен. Значение "defaultText" будет возвращено, если "parameterName" не существует. Если для "datatype" задано значение "string", значение результата будет заключено в одинарные кавычки. Использование этой функции не вызывает исключительной ситуации, инициированной отсутствием параметра. ParamValue ( parameterName [ , defaultText [, datatype ] ] ) Пример: # ParamValue ( 'p_country' ) # Результат: 'Canada' - Задано значение p_country Результат: null - p_country не является известным параметром Результат: null - p_country используется как необязательное приглашение, и значение этого параметра не задано Пример: # ParamValue ( 'p_country' , 'Netherlands' ) # Result: 'Canada' - Задано значение p_country Результат: 'Netherlands' - p_country не является известным параметром Результат: 'Netherlands' - p_country используется как необязательное приглашение, и значение этого параметра не задано Пример: # ParamValue ( 'p_country', ' cast ( null as varchar(20)) ' , 'token' ) # Результат: 'Canada' - Задано значение p_country Результат: cast ( null as varchar(20)) - p_country не является известным параметром Результат: cast ( null as varchar(20)) - p_country используется как необязательное приглашение, и значение этого параметра не задано Запрашивает у пользователя одно значение или один член. Необходимо только "prompt_name" (имя приглашения). Если не указан тип данных, по умолчанию используется 'string'. Приглашение является необязательным, если задан элемент "defaultText" (текст по умолчанию). Элемент "Text", в том случае, если он указан, будет находиться перед значением. Можно указать элемент запроса ("QueryItem"), чтобы воспользоваться свойствами информации приглашения элемента запроса ("queryItem"). Завершающий текст ("Trailing_text"), если он задан, присоединяется в конец значения. Если типом данных является 'memberuniquename' (уникальное имя члена), создается приглашение для выбора одного члена. Рекомендуется задать значение по умолчанию в качестве третьего аргумента. Значение по умолчанию должно быть действительным уникальным именем члена; оно также может представлять собой алиас, ссылающийся на уникальное имя члена, как это делается в Report Studio. prompt ( prompt_name ; datatype ; defaultText ; text ; queryItem ; trailing_text ) Пример: select . . . where COUNTRY_MULTILINGUAL.COUNTRY_CODE > #prompt ( 'Starting CountryCode' ; 'integer' ; '10' ) # Результат: select . . . where COUNTRY_MULTILINGUAL.COUNTRY_CODE > 10 Пример: [gosales].[COUNTRY].[COUNTRY] = # prompt ( 'countryPrompt' , 'string' , '''Канада''' ) # Результат: [gosales].[COUNTRY].[COUNTRY] = 'Канада' Пример: set ( #prompt ('myProduct', 'memberuniquename', '[Туристическое снаряжение]', '', '[Продажи].[Продукт].[Продукт].[Линия продуктов]')#) Результат: set([Продажи].[Продукт].[Продукт].[Линия продуктов]->[all].[1]) Необходимо указать параметр "defaultText", который является действительным в контексте макроса, так как к данному значению форматирование не применяется. Строка по умолчанию '''Канада''' в Примере 2 указана как строка, использующая одинарные кавычки, в которой встроенные одинарные кавычки удваиваются, в результате чего получаются тройные кавычки. В результате строка правильно отображается в выражении в одинарных кавычках. Как правило для строчного типа данных всегда нужно указывать "defaultText", как показано здесь, кроме употребления в контексте сохраненного параметра процедуры. Для "defaultText" типа 'дата' или 'дата-время' следует использовать специальный фомат в контексте SQL. Примеры данного формата: 'DATE ''2001-12-25''' и 'DATETIME ''2001-12-25 12:00:00'''. Во всех других контекстах используйте дату/дату-время без ключевого слова и отключенных одинарных кавычек (например, '2001-12-25'). Запрашивает у пользователя одно или несколько значений или членов. Необходимо только "prompt_name" (имя приглашения). Если не указан тип данных, по умолчанию используется 'string'. Приглашение является необязательным, если задан элемент "defaultText" (текст по умолчанию). Элемент "Text", в том случае, если он указан, будет находиться перед списком значений. Можно указать элемент запроса ("QueryItem"), чтобы воспользоваться свойствами информации приглашения элемента запроса ("queryItem"). Завершающий текст ("Trailing_text"), если он указан, присоединяется к концу списка значений. Если типом данных является 'memberuniquename' (уникальное имя члена), создается приглашение для выбора нескольких членов. Рекомендуется задать значение по умолчанию в качестве третьего аргумента. Значение по умолчанию должно быть действительным уникальным именем члена; оно также может представлять собой алиас, ссылающийся на уникальное имя члена, как это делается в Report Studio. promptmany ( prompt_name ; datatype ; defaultText ; text ; queryItem ; trailing_text ) Пример: select . . . where COUNTRY_MULTILINGUAL.COUNTRY in ( # promptmany ( 'CountryName' ) # ) Результат: select . . . where COUNTRY_MULTILINGUAL.COUNTRY_CODE in ( 'Canada' ; 'The Netherlands' ; 'Russia' ) Пример: select . . . from gosales.gosales.dbo.COUNTRY_MULTILINGUAL COUNTRY_MULTILINGUAL ; gosales.gosales.dbo.COUNTRY XX where COUNTRY_MULTILINGUAL.COUNTRY_CODE = XX.COUNTRY_CODE # promptmany ( 'Selected CountryCodes' ; 'integer' ; ' ' ; ' and COUNTRY_MULTILINGUAL.COUNTRY_CODE in ( ' ; '' ; ' ) ' ) # Результат: 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 ( 'Canada' ; 'The Netherlands' ; 'Russia' ) Пример: set ( #promptmany ('myProduct', 'memberuniquename', '[Туристическое снаряжение]', '', '[Продажи].[Продукт].[Продукт].[Линия продуктов]')#) Результат: set([Продажи].[Продукт].[Продукт].[Линия продуктов]->[all].[1]; [Продажи].[Продукт].[Продукт].[Линия продуктов]->[all].[2]) Выполнить запрос для одного столбца и возвратить значение в первой (единственной) строке. Результат не форматируется; убедитесь, что вызов с sq ( ) необходим. queryValue ( value_expression [ , filter_expression ] ) Пример: # sq ( queryValue ( 'TheCalendar.TheWeekdayName' , 'TheCalendar.TheDate = 2018-06-06' ) ) # Результат: 'Wednesday' Создает массив из списка параметров. array ( string_expression|array_expression { ; string_expression|array_expression } ) Пример: # csv ( array ( 'a1' ; array ( 'x1' ; 'x2' ) ; 'a2' ) ) # Результат: 'a1' ; 'x1' ; 'x2' ; 'a2' Выстраивает строку из элементов множества, в котором значения разделены запятыми. Дополнительно можно задать разделитель и строки в кавычках. Разделителем по умолчанию является точка с запятой ( ; ), а символом кавычек по умолчанию является одинарная кавычка ( ' ). csv ( array_expression [ ; separator_string [ ; quote_string ] ] ) Пример: # sq ( csv ( array ( 'a1' , 'a2' ) ) ) # Результат: 'a1' , 'a2' Получить запись из файла конфигурации IBM® Cognos®. Опция force_decode_flag выставляется по выбору и должна быть одна из: 'true' , '1', 1 , 'false', '0', 0. Значение по умолчанию: "true". В исключительных случаях для force_decode_flag следует задать значение true. Если для force_decode_flag задано значение true, то для записей, сконфигурированных в конфигурации IBM® Cognos® при помощи дополнительных свойств будет возвращено значение в виде простого текста. Для записей, не указанных в дополнительных свойствах, будет возвращена пустая строка независимо от наличия шифрованной информации. Запись в дополнительных свойствах - это qs.getConfigurationEntry.1 и представляет собой список имен, разделенный точками с запятой; по умолчанию, этот список имен пуст, и вызовы этой функции с флагом, для которого задано значение true, возвратят пустую строку. getConfigurationEntry ( entry_string ; force_decode_flag ) Пример: # getConfigurationEntry ( 'serverLocale'  ) # Результат: en Возвращает запись из файла ресурсов. Первый аргумент - ID ресурса, обнаруженный в файле ресурса. Необязательный второй аргумент - имя файла ресурсов без суффикса локали (например, 'mfwa4j' для файла сообщений 'mfwa4j_en.properties'). Файл ресурсов по умолчанию - 'xqejavamsgs'. Необязательный третий аргумент - это локаль, для которой по умолчанию используется 'en'. getResourceString ( строка_id_ресурса [, строка_файла_ресурсов [ , строка_локали ] ] ) Пример: # getResourceString ( 'XQE_BIN_binLow' ) # Результат: XQE-BIN-0001 меньше, чем %1 Пример: # getResourceString ( 'MFW_UT_INTERNAL_ERROR' , 'mfw4j' , 'en' ) # Результат: MFW-UT-1002 Произошла внутренняя ошибка. Обратитесь к системному администратору. Ищет и возвращает элементы массива, которые соответствуют шаблону, заданному в "pattern_string". Единственные поддерживаемые метасимволы - это: ^ (начало слова), $ (конец слова), ! (отрицание - поддерживается только как первый символ). grep ( pattern_string ; array_expression ) Пример: # sq ( csv ( grep ( 's' , array ( 'as', 'an', 'arts' ) ) ) ) # Результат: 'as', 'arts' Пример: # sq ( csv ( grep ( '^g' , array ( 'группа, 'гольф' ) ) ) ) # Результат: 'группа', 'гольф' Пример: # sq ( csv ( grep ( 'ы$' , array ( 'апельсины', 'бананы' ) ) ) ) # Результат: 'апельсины', 'бананы' Пример: # sq ( csv ( grep ( '!ь' , array ( 'апельсины', 'яблоки' ) ) ) ) # Результат: 'яблоки' Найти, на каком смещении в 'str' находится 'substr'. Если элемент 'substr' не будет найден, будет возвращено значение -1. Также можно дополнительно указать смещение ('offset'), с которого следует начать поиск. Первым аргументом 'str' может также быть array_expression; в этом случае функция применяется к каждому элементу массива, а результатом функции будет массив значений. index ( str , substr [ , offset ] ) # index ( 'The black horse jumped over the black sheep.', 'black' ) # Результат: 4 # index ( 'The black horse jumped over the black sheep.', 'black', 10 ) # Результат: 32 # index ( 'The black horse jumped over the black sheep.', 'green' ) # Результат: -1 # sq ( join ( ' | ', index ( array ('black' , 'red', 'green' ) , 'e' ) ) ) # Результат: -1 | 1 | 2 Объединяет элементы массива с помощью разделителя "separator_string". join ( separator_string ; array_expression ) Пример: # sq ( join ( ' | | ' ; array ( 'as'; 'an'; 'arts' ) ) ) # Результат: 'as | | an | | arts' Вычисляет число символов в string_expression. Если задан аргумент array_expression, результатом будет массив значений, и каждая запись будет представлять собой число символов в каждом из элементов array_expression. length ( string_expression | array_expression ) length ( 'abcdef' ) Результат: 6 join ( '--', length ( array ( 'abcdef' , 'xyz' ) ) ) Результат: 6--3 Найти последнее смещение в 'str', где находится 'substr'. Эта функция называется обратным индексом; ее можно рассматривать как просмотр, начинающийся с конца строки. Если элемент 'substr' не будет найден, будет возвращено значение -1. Также можно дополнительно указать смещение ('offset'), на котором следует закончить поиск. Первым аргументом 'str' может быть array_expression; в этом случае функция применяется к каждому элементу массива, а результатом функции будет массив значений. rindex ( str , substr [ , offset ] ) # rindex ( 'The black horse jumped over the black sheep.', 'black' ) # Результат: 32 # rindex ( 'The black horse jumped over the black sheep.', 'black', 10 ) # Результат: 4 # rindex ( 'The black horse jumped over the black sheep.', 'green' ) # Результат: -1 # sq ( join ( ' | ', rindex ( array ('black' , 'red', 'green' ) , 'e' ) ) ) # Результат: -1 | 1 | 3 Убирает символы из конца первого аргумента. Необязательный второй аргумент задает набор символов, которые нужно убрать. По умолчанию, эта функция убирает пробел (то есть, пробел, символ табуляции, символ возврата каретки и перевода строки). rstrip ( строчное_выражение [ ; набор_символов ] ) Пример: # sq( rstrip ( ' abc ' ) ) # Результат: ' abc' Пример: # rstrip ( ' 0053.2100 ' ; '0 \t\r\n' ) # Результат: 0053.21 Сортирует элементы массива в алфавитном порядке. Одинаковые элементы сохраняются. sort ( array_expression ) Пример: # csv ( sort ( array ( 's3'; 'a'; 'x' ) ) ) # Результат: 'a'; 's3'; 'x' Разбивает строку или элементы строки массива на отдельные элементы. split ( pattern_string; string_expression|array_expression ) Пример: # sq ( csv ( split ( '::', 'ab=c::de=f::gh=i' ) ) ) # Результат: 'ab=c' , 'de=f', 'gh=i' Пример: # sq ( csv ( split ( '=' , split ( '::', 'ab=c::de=f::gh=i' ) ) ) ) # Результат: 'ab' , 'c' , 'de' , 'f', 'gh' , 'i' Убирает символы из начала и из конца первого аргумента. Необязательный второй аргумент задает набор символов, которые нужно убрать. По умолчанию, эта функция убирает пробел (то есть, пробел, символ табуляции, символ возврата каретки и перевода строки). strip ( строчное_выражение [ ; набор_символов ] ) Пример: # sq( strip ( ' abc ' ) ) # Результат: 'abc' Пример: # strip ( ' 0053.2100 ' ; '0 \t\r\n' ) # Результат: 53.21 Ищет шаблон в строке или в элементах строки массива и заменяет первую запись "pattern_string" на "replacement_string". Единственные поддерживаемые метасимволы - это: ^ (начало слова), $ (конец слова) substitute ( pattern_string; replacement_string; string_expression|array_expression ) Пример: #sq ( substitute ( '^cn='; '***'; 'cn=help' ) )# Результат: '***help' Пример: # csv ( substitute ( '^cn='; '***'; array ( 'cn=help' ; 'acn=5' ) ) ) # Результат: '***help' , 'acn=5' Пример: # csv ( substitute ( 'cn='; ''; array ( 'cn=help' ; 'acn=5' ) ) ) # Результат: 'help' , 'a5' Пример: #sq ( substitute ( 'help$', '***', 'cn=help' ) )# Результат: 'cn=***' Извлекает фрагмент из 'string_expression', начиная со смещения 'start_offset'. Можно указать, что следует извлечь символы в количестве 'length'. Если значение 'length' не указано, будет возвращен весь фрагмент до конца 'string_expression'. Первым аргументом может также быть array_expression; в этом случае функция применяется к каждому элементу массива, а результатом функции будет массив строк. substr ( string_expression , start_offset [ , length ] ) substr ( 'The horse is black.', 0, 3 ) Результат: The substr ( 'The horse is black.', 4 ) Результат: horse is black. substr ( 'The horse is black', index ('The horse is black.' , 'green' ) ) Результат: The horse is black. join ( ' | ', substr ( array ('black' , 'red', 'green' ) , 2, 2 ) ) Результат: ac | d | en substr ('over the moon', -2, 4) Приведет к ошибке: второй аргумент функции 'substr' должен быть больше или равен -1.' . Возвращает строку "string_expression1", представляющую временную отметку с часовым поясом, усеченную до формата, указанного в строке "string_expression2". Формат строки "string_expression2" должен быть одним из следующих: 'гггг' , 'мм' , 'дд' , 'гггг-мм' , 'ггггмм' , 'гггг-мм-дд' , 'ггггммдд' , 'гггг-мм-дд чч:мм:сс' , 'гггг-мм-дд чч:мм:сс+чч:мм' , 'гггг-мм-дд чч:мм:сс.фф3' , 'гггг-мм-дд чч:мм:сс.фф3+чч:мм' , 'гггг-мм-ддTчч:мм:сс' , 'гггг-мм-ддTчч:мм:сс+чч:мм' , 'гггг-мм-ддTчч:мм:сс.фф3+чч:мм' , 'гггг-мм-ддTчч:мм:сс.фф3+чч:мм'. Макрофункции, возвращающие строчное представление временной отметки с часовым поясом, показывают точность в 9 цифр для долей секунды по умолчанию. Варианты формата позволяют урезать это значение до 3 цифр или 0. timestampMask ( string_expression1 ; string_expression2 ) Пример: # timestampMask ( $current_timestamp ; 'yyyy-dd-mm' ) # Результат: 2005-11-01 Пример: # timestampMask (  '2005-11-01 12:00:00.000-05:00' ; 'yyyy-mm-dd hh:mm:ss+hh:mm' ) # Результат: 2005-11-01 12:00:00-05:00 Пример: # timestampMask (  '2005-11-01 12:00:00.123456789-05:00' ; 'yyyy-mm-ddThh:mm:ss+hh:mm.ff3+hh:mm' ) # Результат: 2005-11-01T12:00:00.123-05:00 Возвращает строчное представление временной отметки с часовым поясом, которое является результатом настройки значения "string_expression" в соответствии с часовым поясом операционной системы. Обратите внимание на то, что макрофункция timestampMask() может использоваться для урезания исходящего значения. toLocal ( string_expression ) Пример: # toLocal ( '2005-11-01 17:00:00.000-00:00' ) # where OS local time zone is -05:00 Результат: 01.11.2005 12:00:00.000000000-05:00 Пример: # timestampMask ( toLocal ( '2005-11-01 17:00:00.000-00:00' ) ; 'yyyy-mm-dd hh:mm:ss+hh:mm' ) #, где местный часовой пояс ОС -05:00. Результат: 2005-11-01 12:00:00-05:00 Пример: # toLocal ( '2005-11-01 13:30:00.000-03:30' ) #, где местный часовой пояс ОС -05:00 Результат: 01.11.2005 12:00:00.000000000-05:00 Возвращает строку "строчное_выражение", в которой все символы преобразованы в нижний регистр с использованием правил локали "строчная_локаль". Если локаль не задана, используется локаль 'en'. tolower ( строчное_выражение [ ; строчная_локаль ] ) Пример: # tolower ( 'ABC' ) # Результат: abc Пример: # tolower ( 'ABC' ; 'fr' ) # Результат: abc Возвращает строку "строчное_выражение", в которой все символы преобразованы в верхний регистр с использованием правил локали, заданной значением "строчная_локаль". Если значение "строчная_локаль" не задано, используется локаль 'en'. toupper ( строчное_выражение [ ; строчная_локаль ] ) Пример: # toupper ( 'abc' ) # Результат: ABC Пример: # toupper ( 'abc' ; 'fr' ) # Результат: ABC Возвращает строчное представление временной отметки с часовым поясом, которое является результатом настройки значения "string_expression" в соответствии с часовым поясом UTC, принятым за точку отсчета, который также известен как время GMT. Обратите внимание на то, что макрофункция timestampMask() может использоваться для урезания исходящего значения. toUTC ( string_expression ) Пример: # toUTC ( '2005-11-01 12:00:00.000-05:00' ) # Результат: 2005-11-01 17:00:000,000000000-00:00 Пример: # timestampMask( toUTC ( '2005-11-01 12:00:00.000-05:00' ) ; 'yyyy-mm-dd hh:mm:ss.ff3+hh:mm' ) # Результат: 2005-11-01 17:00:00.000-00:00 Пример: # toUTC ( $current_timestamp ) # Результат: 2005-11-01 17:00:000,000000000-00:00 Удаляет из массива одинаковые записи. Порядок элементов сохраняется. unique ( array_expression ) # csv ( unique ( array ( 's3'; 'a'; 's3'; 'x' ) ) ) # Результат: 's3', 'a', 'x' URL-кодировка переданного аргумента. Эта функция пригодится при указании строк соединения XML. urlencode ( prompt ( 'userValue' ) ) urlencode ( prompt ( 'some_val' ) ) %27testValue%27 simple case Эта конструкция макросов является шаблоном для simple case, включая функции case, when, then, else и end. Учтите, что эта конструкция макроса поддерживается только в режиме DQM. CASE <выражение> WHEN <литерал> THEN <выражение> [ELSE <выражение>] END Пример: #CASE prompt('pDateRange','token') WHEN 'Current Week' THEN '[PR Current Week]' ELSE '[PR Prior Week]' END# Результат: [PR Current Week]
Функции блока В данном списке представлены функции, которые используются для получения доступа к членам множества, обычно при работе в Analysis Studio. Возвращает первые члены, найденные в множестве, значения которых достигают значения "numeric_expression_maximum" + "numeric_expression_overflow". Если значение "numeric_expression_maximum" + "numeric_expression_overflow". превышено, возвращается только максимальное количество членов. Для множества, содержащего лишь несколько членов, значения которых больше numeric_expression_maximum, numeric_expression_overflow позволяет включить небольшое количество дополнительных членов. Если количество членов в множестве превышает overflow, возвращается только numeric_expression_maximum членов. _firstFromSet ( set_expression ; numeric_expression_maximum ; numeric_expression_overflow ) _firstFromSet ( [great_outdoors_company].[Товары].[Товары].[Линейка продуктов] , 2 , 8 ) Результат: Возвращает пять членов множества Линейка продуктов. Первые два члена возвращаются в ряду максимальных, а последующие три члена возвращаются в качестве значений переполнения. Туристическое снаряжение Снаряжение для гольфа Альпинистское снаряжение Средства защиты Личные принадлежности _firstFromSet ( [great_outdoors_company].[Товары].[Товары].[Линейка продуктов] , 2 , 2 ) Результат: Туристическое снаряжение, Снаряжение для гольфа Возвращает множество, содержащее "member_expression", когда размер "set_expression" превышает "numeric_expression": например, новый член будет создан, если количество членов множества "set_expression" превышает заданное значение "numeric_expression". _remainderSet ( member_expression; set_expression ; numeric_expression ) _remainderSet ( member ( aggregate ( currentMeasure within set [great_outdoors_company].[Товары].[Товары].[Линейка продуктов] ) , 'Агрегат товаров' , 'Агрегат товаров' , [great_outdoors_company].[Товары].[Товары] ) , [great_outdoors_company].[Товары].[Товары].[Линейка продуктов] , 1 ) Результат: Проданное количество товара для Агрегата продуктов.