Mover datos entre colecciones y orígenes de datos mediante Collect

Completado

Las colecciones son un origen de datos especial. Son locales de la aplicación y no están respaldados por una conexión a un servicio en la nube, por lo que la información no se puede compartir entre dispositivos para el mismo usuario o entre usuarios. Las colecciones se pueden crear de forma dinámica con la función Collect. No tienen que establecerse con anticipación, como lo hacen los orígenes de datos basadas en conexiones. Dicho de otro modo, las colecciones son solo variables, por lo que su contenido no se guarda si el usuario cierra la aplicación. Ninguna otra persona que ejecute la aplicación podrá acceder a los datos que contienen. Para guardar la información de una colección, tenemos que escribirla en un origen de datos. Vamos a tratar las dos principales formas de guardar datos de una colección en el origen de datos.

Usar la función Collect

La función Collect agrega registros a un origen de datos. Es capaz de agregar un único valor, un registro o una tabla a una colección. Se puede usar para crear una colección y escribir en un origen de datos, como una lista de SharePoint o una tabla de Dataverse. Le permite escribir datos masivos sin utilizar una función ForAll/Patch para recorrer en bucle los datos.

Al usar Collect para escribir en un origen de datos, puede especificar los elementos como un registro si los nombres de las columnas y la estructura de datos coinciden con el origen. Por tanto, algo como esta fórmula escribe un único registro en los datos, como lo haría una función Patch:

Collect('YourDataSource', {Title: 'First Try', StartDate: Today()})

Siempre que el origen de datos tenga columnas denominadas "Title" y "StartDate" (y son tipos de datos, texto y fecha, respectivamente), esta fórmula creará un registro en el origen de datos donde Title es "First Try" y StartDate es la fecha de hoy.

Puede encadenar un gran número de registros agregándolos después del primer registro, siempre que esté escribiendo el tipo de datos correcto en la columna de la derecha, incluidas las columnas obligatorias.

También puede volver a escribir una tabla completa en el origen de datos a través de la instrucción Collect, siempre que la estructura de datos coincida.

Por último, puede usar una versión simplificada de la fórmula para escribir una colección completa en el origen de datos a través de una sintaxis como la siguiente:

Collect('YourDataSource', colMyCollection)

Al igual que cuando escribíamos un único registro en el origen datos, cuando se usa Collect para escribir una tabla completa en el origen de datos, la estructura de datos y los nombres de las columnas must coinciden con las columnas en las que está escribiendo. La principal ventaja de usar una función Collect para escribir es que el código es sencillo.

En resumen, recuerde estas tres condiciones cuando use Collect para escribir en el origen de datos:

  • Las columnas de la colección deben existir en el origen de datos. El origen de datos puede tener otras columnas (como columnas generadas por el sistema), pero las columnas desde las que escribe en la colección tienen que existir en el origen de datos en el que está escribiendo. (si la colección tiene una columna de texto denominada Widget, el origen de datos también debe tener una columna de texto denominada Widget).

  • El tipo de datos (como texto, número o fecha) de cada columna de la colección debe coincidir con el tipo de datos de destino.

  • La colección debe incluir datos para cualquier columna obligatoria en el origen de datos.

Sugerencia

Si es necesario, puede usar funciones para transformar la colección de modo que coincida con el origen de datos. Algunos ejemplos son:

  • AddColumns
  • DropColumns
  • RenameColumns
  • ShowColumns

Para obtener más información, consulte Funciones AddColumns, DropColumns, RenameColumns y ShowColumns en Power Apps.

Para obtener más información sobre la función Collect y las Colecciones, consulte Documentación de Collect.

Patch y ForAll

Patch es una función que le permite modificar o crear un registro en el origen de datos. ForAll es una función que le permite ejecutar una fórmula para cada registro de una tabla, y las colecciones son tablas. Puede combinar estas funciones para actualizar el origen de datos con el contenido de la colección. Aunque hay más codificación involucrada en comparación con la técnica Collect, mediante una función ForAll/Patch funciona mejor cuando desea aplicar más lógica.

Por ejemplo, puede crear una colección denominada collectColorData que incluya tres columnas: Name, FavoriteColor y UpdateSource. La columna UpdateSource podría ser una columna booleana (true o false). Mediante el proceso de trabajo con la aplicación, el usuario actualizaría el valor de la columna y luego seleccionaría un botón que indica Actualizar origen. Puede establecer la propiedad OnSelect del botón en esta fórmula:

ForAll(Filter(collectColorData, UpdateSource = true),
Patch(DataSourceName, Defaults(DataSourceName), {NameColumnSource: Name,
FavoriteColorColumnSource: FavoriteColor}))

Esta fórmula agrega nuevos registros al origen de datos denominado DataSourceName, definiendo las columnas NameColumnSource y FavoriteColorColumnSource con los valores de la colección, pero solo para los registros donde UpdateSource se establecieron en true.

Este ejemplo puede optimizarse aún más, pero sirve para demostrar el concepto y los elementos para guardar dinámicamente la colección en un origen de datos.

Para obtener más información sobre ForAll, consulte Documentación de ForAll.

Para obtener más información sobre Patch, consulte Documentación de Patch.

Ahora que hemos explorado formas en que podemos escribir datos de una colección en un origen de datos, y por qué podamos usar una u otra, vamos a hacer un ejercicio en el que practiquemos el trabajo con colecciones y datos externos.