Creación de funciones definidas por el usuario

Completado

Las funciones definidas por el usuario (UDF) se usan para ampliar la gramática del lenguaje de consulta de Azure Cosmos DB for NoSQL e implementar lógica de negocios personalizada. Las UDF solo se pueden llamar desde consultas, ya que mejoran y amplían el lenguaje de consulta SQL.

Nota:

Las UDF no tienen acceso al objeto de contexto y están pensadas para usarse como código exclusivo de cálculo.

Este es un documento JSON de ejemplo de un producto con una propiedad name y price.

{
  "name": "Black Bib Shorts (Small)",
  "price": 80.00
}

Se construiría una consulta SQL sencilla para obtener los datos de un contenedor con muchos elementos como este a fin de incluir ambos campos.

SELECT 
    p.name,
    p.price
FROM
    products p

Las UDF amplían el lenguaje de consulta SQL al ofrecer pequeñas áreas en las que insertar lógica de negocios simple en una consulta. Veamos este ejemplo en el que se crea una función definida por el usuario para aplicar los impuestos. En el escenario de ejemplo se quiere aplicar un impuesto del 15 % y terminar con un conjunto de resultados ideal que incluya una tercera propiedad priceWithTax.

[
  {
    "name": "Black Bib Shorts (Small)",
    "price": 80.00,
    "priceWithTax": 92.00
  }
]

Una función definida por el usuario se define como una función de JavaScript que toma una o varias entradas escalares y devuelve un valor escalar como salida.

function name(input) {
    return output;
}

En esta función de ejemplo se da por hecho que la entrada escalar es un número que luego se multiplica por 1.15 para agregar un impuesto del 15 %.

function addTax(preTax) {
    return preTax * 1.15;
}

La consulta actualizada incluye un tercer campo proyectado que hace referencia a la función definida por el usuario mediante la sintaxis udf.addTax(), que pasa el campo udf.addTax() como parámetro de entrada y asigna el alias priceWithTax a la salida de ese campo.

SELECT 
    p.name,
    p.price,
    udf.addTax(p.price) AS priceWithTax
FROM
    products p