Información acerca de los orígenes de datos en PowerAppsUnderstand data sources in PowerApps

La mayoría de las aplicaciones de PowerApps utilizan información externa almacenada en servicios en la nube denominados Orígenes de datos.Most PowerApps apps use external information stored in cloud services called Data Sources. Uno de los ejemplos más frecuentes son tablas que pertenecen a archivos de Excel guardados en OneDrive para la Empresa.A common example is a table in an Excel file stored in OneDrive for Business. Las aplicaciones acceder a estos orígenes de datos a través de las conexiones.Apps access these data sources by using Connections.

En este artículo se describen los diferentes tipos de orígenes de datos y cómo trabajar con orígenes de datos de tabla.This article discusses the different kinds of data sources, and how to work with table data sources.

Es fácil crear una aplicación que realice las operaciones básicas de lectura y escritura a un origen de datos.It is easy to create an app that does basic reading and writing to a data source. Pero a veces desea más control sobre cómo fluyen los datos dentro y fuera de la aplicación.But sometimes you want more control over how data flows in and out of your app. Este artículo se describe cómo proporcionan más control las funciones Patch, DataSourceInfo, Validate y Errores.This article describes how the Patch, DataSourceInfo, Validate, and Errors functions provide more control.

Tipos de orígenes de datosKinds of data sources

Los orígenes de datos pueden estar conectados a un servicio en la nube, o bien pueden ser locales a una aplicación.Data sources can be connected to a cloud service, or they can be local to an app.

Orígenes de datos conectadosConnected data sources

Los orígenes de datos más frecuentes son las tablas, que se pueden usar tanto para recuperar como para guardar información.The most common data sources are tables, which you can use to retrieve and store information. Las conexiones con los orígenes de datos se pueden usar para leer y escribir datos en libros de Microsoft Excel, listas de SharePoint, tablas SQL y muchos otros formatos, que pueden almacenarse en servicios en la nube, como OneDrive para la Empresa, DropBox, SQL Server, etc.You can use connections to data sources to read and write data in Microsoft Excel workbooks, SharePoint lists, SQL tables, and many other formats, which can be stored in cloud services like OneDrive for Business, DropBox, SQL Server, etc.

Los orígenes de datos distintos de las tablas incluyen el correo electrónico, los calendarios, Twitter y las notificaciones, pero en este artículo no se habla de otros tipos de orígenes de datos.Data sources other than tables include email, calendars, Twitter, and notifications, but this article doesn't discuss these other kinds of data sources.

Orígenes de datos localesLocal data sources

Con los controles Galería, Formulario de presentación y Formulario de edición, resulta muy fácil crear una aplicación que lea y escriba datos en un origen de datos.Using the Gallery, Display form, and Edit form controls, it is easy to create an app that reads and writes data from a data source. Para empezar, lea el artículo Understand data forms (Introducción a los formularios de datos).To get started, read the article Understand data forms.

Cuando se solicita a PowerApps que cree una aplicación a partir de los datos, se utilizan estos controles.When you ask PowerApps to create an app from data, these controls are used. En segundo plano, la aplicación utiliza una tabla interna para almacenar y manipular los datos procedentes del origen de datos.Behind the scenes, the app uses an internal table to store and manipulate the data that comes from the data source.

Un tipo especial de origen de datos es la colección, que está en la propia aplicación y no tiene el respaldo de una conexión a un servicio en la nube, por lo que la información no se puede compartir entre los distintos dispositivos de un mismo usuario ni entre usuarios.A special kind of data source is the Collection, which is local to the app and not backed by a connection to a service in the cloud, so the information can not be shared across devices for the same user or between users. Las colecciones se pueden cargar y guardar localmente.Collections can be loaded and saved locally.

Tipos de tablasKinds of tables

Las tablas internas de una aplicación de PowerApps son valores fijos, como un número o una cadena son un valor.Tables that are internal to a PowerApps app are fixed values, just as a number or a string is a value. Las tablas internas no se almacenan en ningún lugar, solo existen en la memoria de la aplicación.Internal tables aren't stored anywhere, they just exist in your app's memory. La estructura y los datos de una tabla no se pueden modificar directamente.You can't directly modify the structure and data of a table. En su lugar, lo que puede hacer es crear una nueva tabla a través de una fórmula: dicha fórmula se usa para hacer una copia modificada de la tabla original.What you can do instead is to create a new table through a formula: you use that formula to make a modified copy of the original table.

