Lista de funciones en Envision

Lista de funciones en Envision











Inicio » Recursos » Aquí

Esta página ofrece una lista de las funciones compatibles con Envision. La principal finalidad de las funciones es extender las capacidades de Envision allí donde la sintaxis de lenguaje básico no sería suficiente.


Sintaxis de función

La sintaxis general para funciones es:
x = fun(arg1, arg2, arg3)
Donde fun se reemplaza por el nombre de la función y argN es la lista delimitada por comas de los argumentos pasados a la función. Todas las funciones operan en vectores.

Funciones matemáticas

  • abs(number): similar a la función ABS de Excel.
  • ceiling(number): similar a la función MULTIPLO.SUPERIOR de Excel.
  • exp(number): similar a la función EXP de Excel.
  • floor(number): similar a la función FLOOR de Excel.
  • log(number, base): similar a la función LOG de Excel. El argumento base es opcional; cuando se omite, se supone que es 10.
  • max(num1, num2, num3, .., numN): similar a la función MAX de Excel.
  • min(num1, num2, num3, .., numN): similar a la función MIN de Excel.
  • norminv(number): similar a la función DISTR.NORM.INV de Excel, con una media de 0 y una desviación estándar de 1.
  • pow(number, exponent): similar a la función POTENCIA de Excel. Envision también es compatible con el operador de potencia number ^ exponent que realiza el mismo cálculo.
  • round(number, digits): similar a la función REDONDEAR de Excel. El segundo argumento es opcional y representa el número de dígitos que se desea mantener.
  • sqrt(number): similar a la función RAÍZ de Excel.

Funciones de texto

  • concat(text1, text2, ..., textN): concatena valores de texto de text1 a textN.
  • contains(text, pattern): Devuelve true si el texto contiene una ocurrencia del patrón.
  • endswith(text, pattern): Devuelve true si el texto termina con una ocurrencia del patrón.
  • field(text, separator, index): Devuelve el número de campo (indexado cero) en un valor de texto que contiene múltiples subcadenas separadas por un separador especificado. Ej.: field("a-b-c-d-", "-", 2) == "c". Esta función está pensada para facilitar los valores de análisis que se han concatenado en una sola columna de tabla.
  • indexof(text, pattern): Devuelve el índice de la primera ocurrencia del patrón dentro del texto, o -1 si no se puede encontrar esa ocurrencia.
  • lowercase(text): Devuelve la variante del texto en minúscula.
  • parsedate(text, format): Convierte el texto en una fecha utilizando el formato especificado. El formato es opcional. Cuando se omite el formato, la fecha se analiza de acuerdo con el comportamiento de autodetección de formato de fecha de Envision. Cuando se proporciona el formato, la fecha se analiza con respecto a la expectativa de formato. Vea el artículo sobre cadena de formato de fecha personalizado para más detalles sobre la sintaxis de formato. Si no es posible analizar una fecha, se devuelve la fecha 2001-01-01.
  • parsenumber(text): Convierte el texto en un número. El analizador aprovecha el comportamiento de autodetección de formato de número de Envision. Si no es posible analizar el número, se devuelve el valor cero.
  • parsetime(text, format): Convierte una hora del día en una fracción entre 0 y 1 que representa un día fraccionario. El formato es opcional. Cuando el formato no se especifica, se utiliza el valor predeterminado yyyy-MM-dd HH:mm:ss. Envision utiliza el Formato de hora personalizado .NET.
  • replace(text, pattern, replacement): Devuelve el texto donde las ocurrencias del patrón han sido reemplazadas por el reemplazo. Esta función es similar a la función SUSTITUIR de Excel, omitiendo el argumento instance_num.
  • startswith(text, pattern): Devuelve true si el texto comienza con una ocurrencia del patrón.
  • strlen(text): Devuelve la longitud del argumento de texto.
  • substr(text, start, count): start define la posición de inicio. Si es negativa, es un desfase del final de la cadena; si no, es un desfase del inicio de la cadena. La longitud de la subcadena devuelta es definida por count, tratada como 0 si count < 0. Si el inicio o la longitud del segmento lo colocan parcial o completamente fuera de la cadena, ej.: substr("A", 2, 1), se acorta el segmento para adaptarlo. La función substr(text, start) se define como substr(text, start, <infinity>).
  • uppercase(text): Devuelve la variante del texto en mayúscula.

