Skip To Content

Utilizar las expresiones de Arcade con Unir entidades

Existen varias herramientas en la caja de herramientas GeoAnalytics Tools que le permiten aplicar una expresión.

Las GeoAnalytics Tools que utilizan expresiones tienen distintos usos, así como limitaciones sobre las expresiones que se pueden aplicar. Todas las expresiones utilizadas en ArcGIS GeoAnalytics Server admiten Arcade.

Más información sobre las Funciones de Arcade

Expresiones en Unir entidades

En la herramienta Unir entidades se utilizan expresiones para especificar las condiciones de unión.

En algunos casos, puede que desee especificar una condición para seleccionar entidades que deben incluirse en la unión. Puede realizar condiciones de unión simples (como, por ejemplo, campo a > campo c) y condiciones avanzadas. Las condiciones se prueban con cada entidad para determinar qué es lo que se analiza. Los cálculos se realizan cuando se ejecuta el análisis en su ArcGIS GeoAnalytics Server.

Nota:
Unir entidades requiere dos entradas: una capa de destino y una capa de unión. Por consiguiente, cualquier expresión de Arcade de Unir entidades debe señalar qué dataset se está utilizando. Por ejemplo, una operación para calcular si un campo de una capa de destino denominada field1 es mayor que un campo de una capa de unión denominada field2 se expresaría como $target["field1"] > $join["field2"]. Difiere de las expresiones en otros GeoAnalytics Tools, que utilizan el formato $feature["fieldname"].

Una condición de unión siempre debe dar un resultado true o false. En las secciones de abajo se incluyen ejemplos de expresiones.

Ejemplos de operadores matemáticos y funciones

Las expresiones pueden procesar números matemáticamente. La siguiente tabla recoge una muestra de las operaciones disponibles.

Más información sobre operaciones y funciones matemáticas disponibles en Arcade

OperadorExplicaciónEjemploResultado

a + b

a más b.

fieldname contiene el valor 1,5.

$target["fieldname"] + 2.5

4.0

a - b

a menos b.

fieldname contiene el valor 3,3.

$target["fieldname"]- 2.2

1.1

a * b

a por b.

fieldname contiene el valor 2,0.

$join["fieldname"] * 2.2

4.4

a/b

a dividido por b.

fieldname contiene el valor 4,0.

$join["fieldname"] / 1.25

3.2

abs( a )

Devuelve el valor absoluto (positivo) de a.

fieldname contiene el valor -1,5.

abs($target["fieldname"])

1.5

log( a )

Devuelve el logaritmo natural (base e) de a.

fieldname contiene el valor 1.

log($join["fieldname"])

0

sin( a )

Devuelve el seno trigonométrico de a. Se presupone que la entrada es un ángulo en radianes.

fieldname contiene el valor 1,5707.

sin($target["fieldname"])

1

cos( a )

Devuelve el coseno trigonométrico de a. Se presupone que la entrada es un ángulo en radianes.

fieldname contiene el valor 0.

cos($join["fieldname"])

1

tan( a )

Devuelve la tangente de a. Se presupone que la entrada es un ángulo en radianes.

fieldname contiene el valor 0.

tan($target["fieldname"])

0

sqrt( a )

Devuelve la raíz cuadrada de a.

fieldname contiene el valor 9.

sqrt($join["fieldname"])

3

min( a, b )

Devuelve el número que tenga el valor más bajo de a y b.

fieldname contiene el valor 1,5 y el valor -3.

min($join["fieldname"], -3)

-3

max( a, b )

Devuelve el número que tenga el valor más alto entre a y b.

fieldname1 contiene el valor 1,5, y fieldname2 contiene el valor -3.

max($target["fieldname1"], $join["fieldname2"])

1.5

constrain(<value>,<low>,<high>)

Devuelve el valor de entrada si está contenido en los límites de la restricción. Si el valor de entrada es menor que el valor bajo, devuelve el valor bajo. Si el valor de entrada es mayor que el valor alto, devuelve el valor alto.

constrain($target["distance"], 0, 10)

constrain($join['Store dist'], 6, distance)

Devuelve 0 si distance es menor que 0, 10 si distance es mayor que 10 y distance en los demás casos.

Devuelve 6 si Store dist es menor que 6, distance si Store dist es mayor que distance y Store dist en los demás casos.

Ejemplo de multiplicación para una expresión de condición de unión utilizando un campo desde el dataset objetivo.

