Envison функции

Список функций Envision












Главная » Ресурсы » Здесь

На данной странице приводится список функций, поддерживаемых Envision. Основное назначение функций — расширение возможностей Envision там, где базового синтаксиса не хватает.


Синтаксис функций

Общий синтаксис для функций выглядит следующим образом:
x = fun(arg1, arg2, arg3)
Оператор fun заменяется на имя функции, а argN представляет собой список аргументов через запятую, присвоенных функции. Все функции работают по векторам.

Математические функции

  • abs(number) — напоминает функцию ABS в Excel.
  • ceiling(number) — напоминает функцию ОКРВВЕРХ в Excel.
  • exp(number) — напоминает функцию EXP в Excel.
  • floor(number) — напоминает функцию ОКРВНИЗ в Excel.
  • log(number, base) — напоминает функцию LOG в Excel. Аргумент base не является обязательным. Если его опустить, значение будет равно 10.
  • max(num1, num2, num3, ..., numN) — напоминает функцию МАКС в Excel.
  • min(num1, num2, num3, ..., numN) — напоминает функцию МИН в Excel.
  • norminv(number) — напоминает функцию НОРМОБР в Excel со средним значением 0 и стандартным отклонением 1.
  • pow(number, exponent) — напоминает функцию СТЕПЕНЬ в Excel. Envision также поддерживает оператор степени number ^ exponent, который выполняет ту же функцию.
  • round(number, digits) — напоминает функцию ОКРУГЛ в Excel. Второй аргумент не является обязательным, он отражает количество символов, которое необходимо отобразить.
  • sqrt(number) — напоминает функцию КОРЕНЬ в Excel.

Текстовые функции

  • concat(text1, text2, ..., textN) — соединяет текстовые значения от text1 до textN.
  • contains(text, pattern) — возвращает значение true, если текст содержит указанную последовательность.
  • endswith(text, pattern) — возвращает значение true, если текст содержит указанную последовательность в конце.
  • field(text, separator, index): — возвращает n-ое поле (с нулевым индексом) в текстовом значении, которое содержит несколько вложенных строк, отделенных указанным разделителем. Пример: field("a-b-c-d-", "-", 2) == "c". Данная функция вводится для прочтения значений, которые соединены в одном столбце таблицы.
  • indexof(text, pattern) — возвращает индекс первого случая появления последовательности в тексте, или -1, если такой случай не обнаружен.
  • lowercase(text) — возвращает текст в нижнем регистре.
  • parsedate(text, format) — преобразует текст в дату в указанном формате. Формат указывать необязательно. При пропуске формата дата считывается в соответствии с функцией автоматического распознавания дат Envision. Если формат указан, дата считывается в соответствии с ним. См. «Выбор пользовательского формата даты» для получения более подробной информации о соответствующем синтаксисе. Если дату считать невозможно, будет установлено значение 2001-01-01.
  • parsenumber(text) — преобразует текст в число. Анализатор использует функцию автоматического распознавания чисел Envision. Если число не прочитывается, значение устанавливается на ноль.
  • parsetime(text, format) — преобразует время дня в дробь от 0 до 1. Формат указывать необязательно. Если формат не указан, по умолчанию используется yyyy-MM-dd HH:mm:ss. Envision использует пользовательский формат времени.
  • replace(text, pattern, replacement) — возвращает текст, где все случаи появления одной последовательности заменены на другую последовательность символов. Данная функция напоминает функцию ЗАМЕНЫ в Excel, кроме аргумента instance_num.
  • startswith(text, pattern) — возвращает значение true, если текст начинается с указанной последовательности символов.
  • strlen(text) — возвращает длину текстового аргумента.
  • substr(text, start, count) Начальное положение определяется start. Отрицательное значение подразумевает отклонение от конца строки, в иных случаях отклонение отсчитывается от начала строки. Длина возвращенной строки определяется по count, это значение приравнивается к 0 при count < 0. Если сегмент полностью или частично выходит за пределы строки, например substr("A", 2, 1), то он обрезается до нужного размера. Функция substr(text, start) определяется как substr(text, start, <infinity>).
  • uppercase(text) — возвращает текст в верхнем регистре.