Funciones de calendario

  • "\{myDate:yyyy-MM-dd}": formateado de fecha personalizado a través de la interpolación de cadena. El formato de fecha es especificado por el token que se encuentra después del punto y coma. Más detalles sobre las cadenas de formato de fecha.
  • chineseYear(date): Devuelve el año actual en el calendario chino.
  • chineseYearEnd(date): Devuelve el última día del año chino actual.
  • chineseYearStart(date): Devuelve el primer día del año chino actual.
  • date(y, m, d): Devuelve una fecha creada a partir del año, el mes y el día pasados como argumentos. Se espera que los argumentos y, m y d sean números.
  • monday(date): Devuelve el primer lunes que precede a la fecha (inclusivo).
  • month(date): Devuelve el índice del mes asociado a la fecha, contando el número de meses desde el 1 de enero de 2001.
  • monthnum(date): Devuelve el mes aplicable (1-12) para la fecha pasada como argumento.
  • today(timezone): Devuelve la fecha fecha de tiempo real con el huso horario pasado como argumento y expresado como la diferencia en horas con respecto al UTC.
  • year(date): Devuelve el mes aplicable para la fecha pasada como argumento. Similar a la función AÑO en Excel.
  • yearStart(date): Devuelve el primer día del año del año actual.
  • yearEnd(date): Devuelve el último día del año del año actual.
  • weeknum(date): Similar a la función NUM.DE.SEMANA (Sistema 2) de Excel.

Funciones de jerarquía

  • argfirst(ordering, group): Devuelve true para el primer valor del grupo de acuerdo con los valores pedidos (el pedido). El grupo es opcional. Cuando se proporciona el grupo, la función devuelve true una vez por grupo. También se proporciona una sobrecarga argfirst(ordering, group) where condition para mayor conveniencia. Cuando se utiliza la opción where, puede dar como resultado grupos en los que no haya un valor true, porque la condición es false para todo el grupo.
  • arglast(ordering, group): Igual que argfirst(), pero devuelve true para el último valor.
  • cumsum(number, rank, group): Devuelve la suma acumulativa de los números de acuerdo con las jerarquías ascendentes. El grupo es opcional. Cuando se especifica el grupo, se utiliza para realizar una suma acumulativa local para cada grupo.
  • fifo(V, T.D, T.Q): Ayudante para análisis de inventario FIFO. Devuelve la cantidad de inventario no vendido como un vector de T. El vector V contiene el stock total. La tabla T contiene los pedidos de compra. T.D contiene las fechas, y T.Q contiene las cantidades de compra. La función calcula las cantidades no vendidas ejecutando las órdenes de compra hacia atrás en el tiempo. Vea también Método de inventario FIFO.
  • rank(number, group): Devuelve las jerarquías de los números sin empate. Similar a la función JERARQUIA de Excel, con la excepción que cada número obtiene una clasificación distinta (la rupturas de empates empates son arbitrarias). El grupo es opcional. Cuando se especifica el grupo, se utiliza para realizar jerarquías locales para cada grupo.
  • rank(x, g, y): Una función más avanzada que es bastante diferente de las demás sobrecargas rank(). La función específica de esta sobrecarga es respaldar la generación de una lista de compra priorizada. En particular, rank(x, g, y) no puede volver a expresarse como expresión simple de clasificación y agrupación. Este es un algoritmo imperativo de dos fases. En la primera fase, los algoritmos son agrupados por g en stacks, cada uno de los cuales se ordena por y ascendente. En la segunda fase, el algoritmo selecciona el mayor nivel de x entre los principales elementos de todos los stacks, separa ese elemento, le asigna una clasificación (comenzando por 1) y repite la secuencia hasta que todos los stacks quedan vacíos.
  • rankd(number): Devuelve las jerarquías de los números: números iguales obtienen jerarquías iguales. Similar a la función JERARQUIA.EQV en Excel.