$target["Distance"] * 2 > $join["DistField"]

Ejemplos de la función Texto

Las expresiones de condición de unión pueden procesar textos. La siguiente tabla recoge una muestra de las operaciones disponibles.

Más información sobre las funciones de texto disponibles en Arcade

OperadorExplicaciónEjemploResultado

concatenate( <values>, <separator>)

Concatena valores juntos y devuelve una cadena de caracteres.

  • values: un conjunto de valores de cadena de caracteres a concatenar.
  • separator (opcional): separador a utilizar para la concatenación si el parámetro values es un conjunto o bien una cadena de caracteres para concatenar si se proporciona un valor único para el primer parámetro. Si no se proporciona, estará vacío.

fieldname contiene un valor de GeoAnalytics

Concatenate ([$target["fieldname"], "is", "great!"], ' ')

¡El geoanálisis es fantástico!

find(<searchText>, <text>, <startPos>)

Busca una cadena de caracteres dentro de otra cadena de caracteres. Los comodines no se admiten.

  • searchText: la cadena de caracteres que se va a buscar.
  • text: el texto en el que buscar.
  • startPos (opcional): el índice basado en cero de la ubicación de la cadena donde buscar.

fieldname1 contiene un valor de 14NorthStreet y fieldname2 contiene un valor de North.

find($target["fieldname2"], $join["fieldname1"])

2

lower(<value>)

Forma una cadena de caracteres en minúscula.

  • value: la cadena de caracteres que se desea cambiar a minúsculas.

fieldname contiene un valor de GEOANALYTICS.

lower($join["fieldname"])

geoanálisis

Ejemplo de texto utilizando find y lower.

find(("north"), lower("146NorthStreet")) == False

Ejemplos de la función Fecha

Las expresiones de unión pueden procesar fechas. La siguiente tabla recoge una muestra de las operaciones disponibles.

Más información sobre las funciones de fecha disponibles en Arcade

En Arcade, los valores de mes oscilan entre 0 (enero) y 11 (diciembre), los días entre 1 y 31, las horas entre 0 (12:00 a.m.) y 23 (11:00 p.m.), minutos y segundos entre 0 y 59 y las milésimas de segundo entre 0 y 999. Las fechas de Arcade devuelven los valores de tiempo en la ubicación de su GeoAnalytics Server.

OperadorExplicaciónEjemploResultado

date( <value>, <month>, <day>, <hour>, <minute>)

Analiza un valor o conjunto de valores en una cadena de caracteres de fecha.

  • value (opcional): el número de milésimas de segundo desde el 1 de enero de 1970 UTC o un número que represente un año. Si se especifica un año, el mes y el día también deben proporcionarse en los parámetros correspondientes. Este valor también puede ser una cadena de caracteres de fecha o una cadena de caracteres ISO 8601 para convertir en una fecha.
  • month (opcional): el mes (0–11) donde 0 es enero y 11 es diciembre.
  • day (opcional): el día del mes (1–31).
  • hour (opcional): la hora del día (0–23).
  • minute (opcional): el minuto de la hora (0–59).
  • second (opcional): el segundo del minuto (0–59).
  • millisecond (opcional): la milésima de segundo del segundo (0–999).

fieldname contiene un valor de 1476987783555.

Ejemplo 1: Date($target["fieldname"])

Ejemplo 2: Date(2017,0,14,0)

Ejemplo 3: Date()

Ejemplo 1: 20 oct 2016 11:23:03 am

Ejemplo 2: 14 ene 2017 12:00:00 am

Ejemplo 3: Devuelve la hora actual

DateDiff(<date1>, <date2>, <units>)

Resta dos fechas y devuelve la diferencia en las unidades especificadas.

  • date1: el valor de fecha del cual se sustrae una segunda fecha.
  • date2: el valor de fecha a sustraer desde la primera fecha dada.
  • startpos (opcional): las unidades en las que se devuelve la diferencia entre las dos fechas dadas. Los tipos de unidad válidos son milliseconds, seconds, minutes, hours, days, months y years. El valor predeterminado es milésimas de segundo.

Ejemplo 1: DateDiff(Date(2017,1,14,0), Date())

Ejemplo 2: DateDiff(Date(2017,1,14,0), Date(), "Years")

Los resultados pueden variar dependiendo de cuándo ejecute este comando.

Ejemplo 1: -20532129137

Ejemplo 2: -0,6546783768647119

Year(<dateValue>)