Las tablas externas se almacenan en un origen de datos para su posterior recuperación y uso compartido.External tables are stored in a data source for later retrieval and sharing. PowerApps proporciona "conexiones" para leer y escribir los datos almacenados.PowerApps provides "connections" to read and write stored data. En una conexión se puede acceder a varias tablas de información.Within a connection, you can access multiple tables of information. Seleccione las tablas que desea utilizar en la aplicación y cada uno de ellas pasará a ser un origen de datos independiente.You'll select which tables to use in your app, and each will become a separate data source.

Para más información, consulte Trabajar con tablas, donde se proporcionan más detalles acerca de las tablas internas, pero también se explican las tablas externas que residen en un servicio en la nube.To learn more, Working with tables goes into more detail about internal tables, but it is also applicable to external tables residing in a cloud service.

Trabajo con tablasWorking with tables

Los orígenes de datos en tabla se pueden usar del mismo modo que se usa una tabla interna de PowerApps.You can use table data sources the same way that you use an internal PowerApps table. Al igual que una tabla interna, cada origen de datos tiene registros, columnasy propiedades que se pueden usar en las fórmulas.Just like an internal table, each data source has records, columns, and properties that you can use in formulas. Asimismo:In addition:

  • El origen de datos tiene la mismos nombres de columna y tipos de datos que la tabla subyacente de la conexión.The data source has the same column names and data types as the underlying table in the connection.

    Nota

    En los orígenes de datos de SharePoint y Excel que contengan nombres de columna con espacios, PowerApps los sustituirá por "_x0020_".For SharePoint and Excel data sources that contain column names with spaces, PowerApps will replace the spaces with "_x0020_". Por ejemplo, "Nombre de columna" en SharePoint o Excel aparecerá como "Nombre_x0020_de_columna" en PowerApps cuando se muestre en el diseño de datos o se use en una fórmula.For example, "Column Name" in SharePoint or Excel will appear as "Column_x0020_Name" in PowerApps when displayed in the data layout or used in a formula.

  • El origen de datos se carga desde el servicio automáticamente cuando se carga la aplicación.The data source is loaded from the service automatically when the app is loaded. Con la función Actualizar se puede forzar la actualización de los datos.You can force the data to refresh by using the Refresh function.
  • Cuando los usuarios ejecutan una aplicación, pueden crear, modificar y eliminar registros, y aplicar esos cambios posteriormente a la tabla subyacente del servicio.As users run an app, they can create, modify, and delete records and push those changes back to the underlying table in the service.
    • Los registros se pueden crear con las funciones Patch y Recopilar.Records can be created with the Patch and Collect functions.
    • Los registros se pueden modificar con las funciones Patch, Actualizar y UpdateIf.Records can be modified with the Patch, Update, and UpdateIf functions.
    • Los registros se pueden quitar con las funciones Quitar y RemoveIf.Records can be removed with the Remove and RemoveIf functions.
    • Los errores que se producen al trabajar con un origen de datos están disponibles a través de la función Errores.Errors when working with a data source are available through the Errors function.
  • Las funciones DataSourceInfo, Defaults y Validate proporcionan información acerca del origen de datos que se puede usar para optimizar la experiencia del usuario.The DataSourceInfo, Defaults, and Validate functions provide information about the data source that you can use to optimize the user experience.

Creación de orígenes de datosCreating data sources

PowerApps no se puede usar para crear un origen de datos conectado ni para modificar su estructura; el origen de datos ya debe existir en algún servicio.PowerApps can't be used to create a connected data source, or modify its structure; the data source must already exist in a service somewhere. Por ejemplo, para crear una tabla en un libro de Excel almacenado en OneDrive, primero es preciso usar Excel Online en OneDrive para crear un libro.For example, to create a table in an Excel workbook stored on OneDrive, you first use Excel Online on OneDrive to create a workbook. Después, se crea una conexión a él desde la aplicación.Next you create a connection to it from your app.

Sin embargo, los orígenes de datos de la colección se pueden crear y modificar dentro de una aplicación, pero son temporales.However, collection data sources can be created and modified inside an app, but are only temporary.

Visualización de uno o varios registrosDisplay one or more records