Funciones de gráfico

  • canonical(A, B): devuelve el representante canónico para cada valor A. Desde una perspectiva práctica, esta función se utiliza para gestionar los reemplazos de código (ej.: reemplazo de código de SKU). Por ejemplo, canonical(OldSku, NewSku) devolvería las últimas unidades SKU disponibles de cada artículo, realizando los reemplazos de modo recurrente. Vea también nonCanonical().
  • nonCanonical(A, B): devuelve true cuando no es posible calcular un representante canónico para A. Esto sucede cuando se detectan trayectorias circulares o ramificadas.
  • connected(A, B, group): considera el gráfico no direccionado descrito por todos los arcos (A,B), luego devuelve para cada nodo A el nombre del nodo más pequeño del componente conectado de A. Aquí, el más pequeño significa el que tiene el nombre más pequeño en términos de comparación de cadena. El grupo es opcional. Cuando se especifica el grupo, el conjunto de datos se particiona primero con respecto a los grupos especificados.

Álgebra de distribuciones

Vea también el artículo sobre álgebra de distribuciones.

Distribuciones paramétricas

Las distribuciones paramétricas pueden generarse, es decir, funciones que toman un número como argumento —el parámetro— y devuelven una distribución.

  • dirac(n) devuelve una función de valor cero en todas partes con excepción de n, donde el valor de la función es 1.
  • identity(n) devuelve la función $\text{id}: k \to k$ pero limitada al segmento [0;n] y 0 en el resto.
  • uniform(n) devuelve la función $\text{unif}: k \to 1$ pero limitada al segmento [0;n] y 0 en el resto.
  • uniform(m, n) devuelve la función $\text{unif}: k \to 1$ pero limitada al segmento [m;n] y 0 en el resto. Si $m - 1 = n$, el uniform() devuelve una distribución cero.
  • uniform(D) devuelve la función $\text{unif}: k \to 1$, pero limitada al respaldo positivo de la distribución D y 0 en el resto.
  • poisson(a) devuelve la distribución de Poisson del parámetro a ($\lambda$ en la literatura).
  • exponential(a) devuelve la distribución exponencial del parámetro a ($\lambda$ en la literatura).

Distribuciones no paramétricas

  • distrib(Id, G.Probability, G.Min, G.Max) es una función que devuelve la distribución definida por una lista de depósitos, en la que cada depósito tiene límites derecho e izquierdo inclusivos y un valor para el depósito.
  • ranvar(T.X) es un agregador que devuelve la distribución empírica que resulta de las observaciones obtenidas del vector T.X.

Indicadores sobre distribuciones

También es posible obtener indicadores numéricos a partir de las distribuciones.

  • crps(X, A) donde A son números enteros, devuelve las puntuaciones de rango de probabilidad continuo (CRPS)
  • mean(X) devuelve la media estadística.
  • variance(X) devuelve la varianza estadística.
  • mass(X) devuelve la masa de distribución, es decir, $\sum_{k=-\infty}^{\infty}f(k)$.
  • isranvar(X) devuelve una booleana que es true si la distribución es una variable aleatoria.
  • int(X, A, B) donde A y B son números enteros, devuelve la integral de X sobre el segmento inclusivo [A;B].
  • quantile(X, tau) devuelve el cuantil de la distribución; la $x$ más pequeña, como $\mathbf{P}[X \leq x] \geq \tau$.
  • spark(X) devuelve un valor de texto que contiene una representación ascii-art compacta de la distribución.

Transformaciones de distribuciones

Una distribución también puede ser transformada en otra distribución.

  • reflect(X) devuelve la distribución reflejada $k \to f(-k)$.
  • transform(X,a) devuelve una distribución que aproxima a través de la interpolación $k \to f(k / a)$..
  • fillrate(X) devuelve la tasa de llenado marginal. Espera una variable aleatoria como dato de entrada y devuelve una variable aleatoria.
  • truncate(X, a, b) devuelve la distribución truncada $k \to f(k) \text{ if } k \in [a; b] \text{ else } 0$. Los límites A y B son inclusivos.
  • maxr(X, a) devuelve la distribución $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) devuelve la distribución $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) devuelve la distribución donde $k \to f(k) \text{ if } k \neq 0 \text{ else } 0$.

Funciones de creación de tabla

