Artículo
· 29 mayo, 2024 Lectura de 3 min

Uso de VECTORES en ObjectScript

La mayoría de los ejemplos que he visto hasta ahora en OEX o DC dejan la impresión de que los VECTORES son sólo algo disponible con SQL con las 3 Funciones especialmente alrededor de VECTOR_Search.
* TO_VECTOR()
* VECTOR_DOT_PRODUCT ()
* VECTOR_COSINE ()

Hay un resumen muy útil escondido en el paquete de demostración iris-vector-search.
Desde allí encontraréis todo lo que necesitáis en varios enlaces y rincones.

Me faltaban más métodos VECTOR y añadí una solicitud al respecto en el Portal de Ideas.
 
Luego recordé que cada método o procedimiento SQL se basa en un montón de código ObjectScript.
Así que fui a buscarlo y este es el resumen de la investigación.

%Library.Vector es la descripción básica del nuevo DataType (tipo de datos).
Es una estructura compleja como Objects o %DynamicObjects o $Bit Expressions que requieren métodos de acceso específicos.
También vemos 2 parámetros requeridos: 

* DATATTYPE  - una vez configurado no se puede cambiar.
 Tipos aceptados:  "integer" (o "int"), "double", "decimal", "string" y "timestamp".
* LEN >0 , puede crecer pero nunca reducirse.

$vector() / &ve() es el método básico para el acceso al Vector.
Asignar Datos Vectoriales  >>>  SET $VE(. . .) = val
Devolver Datos Vectoriales  >>>  WRITE $VE(. . .) ,  SET var=$VE(. . .) 
  ¡SUGERENCIA: una sola posición devuelve el valor, pero la posición from::to devuelve otro Vector!
Eliminar Datos Vectoriales >>>  KILL $VE(. . .) 

Los 3 requieren al menos 1 parámetro de Posición. Podéis entender esto como dimensiones.

$isvector() la verificación obvia del formato correcto antes de comenzar las operaciones.

$vectorop() / $vop() cubre todas las demás funciones relacionadas con los vectores.
Los parámetros de llamada suelen ser (operación, vector)
Algunas operaciones ofrecen opcionalmente un bitexpr. Marca posiciones/dimensiones a excluir/incluir.
Ejemplo:
- Pensad en un vector 3D. Solo se desea operar en los ejes x e y, no en z.

Operaciones de un solo vector

Operaciones Agregadas
 * "count"
 * "max"
 * "min"
 * "sum"
Operaciones de filtrado
 * "defined"
 * "undefined"
 * "<"
 * "<="
 * ">"
 * ">="
 * "="
 * "!="
 * "between"
Operaciones Numéricas
 * "+"
 * "-"
 * "/"
 * "*"
 * "**"
 * "#"
 * "e-"
 * "e/"
 * "ceiling"
 * "floor"
Operaciones de String
 * "_"
 * "e_"
 * "lower"
 * "upper"
 * "substring"
 * "trim"
 * "triml"
 * "trimr"
Operaciones de Agrupación
 * "group"
 * "countgb"
Operaciones Diversas
 * "convert"
 * "length"
 * "mask"
 * "positions"
 * "set"
Operaciones Informativas
 * "bytesize"
 * "type"

Operaciones multivectoriales (normalmente 2 vectores)

Operaciones de Filtrado Vectorial
 * "v<"
 * "v<="
 * "v>"
 * "v>="
 * "v="
 * "v!="
Operaciones Aritméticas Vectoriales
 * "v+"
 * "v-"
 * "v/"
 * "v*"
 * "v**"
 * "v#"
Concatenación de vectores
 * "v_"
Agrupación de Vectores
 * "countg"
 * "maxg"
 * "ming"
 * "sumg"
Fusión de Vectores
 * "vset"

Ya veis que hay un rico conjunto de herramientas disponibles. Si se estudian los documentos en detalle, el propósito o la ventaja de los resultados puede que no sean evidentes de inmediato. No obstante, espero que os hayáis hecho una idea general de lo que hay disponible ahora.

Comentarios (0)1
Inicie sesión o regístrese para continuar