Descubra la función Distinct mejorada

Recuperar la lista de elementos de datos únicos siempre es útil cuando se manipulan datos. En algunos casos, recuperar el número de ocurrencias de cada valor es esencial. La función distinct de las clases Collection y Entity selection permite recuperar una lista de valores únicos. Con 4D v20, también puede recuperar el número de ocurrencias de cada valor distinto.

¡Y hay más!

Se puede utilizar un objeto de la base de datos para guardar datos personalizados introducidos por el usuario. Por lo tanto, desde el punto de vista del código, es necesario conocer todas las posibles rutas de acceso al objeto. La función distinctPaths ha sido añadida a la clase Entity selection.

Aquí está todo lo que necesitas saber.

Nueva opción para distinct

La sintaxis es idéntica para ambas clases, Collection y Entity selection. Debes pasar la constante ck count values, o dk count values, al segundo parámetro llamado opción para obtener una colección de pares de atributos: value y count.

Si no pasa la opción, el comportamiento sigue siendo el mismo; obtiene una colección de valores únicos.

Ejemplo con COLECCIÓN

Por ejemplo, quiero la lista de valores únicos de una colección de categorías y el número de ocurrencias de cada categoría:

var $col; $category : Collection
$category:=New Collection("Familia"; "Amigo"; "Trabajo"; "Familia"; "Personal")
$col:=$category.distinct(ck count values)

El resultado es:

[
   {"value":"Familia","count":2},
   {"value":"Amigo","count":1},
   {"value":"Trabajo","count":1},
   {"value":"Personal","count":1}
]

Ejemplo de selección de entidades

Por ejemplo, quiero obtener la lista de países de mis contactos y el número de contactos por país:

var $countries : Collection
$countries :=ds.Contact.all().distinct("país";dk count values
)

El resultado es:

[
   {"value":"France","count":2},
   {"value":"Morocco","count":10},
   {"value":"Germany","count":3}
]

Nueva función de distinctpaths

La función distinctPaths de la clase de selección de entidades devuelve la lista de rutas distintas encontradas en su campo de objeto indexado. Debe pasar el nombre del campo de objeto indexado como parámetro. Esta función es equivalente al comando DISTINCT ATTRIBUTE PATHS.

Ejemplo

Por ejemplo, quiero recuperar todas las posibles rutas del campo de objeto «direccion»:

var $paths : Collection
$ paths :=ds.Contact.all().distinctPaths("direccion")

El resultado es:

[
   "Numero",
   "DireccionCalle",
   "DireccionExtendida",
   "Ciudad",
   "Código postal",
   "Pais
]

Siguiente…

No dude en compartir sus comentarios e ideas en el foro 4D para ayudarnos a seguir mejorando el producto.

Vanessa Talbot
• Propietario de producto - Vanessa Talbot llegó al equipo de 4D Program en junio de 2014. Como Propietario de producto, está a cargo de escribir las historias de los usuarios y luego traducirlas a especificaciones funcionales. Su papel es también asegurarse de que la implementación de la funcionalidad entregada cumpla con las necesidades del cliente. Desde su llegada, ha trabajado en la definición de funcionalidades claves en 4D. Ha trabajado en la mayoría de las nuevas funcionalidades de multi hilo apropiativo y también en un tema muy complejo: la nueva arquitectura para la aplicación engined. Vanessa es licenciada por Telecom Saint-Etienne. Comenzó su carrera en el Instituto de Investigación Criminal como desarrolladora del departamento audiovisual. También ha trabajado en medios de comunicación y en el ámbito médico como experta en soporte técnico, producción y documentación de nuevas funcionalidades.