Vea el artículo sobre creación de tablas para más detalles.

  • extend.range(T.N): Crea N líneas para cada línea de la tabla T donde se espera que N sea un entero. Por ejemplo:

    table T = extend.range(Orders.42)
    T.Quantity = Orders.Quantity // extensión implícita
    show table "T" with T.N, T.Quantity
  • extend.distrib(distribution, gap, multiplier, reach): Amplía una distribución en una tabla. Vea también el artículo sobre extend.distrib().
  • extend.billOfMaterials(...): Traduce un historial de demanda de artículos en un historial de demanda de piezas. Vea también el artículo sobre extend.billOfMaterials().

Funciones avanzadas

  • forex(value, Origin, Destination, date): Devuelve la cantidad expresada en la moneda Origin en la cantidad equivalente en la moneda Destination de acuerdo con las tasas históricas en la fecha especificada. Las monedas deberían codificarse con sus códigos de tres letras canónicos. Lokad respalda alrededor de 30 monedas aprovechando los datos proporcionados por el Banco Central Europeo. Las tasas se actualizan a diario. Vea también isCurrency() para probar la validez de su código moneda.
  • hash(value): Devuelve un valor hash pseudo-inyectivo entre 0 y 2^24-1. Esta función generalmente se utiliza para mezclar en forma aleatoria un conjunto de datos mediante el hashing del contenido de una columna y luego ordenándolo comparado con los valores obtenidos por hash.
  • isCurrency(currencyCode): devuelve true si la entrada de texto pasada como argumento es un código de moneda reconocido por la función forex().
  • mkuid(X, offset): devuelve un número único, con la unicidad mantenida en todas las ejecuciones de Envision. Esta función está pensada para identificar de modo único los resultados calculados por Lokad. Por ejemplo, puede utilizarse para generar un número de pedido de compra único que se incremente cada vez que se vuelva a ejecutar el script de Envision. El vector X se ignora, pero el UID (identificador único) se genera como un escalar en la tabla asociada aX. El offset es un escalar opcional que representa el sufijo de inicio para el UID. Las cadenas generadas son números en formato PPPPPPPAAA, con P, un número de página (no comienza con 0) que es siempre estrictamente creciente, y A, un contador incrementado que comienza en el desfase (o 0 si no se proporciona ningún parámetro de desfase). P tiene al menos 7 dígitos, A tiene al menos 3. Los UID ofrecen tres propiedades. (1) Todos los UIDs pueden analizarse como números, y esos números serán diferentes. Tenga en cuenta, sin embargo, que los UID tienen al menos 10 dígitos, y probablemente más si cada llamada debe generar más de 1000. (2) Un UID generado en el tiempo T es estrictamente inferior (en orden alfabético) a un UID generado en el tiempo T' > T. (3) Si todas las llamadas generan números similares de UID (menos de 999, o entre 1000 y 9999, etc.), la propiedad anterior también es verdadera para el orden numérico entre UID.
  • solve.moq(...): un solver numérico avanzado para el problema general de MOQ (cantidades de orden mínimas).
  • pricebrk(Demand, Price, Prices.MinQuantity, Prices.Price, Stock, StockPrice): devuelve la distribución del precio de compra por unidad marginal. * Vea el artículo sobre Descuentos de precios de proveedores.
  • priopack(R, V, S, C, J[, B]): una variante simple del algoritmo de bin-packing pensado para ser utilizado con listas de priorización de compras. A diferencia del algoritmo de bin-packing clásico, no solo buscamos optimizar las capacidades de ubicación, sino que el pedido de unidades también debería preservarse en la mayor medida posible. R contiene las clasificaciones de línea por empaquetar. V es el volumen de cada línea. S es la clase de equivalencia de los proveedores, con el bin-packing calculado por proveedor. C es la máxima capacidad de volumen, su valor es homogéneo con V y se supone que es un valor constante en la clase equivalente C. J es el umbral cambiante, su valor es homogéneo con el de V; generalmente se espera que sea un pequeño múltiplo del valor C. B es un argumento opcional interpretado como la barrera; cuando se proporciona este valor, el proceso de bin-packing no está permitido para reorden de líneas que pertenecen a la misma clase de equivalencia definida por B.
  • stockrwd(Id, G.Proba, G.Min, G.Max, M, S, C, A): la función de recompensa por existencias. Esta función se utiliza para elaborar una política de pedido priorizado a partir de pronósticos probabilísticos elaborados por Lokad.