Devuelve el año de la fecha dada.

  • value: un valor de fecha del que se obtiene el año.

Ejemplo 1: fieldname es un campo de tipo Date con un valor de 09 Oct 2017 04:30:43 pm.

Year($join["fieldname"])

Ejemplo 2: fieldname es un campo de cadena cuyo formato es una cadena de caracteres ISO 8601 con el valor 2012-09-27.

Ejemplo 2: fieldname es un campo de cadena cuyo formato es una cadena de caracteres ISO 8601 con el valor Year(Date($target["fieldname"])).

Ejemplo 1: 2017

Ejemplo 2: 2012

Operadores condicionales

Las declaraciones condicionales pueden usar los siguientes operadores:

OperadorExplicaciónEjemploResultados

a > b

a < b

a es mayor que b

a es menor que b

10 > 2

False

a >= b

a <= b

a es mayor o igual que b

a es menor o igual que b

abs(-10) >= 10

True

a != b

a no es igual que b

abs(-3) != -3

True

a == b

a es igual que b

abs(-5) == 5

True

<condition1> || <condition2>

Se cumplen la condición 1 o la condición 2.

(abs(-5) == 5) || (10 < 2)

True

<condition1> && <condition2>

Se cumplen la condición 1 y la condición 2.

(abs(-5) == 5) && (10 < 2)

False

Ejemplos de operadores lógicos

Además de operadores condicionales, se pueden utilizar operadores lógicos más avanzados para unir entidades.

Más información sobre funciones lógicas disponibles en Arcade

FunciónExplicaciónEjemploResultado

constrain(<value>,<low>,<high>)

Devuelve el valor de entrada si está contenido en los límites de la restricción. Si el valor de entrada es menor que el valor bajo, devuelve el valor bajo. Si el valor de entrada es mayor que el valor alto, devuelve el valor alto.

constrain( $target["distance"], 0, 10)

constrain($join['Store dist'], 6, distance)

Devuelve 0 si distance es menor que 0, 10 si distance es mayor que 10 y distance en los demás casos.

Devuelve 6 si Store dist es menor que 6, distance si Store dist es mayor que distance y Store dist en los demás casos.

iif(<condition>,<true value>,<false value>)

Devuelve un valor si una condición es true, y devuelve otro valor si la condición es false.

<true value> y <false value> pueden ser lo siguiente:

  • Un campo numérico. Si hay un espacio en el nombre del campo, use corchetes.
  • Un número.
  • Una función.

iif($target["field1"] > $join["field2"], $join["field1"], 0)

iif($target["field1"] > $join["field2"], iif($target["field2"] = 0, $join["field3"], $target["field4"]), 0)

Devuelve field1 si field1 es mayor que field2 y 0 en los demás casos.

Devuelve el resultado de la segunda función iif si field1 es mayor que field2 y 0 en los demás casos.

when(<expression1> , <result1> , <expression2> , <result2> , ... , <expressionN> , <resultN>, <default>)

Evalúa una serie de expresiones sucesivamente hasta que una se evalúa como true.

  • expression: una expresión.
  • result: puede ser un número o un campo.
  • default: valor opcional si no coincide ninguna de las expresiones.

when(($target["field1"] + 10) > 1, 1,($join["field2"] + 10) > 2 , 2, $target["field3"])

Si field1 + 10 es mayor que 1, devuelve 1. Si no, comprueba si field2 + 10 es mayor que 2. Si lo es, devuelve 2. Si no, devuelve field3.

decode(<conditional val> , <case1> , <result1>, <case2>, <result2>, ... <caseN>, <resultN>, <defaultValue> )

La función decode evalúa una expresión y compara su valor con los parámetros subsiguientes. Si la expresión coincide, devuelve el valor del siguiente parámetro. Si ninguno coincide, existe la opción de que el último parámetro sea un valor de devolución predeterminado.

  • conditional val: puede ser un campo o una expresión.
  • case: un valor para compararlo con el conditional val.
  • result: el resultado si el caso correspondiente coincide con el conditional val.
  • defaultValue: un valor opcional si ningún otro valor es true.

decode($target["field1"] + 3 , $join["field1"], 1, $target["field2"], 2, 0)

Compara la igualdad entre el valor condicional field1 + 3 y case1 field1. Si es true, devuelve 1. Si es false, compara la igualdad entre field1 + 3 y field2. Si es true, devuelve 2; de lo contrario, devuelve 0.