El diagrama anterior muestra el flujo de información cuando una aplicación la lee de un origen de datos: The diagram above shows the flow of information when an app reads the information in a data source:

  • La información se almacena y comparte a través de un servicio de almacenamiento (en este caso, una lista de SharePoint de un sitio de Office 365).The information is stored and shared through a storage service (in this case, a SharePoint list of an Office 365 site).
  • Una conexión hace que esta información esté disponible para la aplicación.A connection makes this information available to the app. La conexión se encarga de autenticación del usuario que va a acceder a la información.The connection takes care of authentication of the user to access the information.
  • Cuando se inicia la aplicación, o cuando se pulsa la función A, la información se extrae de la conexión y llega a un origen de datos de la aplicación para su uso local.When the app is started or the Refresh function is pressed, information is drawn from the connection into a data source in the app for local use.
  • Las fórmulas se usan para leer la información y exponerla en controles que el usuario pueda ver.Formulas are used to read the information and expose it in controls that the user can see. Para mostrar los registros de un origen de datos, use una galería en una pantalla y conecte la propiedad Elementos al origen de datos: Gallery.Items = DataSource.You can display the records of a data source by using a gallery on a screen and wiring the Items property to the data source: Gallery.Items = DataSource. Para conectar los controles dentro de la galería a la galería, use la propiedad Default de los controles.You wire controls within the gallery, to the gallery, using the controls' Default property.
  • El origen de datos también es una tabla.The data source is also a table. Por consiguiente, puede usar Filter, Sort, AddColumns y otras funciones para refinar y aumentar el origen de datos antes de usar su totalidad.So you can use Filter, Sort, AddColumns, and other functions to refine and augment the data source before using it as a whole. También puede usar Buscar, First, Last y otras funciones para trabajar con los registros individuales.You can also use the Lookup, First, Last, and other functions to work with individual records.

Modificación de un registroModify a record

En la sección anterior se ha explicado cómo leer un origen de datos.In the prededing section, you saw how to read a data source. Tenga en cuenta que las flechas del diagrama anterior son unidireccionales.Note that the arrows in the diagram above are one way. Los cambios en un origen de datos no se recuperan a través de la mismas fórmulas con las que se recuperaron los datos.Changes to a data source aren't pushed back through the same formulas in which the data was retrieved. En su lugar, se utilizan fórmulas nuevas.Instead, new formulas are used. A menudo no se utiliza la misma pantalla para editar un registro que para explorar los registros, sobre todo en los dispositivos móviles.Often a different screen is used for editing a record than for browsing records, especially on a mobile device.

Tenga en cuenta que, para modificar un registro existente de un origen de datos, debe provenir originalmente del origen de datos.Note that, to modify an existing record of a data source, the record must have originally come from the data source. El registro puede haber viajado a través de una galería, una variable de contexto y cualquier número de fórmulas, pero su origen debe de poder rastrearse hasta el origen de datos.The record may have traveled through a gallery, a context variable, and any number of formulas, but its origin should be traceable back to the data source. Esto es importante porque hay información adicional que acompaña al registro que lo identifica de forma única, lo que garantiza que el registro que se modifica es el correcto.This is important because additional information travels with the record that uniquely identifies it, ensuring that you modify the correct record.

El diagrama anterior muestra el flujo de información para actualizar un origen de datos: The diagram above shows the flow of information to update a data source:

  • Un control Formulario de edición proporciona un contenedor para las tarjetas de entrada, que se componen de controles de entrada de usuario, como un control de entrada de texto o un control deslizante.An Edit form control provides a container for input cards, which are made up of user input controls such as a text-input control or a slider. Las propiedades DataSource y Elemento se utilizan para identificar el registro que se va a editar.The DataSource and Item properties are used to identify the record to edit.
  • Cada tarjeta de entrada tiene una propiedad Default, que normalmente se establece en el campo del registro EsteElemento del formulario.Each input card has a Default property, which is usually set to the field of the form's ThisItem record. Luego, los controles de la tarjeta de entrada tomarán sus valores de entrada de Default.The controls within the input card will then take their input values from Default. Normalmente este comportamiento no es preciso modificarlo.Normally you do not need to modify this.
  • Cada tarjeta de entrada expone una propiedad Actualizar.Each input card exposes an Update property. Dicha propiedad asigna la entrada del usuario a un campo específico del registro reescribir en el origen de datos.This property maps the user's input to a specific field of the record for writing back to the data source. Normalmente este comportamiento no es preciso modificarlo.Normally you do not need to modify this.
  • Un botón o un control de imagen de la pantalla permite al usuario guardar los cambios en el registro.A button or an image control on the screen enables the user to save changes to the record. La fórmula AlSeleccionar del control llama a la función SubmitForm para realizar este trabajo.The OnSelect formula of the control calls the SubmitForm function to do this work. SubmitForm lee todas las propiedades Actualizar de las tarjetas y lo utiliza para reescribir en el origen de datos.SubmitForm reads all the Update properties of the cards and uses this to write back to the data source.
  • A veces surgirán problemas.Sometimes there will be issues. Una conexión de red puede estar inactiva o el servicio realiza una comprobación de validación sin que lo sepa la aplicación.A network connection may be down, or a validation check is made by the service that the app didn't know about. Las propiedades Error y ErrorKind del control del formulario hacen que esta información está disponible, por lo que se puede mostrar al usuario.The Error and ErrorKind properties of the form control makes this information available, so you can display it to the user.