Календарные функции

  • "\{myDate:yyyy-MM-dd}" — пользовательский формат данных во всех строках. Формат даты указывается токеном, который стоит после точки с запятой. Подробнее о формате дат.
  • chineseYear(date) — возвращает текущий год по китайскому календарю.
  • chineseYearEnd(date) — возвращает последний день текущего года по китайскому календарю.
  • chineseYearStart(date) — возвращает первый день текущего года по китайскому календарю.
  • date(y, m, d) — возвращает дату, состоящую из года, месяца и дня, являющихся аргументами. Аргументы y, m и d должны быть представлены числами.
  • monday(date) — возвращает дату первого понедельника перед датой (включительно).
  • month(date) — возвращает номер месяца, в котором содержится дата, расчет месяцев начинается с 1 января 2001 г.
  • monthnum(date) — возвращает соответствующий номер месяца (1–12) для даты, являющейся аргументом.
  • today(timezone) — возвращает дату, при этом временной пояс является аргументом и выражается в виде разницы в часах по сравнению с UTC.
  • year(date) — возвращает соответствующий год для даты, являющейся аргументом. Аналог функции ГОД в Excel.
  • yearStart(date) — возвращает первый день текущего года.
  • yearEnd(date) — возвращает последний день текущего года.
  • weeknum(date) — напоминает функцию НОМНЕДЕЛИ (System 2) в Excel.

Ранжирующие функции

  • argfirst(ordering, group) — возвращает значение true для одного первого значения группы в соответствии с порядком значений (сортировка). Группу указывать необязательно. Когда группа указана, функция возвращает значение true один раз для каждой группы. Для удобства также предоставляется перегрузка argfirst(ordering, group) where condition. При использовании опции where могут появиться группы без значений true, потому что условие является false (ложным) для всей группы.
  • arglast(ordering, group) — то же самое, что argfirst(), но возвращает значение true для одного последнего значения.
  • cumsum(number, rank, group) — возвращает накопленную сумму всех чисел в соответствии с возрастанием ранга. Группу указывать необязательно. Если группа указана, она используется для расчета локальной накопленной суммы для каждой группы.
  • fifo(V, T.D, T.Q) — помощь при проведении FIFO-анализа запасов. Возвращает количество нераспроданных товаров в виде вектора T. Вектор V отражает все запасы. Таблица T содержит заказы на закупку. В T.D содержатся даты, а в T.Q — объемы закупок. Данная функция рассчитывает количество нераспроданного товара, воспроизводя заказы на закупку в обратном хронологическом порядке. См. также Принцип FIFO
  • rank(number, group) — возвращает ранг числовых значений без привязок. Напоминает функцию РАНГ.РВ в Excel, однако здесь все числа получают отдельный ранг (приоритет элементов с одинаковым рангом выбирается произвольно). Группу указывать необязательно. Если группа указана, она используется для расчета локальных рангов для каждой группы.
  • rankd(number) — возвращает ранги числовых значений, одинаковые значения получают одинаковый ранг. Напоминает функцию РАНГ.РВ в Excel.

Графические функции

  • canonical(A, B) — выдает канонического представителя для всех значений A. На практике данная функция используется для замены кодов (например для замены кодов SKU). Например, функция canonical(OldSku, NewSku) выдает значения последних доступных SKU для каждого элемента, после чего выполняет замены. См. также nonCanonical().
  • nonCanonical(A, B) — возвращает значение true, когда невозможно рассчитать канонического представителя для A. Это происходит при обнаружении циклических алгоритмов или алгоритмов ветвления.
  • connected(A, B, group) — анализирует неориентированный граф, описанный всеми ребрами (A,B), а затем возвращает для всех улов A имя наименьшего узла связанного компонента A. Под "наименьшим" узлом понимается узел с самым маленьким именем (получено путем сравнения строк). Группу указывать необязательно. Если группа указана, набор данных сначала разделяется в соответствии с указанными группами.

Алгебра распределения

См. статью об алгебре распределения

Параметрические функции распределения

Система позволяет создавать параметрические функции, в которых число выступает в роли аргумента (параметра) и которые возвращают функцию распределения.

  • dirac(n) возвращает функцию равную нулю во всех точках, кроме n, где она равна 1.
  • identity(n) возвращает функцию $\text{id}: k \to k$, но она ограничена сегментом [0;n] и равна 0 в других точках.
  • uniform(n) возвращает функцию $\text{unif}: k \to 1$, но она ограничена сегментом [0;n] и равна 0 в других точках.
  • uniform(n) возвращает функцию $\text{unif}: k \to 1$, но она ограничена сегментом [m;n] и равна 0 в других точках. If $m - 1 = n$, the uniform() возвращает нулевое распределение.
  • uniform(D) возвращает функцию $\text{unif}: k \to 1$, но она ограничена положительным множеством распределения D и равна 0 в других точках.
  • poisson(a) возвращает распределение Пуассона параметра a ($\lambda$ в литературе).
  • exponential(a) возвращает распределение экспоненты параметра a ($\lambda$ в литературе).

Непараметрические функции распределения

  • distrib(Id, G.Probability, G.Min, G.Max) — данная функция возвращает распределение, заданное списком групп, каждая из которых имеет ограничения и собственное значение.
  • ranvar(T.X) — данный агрегатор возвращает эмпирическое распределение, рассчитанное по данным вектора T.X.

Показатели функций распределения

С помощью распределения также можно получить числовые показатели.

  • crps(X, A), гдеA — целое число, возвращает показатель непрерывной приоритетной вероятности (CRPS).
  • crps(X, Y), где и X, и Y являются распределениями, возвращает половину энергетической дистанции, которую можно понимать как обобщение CRPS для пары распределений.
  • mean(X) возвращает статистическое среднее.
  • variance(X) возвращает статистическое несоответствие.
  • mass(X) возвращает массу распределения, то есть $\sum_{k=-\infty}^{\infty}f(k)$
  • isranvar(X) возвращает логическое значение, то есть true, если распределение представляет собой случайную переменную.
  • int(X, A, B), где A и B являются целыми числами, возвращает целое значение X для сегмента [A;B].
  • quantile(X, tau) возвращает квантиль распределения; наименьшее значение $x$, например $\mathbf{P}[X \leq x] \geq \tau$.
  • spark(X) возвращает текст, содержащий компактное представление распределения в кодировке ASCII.

Трансформация распределения