Para lograr un mayor control sobre el proceso, también se pueden usar las funciones Patch y Errores.For more fine grained control over the process, you can also use the Patch and Errors function. El control Formulario de edición expone una propiedad Actualizaciones para que pueda leer los valores de los campos del formulario.The Edit form control exposes an Updates property so that you can read the values of the fields within the form. Esta propiedad también se puede utilizar para llamar a un conector personalizado en una conexión, omitiendo completamente las funciones Patch y SubmitForm.You can also use this property to call a custom connector on a connection, completely bypassing the Patch and SubmitForm functions.

ValidaciónValidation

Antes de realizar cualquier cambio en un registro, la aplicación debe hacer todo lo posible por asegurarse de que el cambio será aceptable.Before making a change to a record, the app should do what it can to make sure the change will be acceptable. Hay dos motivos para ello:There are two reasons for this:

  • Comentarios inmediatos para el usuario.Immediate feedback to the user. El mejor momento para corregir un problema es cuando ocurre, cuando está fresco en la mente del usuario.The best time to fix a problem is right when it happens, when it is fresh in the user's mind. Cada vez que se toca o se pulsa una tecla, puede texto en rojo que identifica un problema.Literally with each touch or keystroke, red text can appear that identifies an issue with their entry.
  • Menor tráfico de red y menor latencia de los usuarios.Less network traffic and less user latency. La detección de un mayor número de problemas en la aplicación implica que habrá menos conversaciones a través de la red para detectar y solucionar problemas.More issues detected in the app means fewer conversations over the network to detect and resolve issues. Cada conversación lleva su tiempo y el que usuario debe esperar.Each conversation takes time during which the user must wait before they can move on.

PowerApps ofrece dos herramientas para la validación:PowerApps offers two tools for validation:

  • El origen de datos puede proporcionar información sobre lo que es valido, y lo que no lo es.The data source can provide information about what is and isn't valid. Por ejemplo, los números pueden tener valores mínimo y máximo, y puede que se requieran una o varias entradas.For example, numbers can have minimum and maximum values, and one or more entries can be required. Para acceder a esta información, puede usar la función DataSourceInfo.You can access this information with the DataSourceInfo function.
  • La función Validate función usa esta misma información para comprobar el valor de una sola columna o de todo un registro.The Validate function uses this same information to check the value of a single column or of an entire record.

Control de erroresError handling

Ya ha validado el registro.Great, you've validated your record. Ha llegado el momento de actualizar el registro con Patch.Time to update that record with Patch!

Sin embargo, aún puede haber un problema.But, alas, there may still be a problem. La red no está activa, se produce un error en la validación en el servicio o el usuario no tiene los permisos adecuados, por nombrar algunos de los posibles errores con que puede toparse la aplicación.The network is down, validation at the service failed, or the user doesn't have the right permissions, just to name a few of the possible errors your app may encounter. Es preciso que responda correctamente en situaciones de error, es decir, que proporcione al usuario no solo información, sino también una forma de salir de dichas situaciones.It needs to respond appropriately to error situations, providing feedback to the user and a means for them to make it right.

Si los errores se producen en un origen de datos, la aplicación registra automáticamente la información del error y la pone a disposición del usuario a través de la función Errores.When errors occur with a data source, your app automatically records the error information and makes it available through the Errors function. Los errores están asociados a los registros que tenían los problemas.Errors are associated with the records that had the problems. Si el problema puede corregirlo el usuario, como por ejemplo, un problema de validación, puede volver a enviar el registro y los errores desaparecerán.If the problem is something the user can fix, such as a validation problem, they can resubmit the record, and the errors will be cleared.

Si se produce un error cuando un registro se crea con Patch o Recopilar, no hay registro con los que se puedan asociar los errores.If an error occurs when a record is created with Patch or Collect, there is no record to associate any errors with. En este caso, la función Patch devolverá un espacio en blanco que puede utilizarse como argumento de registro en Errores.In this case, blank will be returned by Patch and can be used as the record argument to Errors. Los errores de creación se eliminan con la siguiente operación.Creation errors are cleared with the next operation.

La función Errores devuelve una tabla de información del error.The Errors function returns a table of error information. Dicha información puede incluir información de una columna, en caso de que el error se pueda atribuir a una columna concreta.This information can include the column information, if the error can be attributed to a particular column. Utilice mensajes de error de nivel de columna en los controles de etiqueta que estén cerca del lugar ne que se encuentra la columna en la pantalla de edición.Use column-level error messages in label controls that are close to where the column is located on the edit screen. Utilice mensajes de error de nivel de registro donde el valor de Columna en la tabla de errores esté en blanco, en una ubicación próxima al botón Guardar de todo el registro.Use record-level error messages where the Column in the error table is blank, in a location close to the Save button for the entire record.

Uso de orígenes de datos grandesWorking with large data sources

Cuando se crean informes de orígenes de datos de gran tamaño (quizás millones de registros), se desea minimizar el tráfico de red.When you are creating reports from large data sources (perhaps millions of records), you want to minimize network traffic. Supongamos que desea mostrar todos los clientes cuyo StatusCode sea "Platinum" en New York City.Let's say you want to report on all Customers having a StatusCode of "Platinum" in New York City. Y supongamos también que la tabla de clientes contiene millones de registros.And that your Customers table contains millions of records.

Lógicamente, no desea incorporar todos esos millones de clientes a la aplicación para elegir los que desee.You do not want to bring those millions of Customers into your app, and then choose the ones you want. Lo que realmente desea es que la elección se realice dentro del servicio en la nube en que está almacenada la tabla y enviar a través de la red solo los registros seleccionados.What you want is to have that choosing happen inside the cloud service where your table is stored, and only send the chosen records over the network.

Aunque no todas, muchas de las funciones que puede usar para elegir los registros se pueden delegar, lo que significa que se ejecutan en el servicio en la nube.Many, but not all, functions that you can use to choose records can be delegated, which means that they are run inside the cloud service. Para aprender a hacerlo, lea la información existente acerca de la delegación.You can learn how to do this by reading about Delegation.

ColeccionesCollections

Las colecciones son un tipo especial de origen de datos.Collections are a special kind of data source. Se encuentran en la propia aplicación y no tienen el respaldo de una conexión a un servicio en la nube, por lo que la información no se puede compartir entre los distintos dispositivos de un mismo usuario ni entre usuarios.They're local to the app and not backed by a connection to a service in the cloud, so the information can not be shared across devices for the same user or between users. Funcionan como cualquier otro origen de datos, con algunas excepciones:They operate like any other data source, with a few exceptions:

  • Las colecciones se pueden crear dinámicamente con la función Recopilar.Collections can be created dynamically with the Collect function. No es preciso establecerse con antelación, como debe hacerse con orígenes de datos basados en conexión.They don't need to be established ahead of time, as connection-based data sources do.
  • Las columnas de una colección pueden modificarse en cualquier momento mediante la función Recopilar.The columns of a collection can be modified at any time using the Collect function.
  • Las recopilaciones permiten duplicar registros.Collections allow duplicate records. En una colección puede haber más de una copia del mismo registro.More than one copy of the same record can exist in a collection. Las funciones como Quitar operarán en la primera coincidencia que encuentran, salvo que se haya usado el argumento Todos.Functions such as Remove will operate on the first match they find, unless the All argument is supplied.
  • Puede usar las funciones SaveData y LoadData para guardar y volver a cargar una copia de la colección.You can use the SaveData and LoadData functions to save and reload a copy of the collection. La información se almacena en una ubicación privada a la que no pueden acceder otros usuarios, aplicaciones o dispositivos.The information is stored in a private location that other users, apps, or devices can't access.
  • Puede usar los controles Export e Import para guardar y volver a cargar una copia de la colección en un archivo con el que el usuario puede interactuar.You can use the Export and Import controls to save and reload a copy of the collection to a file that the user can interact with.

Para más información acerca de cómo trabajar con una colección como origen de datos, consulte Create and update a collection in your app (Creación y actualización de una colección en una aplicación).For more information on working with a collection as a data source, see create and update a collection.

Las colecciones se usan normalmente para almacenar el estado global de la aplicación.Collections are commonly used to hold global state for the app. Para conocer las opciones disponibles para administrar el estado, consulte Trabajar con variables.See working with variables for the options available for managing state.