Функции распределения могут трансформироваться в другие функции распределения.

  • reflect(X) возвращает отраженную функцию распределения $k \to f(-k)$.
  • transform(X,a) возвращает функцию распределения, которая получена через интерполяцию $k \to f(k / a)$.
  • fillrate(X) возвращает предельное значение уровня пополнения запасов. Необходимо указать случайную переменную, возвращает случайную переменную.
  • truncate(X, a, b) возвращает ограниченное распределение $k \to f(k) \text{ if } k \in [a;b] \text{ else } 0$. Границы A и B включаются в диапазон результатов.
  • maxr(X, a) возвращает распределение $k \to f(k) \text{ if } k \in ]-\infty; a - 1] \text{ or } \sum_{i=a}^\infty f(i) \text{ if } k = a \text{ else } 0$.
  • minr(X, a) возвращает распределение $k \to f(k) \text{ if } k \in [a + 1; \infty[ \text{ or } \sum_{i=-\infty}^a f(i) \text{ if } k = a \text{ else } 0$.
  • zoz(X) (zero on zero) возвращает распределение, где $k \to f(k) \text{ if } k \neq 0 \text{ else } 0$.

Функции создания таблиц

См. статью о создании таблиц

  • extend.range(T.N): — создает N строк для каждой строки из таблицы T, где N — целое число. Например:

    table T = extend.range(Orders.42)
    T.Quantity = Orders.Quantity // подразумеваемое расширение
    show table "T" with T.N, T.Quantity
  • extend.distrib(distribution, gap, multiplier, reach) — раскладывает распределение в таблице. См. также extend.distrib().
  • extend.billOfMaterials(...) — преобразует историю спроса на наименования в историю спроса на запчасти. См. также спецификацию().

Расширенные функции

  • forex(value, Origin, Destination, date) — возвращает значение, выраженное в валюте Origin, в виде соответствующего значения в другой валюте Destination в соответствии с данными об обменном курсе для указанной даты. Валюты необходимо указывать с помощью общепринятых трехзначных кодов. Lokad поддерживает около 30 валют, используя данные, предоставленные Центральным банком Европы. Обменный курс обновляется ежедневно. См. также функцию проверки валюты isCurrency().
  • hash(value) — возвращает псевдоинъективное хэш-значение от 0 до 2^24-1. Данная функция обычно используется для случайного перемешивания набора данных путем хэширования содержимого столбца, а затем для сортировки по хэшированным значениям.
  • isCurrency(currencyCode) — возвращает значение true, если текст, выступающий в роли аргумента, является кодом валюты, распознаваемым функцией forex().
  • mkuid(X, offset) — возвращает уникальное число, причем его уникальность сохраняется при повторном выполнении проектов Envision. Данная функция предназначена для идентификации уникальных результатов, вычисленных системой Lokad. Например, ее можно использовать для создания уникального номера заказа на закупку, который будет автоматически изменяться при повторном выполнении сценария Envision. Вектор X игнорируется, а в таблице, привязанной к X, создается UID (уникальный идентификатор) в виде скалярного значения. offset — это дополнительное скалярное значение, которое отражает начальный суффикс UID. Созданные строки являются числами в формате PPPPPPPAAA, где P — номер страницы (не может начинаться с 0), который всегда только увеличивается, а A — пошаговый счетчик, который запускается от начала отклонения (или от 0, если отклонение не задано). Значение P должно состоять не менее, чем из 7 цифр, а значение A — не менее, чем из 3. Параметр UID имеет три свойства. (1) Все UID можно считывать как числа, и эти числа неодинаковые. Обратите внимание, что UID могут состоять не менее, чем из 10 цифр, а обычно и больше, если для каждого вызова создается более 1000. (2) Значения UID, рассчитанные во время T, должны быть меньше значений UID, созданных во время T' > T. (Используется алфавитный порядок) (3) Если все вызовы приводят к созданию подобных UID (меньше 999 или от 1000 до 9999 и т. д.), то предыдущее свойство будет также истинно для порядковых номеров UID.
  • solve.moq(...): расширенный алгоритм решения для базовой проблемы MOQ (минимального объема заказа).
  • priopack(R, V, S, C, J[, B]) — простой вариант алгоритма упаковки контейнеров, предназначенный для использования со списком приоритетных покупок. В отличие от классического алгоритма упаковки контейнеров мы не только оптимизируем возможности контейнеров, но и максимально сохраняем порядок единиц. R содержит ранги упаковываемых строк. V — объем каждой строки. S — класс эквивалентности поставщиков, упаковка контейнеров рассчитывается на поставщика. C — максимальный объем, значение которого однородно V, и оно должно быть постоянным во всем классе эквивалентности C. J — изменчивый порог, значения которого однородны с V, обычно это небольшое значение, кратное C. B — дополнительный аргумент, который понимается как барьер. Когда указывается данное значение, в процессе бинарной упаковки нельзя изменять порядок строк, которые принадлежат к одному и тому же классу равенства, как определяется в B.
  • * stockrwd.m(Demand, AM), stockrwd.s(Demand), stockrwd.c(Demand, AC)функции прибыльности запасов. Данные функции используются для составления программы размещения заказов на основании вероятностных прогнозов от Lokad.