Entender fontes de dados no PowerAppsUnderstand data sources in PowerApps

A maioria dos aplicativos do Microsoft PowerApps usa informações externas armazenadas nos serviços de nuvem chamados Fontes de dados.Most PowerApps apps use external information stored in cloud services called Data Sources. Um exemplo comum é uma tabela em um arquivo do Excel armazenado no OneDrive for Business.A common example is a table in an Excel file stored in OneDrive for Business. Os aplicativos acessam essas fontes de dados usando Conexões.Apps access these data sources by using Connections.

Este artigo descreve os diferentes tipos de fontes de dados e como trabalhar com fontes de dados de tabela.This article discusses the different kinds of data sources, and how to work with table data sources.

É fácil criar um aplicativo que faça a leitura e gravação básicas em uma fonte de dados.It is easy to create an app that does basic reading and writing to a data source. Mas, às vezes, você precisa de mais controle sobre como os dados fluem dentro e fora do seu aplicativo.But sometimes you want more control over how data flows in and out of your app. Este artigo descreve como as funções Patch, DataSourceInfo, Validar e Erros fornecem mais controle.This article describes how the Patch, DataSourceInfo, Validate, and Errors functions provide more control.

Tipos de fontes de dadosKinds of data sources

Fontes de dados podem ser conectadas a um serviço de nuvem, ou elas podem ser locais para um aplicativo.Data sources can be connected to a cloud service, or they can be local to an app.

Fontes de dados conectadasConnected data sources

As fontes de dados mais comuns são tabelas, que podem ser usadas para recuperar e armazenar informações.The most common data sources are tables, which you can use to retrieve and store information. Você pode usar conexões a fontes de dados para ler e gravar dados em pastas de trabalho do Microsoft Excel, listas do SharePoint, tabelas SQL e muitos outros formatos, que podem ser armazenados nos serviços de nuvem como o OneDrive for Business, 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.

Fontes de dados diferentes de tabelas incluem email, calendários, Twitter e notificações, mas este artigo não aborda esses outros tipos de fontes de dados.Data sources other than tables include email, calendars, Twitter, and notifications, but this article doesn't discuss these other kinds of data sources.

Fontes de dados locaisLocal data sources

Ao usar os controles Galeria, Exibir de e Editar formulário, é fácil criar um aplicativo que lê e grava dados de uma fonte de dados.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 começar, leia o artigo Entender formulários de dados.To get started, read the article Understand data forms.

Quando você pede ao PowerApps para criar um aplicativo com base nos dados, esses controles serão usados.When you ask PowerApps to create an app from data, these controls are used. Nos bastidores, o aplicativo usa uma tabela interna para armazenar e manipular os dados provenientes da fonte de dados.Behind the scenes, the app uses an internal table to store and manipulate the data that comes from the data source.

Um tipo especial de fonte de dados é a Coleção, que é local para o aplicativo e não apoiado por uma conexão a um serviço na nuvem, portanto, as informações não podem ser compartilhadas entre dispositivos para o mesmo usuário ou entre os usuários.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. As coleções podem ser carregadas e salvas localmente.Collections can be loaded and saved locally.

Tipos de tabelasKinds of tables

Tabelas internas para um aplicativo do PowerApps são valores fixos, assim como um número ou uma cadeia de caracteres é um valor.Tables that are internal to a PowerApps app are fixed values, just as a number or a string is a value. Tabelas internas não são armazenadas em qualquer lugar, elas existem apenas na memória do aplicativo.Internal tables aren't stored anywhere, they just exist in your app's memory. Você não pode modificar diretamente a estrutura e os dados de uma tabela.You can't directly modify the structure and data of a table. Em vez disso, o que você pode fazer é criar uma nova tabela por meio de uma fórmula: use essa fórmula para fazer uma cópia modificada da tabela 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.

As tabelas externas são armazenadas em uma fonte de dados para recuperação e compartilhamento posteriores.External tables are stored in a data source for later retrieval and sharing. O PowerApps fornece "conexões" para ler e gravar dados armazenados.PowerApps provides "connections" to read and write stored data. Em uma conexão, você pode acessar várias tabelas de informações.Within a connection, you can access multiple tables of information. Selecione quais tabelas usar em seu aplicativo e cada uma se tornará uma fonte de dados separada.You'll select which tables to use in your app, and each will become a separate data source.

Para saber mais, Trabalhando com tabelas entra em mais detalhes sobre tabelas internas, mas também se aplica a tabelas externas que residem em um serviço de nuvem.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.

Trabalhando com tabelasWorking with tables

Você pode usar fontes de dados de tabela da mesma maneira que você usa uma tabela interna do PowerApps.You can use table data sources the same way that you use an internal PowerApps table. Assim como uma tabela interna, cada fonte de dados tem registros, colunas e propriedades que podem ser usadas em fórmulas.Just like an internal table, each data source has records, columns, and properties that you can use in formulas. Além disso:In addition:

  • A fonte de dados tem os mesmos nomes de colunas e tipos de dados da tabela subjacente na conexão.The data source has the same column names and data types as the underlying table in the connection.

    Observação

    Nas fontes de dados do Excel e do SharePoint que contêm nomes de colunas com espaços, o PowerApps substituirá os espaços por "_x0020_".For SharePoint and Excel data sources that contain column names with spaces, PowerApps will replace the spaces with "_x0020_". Por exemplo, "Nome da Coluna", no SharePoint ou no Excel, aparecerá como "Nome_x0020_da_x0020_Coluna" no PowerApps quando exibidos no layout de dados ou usados em uma 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.

  • A fonte de dados é carregada automaticamente do serviço quando o aplicativo for carregado.The data source is loaded from the service automatically when the app is loaded. Você pode forçar os dados para serem atualizados usando a função Renovar.You can force the data to refresh by using the Refresh function.
  • Conforme os usuários executam um aplicativo, eles podem criar, modificar e excluir registros e obter essas alterações de volta à tabela subjacente no serviço.As users run an app, they can create, modify, and delete records and push those changes back to the underlying table in the service.
    • Registros podem ser criados com as funções Patch e Coletar.Records can be created with the Patch and Collect functions.
    • Registros podem ser modificados com as funções Patch, Atualizar e AtualizarSe.Records can be modified with the Patch, Update, and UpdateIf functions.
    • Registros podem ser criados com as funções Remover e RemoverSe.Records can be removed with the Remove and RemoveIf functions.
    • Erros ao trabalhar com uma fonte de dados estão disponíveis por meio da função Erros.Errors when working with a data source are available through the Errors function.
  • As funções DataSourceInfo, Padrões e Validar fornecem informações sobre a fonte de dados que pode ser usada para otimizar a experiência do usuário.The DataSourceInfo, Defaults, and Validate functions provide information about the data source that you can use to optimize the user experience.

Criando fontes de dadosCreating data sources

o PowerApps não pode ser usado para criar uma fonte de dados conectada nem para modificar sua estrutura; a fonte de dados já deve existir em um serviço em algum lugar.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 exemplo, para criar uma tabela em uma pasta de trabalho do Excel armazenada no OneDrive, primeiro use o Excel Online no OneDrive para criar uma pasta de trabalho.For example, to create a table in an Excel workbook stored on OneDrive, you first use Excel Online on OneDrive to create a workbook. Em seguida, crie uma conexão com ela em seu aplicativo.Next you create a connection to it from your app.

No entanto, as fontes de dados de coleção podem ser criadas e modificadas dentro de um aplicativo, mas são apenas temporárias.However, collection data sources can be created and modified inside an app, but are only temporary.

Exibir um ou mais registrosDisplay one or more records

O diagrama acima mostra o fluxo de informações quando um aplicativo lê as informações em uma fonte de dados: The diagram above shows the flow of information when an app reads the information in a data source:

  • As informações são armazenadas e compartilhadas por meio de um serviço de armazenamento (nesse caso, uma lista do SharePoint de um site do Office 365).The information is stored and shared through a storage service (in this case, a SharePoint list of an Office 365 site).
  • Uma conexão torna essas informações disponíveis para o aplicativo.A connection makes this information available to the app. A conexão cuida da autenticação do usuário para acessar as informações.The connection takes care of authentication of the user to access the information.
  • Quando o aplicativo é iniciado ou a função Renovar é pressionada, as informações são retiradas da conexão para uma fonte de dados no aplicativo para 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.
  • As fórmulas são usadas para ler as informações e expô-las em controles que o usuário pode ver.Formulas are used to read the information and expose it in controls that the user can see. Você pode exibir os registros de uma fonte de dados usando uma galeria em uma tela e gravando a propriedade Itens na fonte de dados: 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. Conecte controles da galeria à galeria usando a propriedade Default dos controles.You wire controls within the gallery, to the gallery, using the controls' Default property.
  • A fonte de dados também é uma tabela.The data source is also a table. Portanto, você pode usar Filtrar, Classificar, AdicionarColunas e outras funções para refinar e aumentar a fonte de dados antes de usá-la como um todo.So you can use Filter, Sort, AddColumns, and other functions to refine and augment the data source before using it as a whole. Também é possível usar Pesquisa, Primeiro, Último e outras funções para trabalhar com registros individuais.You can also use the Lookup, First, Last, and other functions to work with individual records.

Modificar um registroModify a record

Na seção anterior, você viu como ler uma fonte de dados.In the prededing section, you saw how to read a data source. Observe que as setas no diagrama acima são uma maneira.Note that the arrows in the diagram above are one way. Alterações em uma fonte de dados não são recuperadas pelas mesmas fórmulas com as quais os dados foram recuperados.Changes to a data source aren't pushed back through the same formulas in which the data was retrieved. Em vez disso, novas fórmulas são usadas.Instead, new formulas are used. Geralmente, a tela usada para editar um registro é diferente da que procura registros, especialmente em um dispositivo móvel.Often a different screen is used for editing a record than for browsing records, especially on a mobile device.

Observe que, para modificar um registro existente de uma fonte de dados, o registro deve ser originalmente proveniente da fonte de dados.Note that, to modify an existing record of a data source, the record must have originally come from the data source. O registro pode ter passado por uma galeria, uma variável de contexto e qualquer quantidade de fórmulas, mas a origem deve ser rastreada até a fonte de dados.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. Isso é importante porque informações adicionais são passadas com o registro que as identifica com exclusividade, garantindo que você modifique o registro correto.This is important because additional information travels with the record that uniquely identifies it, ensuring that you modify the correct record.

O diagrama acima mostra o fluxo de informações para atualizar uma fonte de dados: The diagram above shows the flow of information to update a data source:

  • Um controle Editar formulário fornece um contêiner para os cartões de entrada, que são compostos por controles de entrada do usuário como um controle de entrada de texto ou um controle 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. As propriedades DataSource e Item são usadas para identificar o registro para editar.The DataSource and Item properties are used to identify the record to edit.
  • Cada cartão de entrada tem uma propriedade Padrão, que, geralmente, é definida como o campo do registro ThisItem do formulário.Each input card has a Default property, which is usually set to the field of the form's ThisItem record. Os controles no cartão de entrada terão então seus valores de entrada de Padrão.The controls within the input card will then take their input values from Default. Normalmente, não é necessário modificar isso.Normally you do not need to modify this.
  • Cada cartão de entrada expõe uma propriedade Atualizar.Each input card exposes an Update property. Essa propriedade mapeia a entrada do usuário para um campo específico do registro para gravar de volta na fonte de dados.This property maps the user's input to a specific field of the record for writing back to the data source. Normalmente, não é necessário modificar isso.Normally you do not need to modify this.
  • Um controle de botão ou de imagem na tela permite que o usuário salve as alterações no registro.A button or an image control on the screen enables the user to save changes to the record. A fórmula OnSelect do controle chama a função SubmitForm para fazer esse trabalho.The OnSelect formula of the control calls the SubmitForm function to do this work. SubmitForm lê todos as propriedades Atualizar das fichas e usa isso para gravar na fonte de dados.SubmitForm reads all the Update properties of the cards and uses this to write back to the data source.
  • Às vezes, haverá problemas.Sometimes there will be issues. Uma conexão de rede pode estar inativa ou uma verificação de validação é feita pelo serviço desconhecida pelo aplicativo.A network connection may be down, or a validation check is made by the service that the app didn't know about. As propriedades Erro e ErrorKind do controle de formulário disponibilizam essas informações para que você possa exibi-las para o usuário.The Error and ErrorKind properties of the form control makes this information available, so you can display it to the user.

Para refinar ainda mais o controle sobre o processo, também é possível usar a função Patch e Erros.For more fine grained control over the process, you can also use the Patch and Errors function. O controle Editar formulário expõe uma propriedade Atualizações para que você possa ler os valores dos campos no formulário.The Edit form control exposes an Updates property so that you can read the values of the fields within the form. Você também pode usar essa propriedade para chamar um conector personalizado em uma conexão, ignorando completamente as funções Patch e SubmitForm.You can also use this property to call a custom connector on a connection, completely bypassing the Patch and SubmitForm functions.

ValidaçãoValidation

Antes de fazer uma alteração em um registro, o aplicativo deve fazer o que for possível para certificar-se de que a alteração será aceitável.Before making a change to a record, the app should do what it can to make sure the change will be acceptable. Há dois motivos para isso:There are two reasons for this:

  • Comentários imediatos ao usuário.Immediate feedback to the user. O melhor momento para corrigir um problema é exatamente quando ele ocorre, quando está fresco na memória do usuário.The best time to fix a problem is right when it happens, when it is fresh in the user's mind. Literalmente, em cada toque ou pressionamento de tecla, um texto vermelho pode aparecer identificando um problema com sua entrada.Literally with each touch or keystroke, red text can appear that identifies an issue with their entry.
  • Menos tráfego de rede e menor latência de usuário.Less network traffic and less user latency. Mais problemas detectados no aplicativo significa menos conversas pela rede para detectar e resolver problemas.More issues detected in the app means fewer conversations over the network to detect and resolve issues. Cada conversa leva tempo durante o qual o usuário deve aguardar antes de prosseguir.Each conversation takes time during which the user must wait before they can move on.

O PowerApps oferece duas ferramentas para validação:PowerApps offers two tools for validation:

  • A fonte de dados pode fornecer informações sobre o que é e o que não é válido.The data source can provide information about what is and isn't valid. Por exemplo, os números podem ter valores mínimo e máximo e uma ou mais entradas podem ser necessárias.For example, numbers can have minimum and maximum values, and one or more entries can be required. Você pode acessar essas informações com a função DataSourceInfo.You can access this information with the DataSourceInfo function.
  • A função Validar usa essas mesmas informações para verificar o valor de uma única coluna ou de um registro inteiro.The Validate function uses this same information to check the value of a single column or of an entire record.

Tratamento de erroError handling

Ótimo, você validou o registro.Great, you've validated your record. Tempo para atualizar esse registro com Patch!Time to update that record with Patch!

Mas, infelizmente, ainda pode haver algum problema.But, alas, there may still be a problem. A rede está inativa, a validação no serviço falhou, ou o usuário não tem as permissões corretas, apenas citar alguns dos possíveis erros que seu aplicativo pode encontrar.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. Ele precisa responder adequadamente a situações de erro, fornecendo comentários ao usuário e um meio para que ele o utilize corretamente.It needs to respond appropriately to error situations, providing feedback to the user and a means for them to make it right.

Quando ocorrem erros com uma fonte de dados, seu aplicativo automaticamente registra as informações do erro e as disponibiliza por meio da função Erros.When errors occur with a data source, your app automatically records the error information and makes it available through the Errors function. Erros estão associados aos registros com os problemas.Errors are associated with the records that had the problems. Se o problema for algo que o usuário possa corrigir, como um problema de validação, ele poderá reenviar o registro e os erros serão cancelados.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.

Se um erro ocorrer quando um registro for criado com Patch ou Coletar, não haverá nenhum registro para associar a um erro.If an error occurs when a record is created with Patch or Collect, there is no record to associate any errors with. Nesse caso, em branco será retornado por Patch e pode ser usado como o argumento de registro de Erros.In this case, blank will be returned by Patch and can be used as the record argument to Errors. Erros de criação são apagados com a próxima operação.Creation errors are cleared with the next operation.

A função Erros retorna uma tabela de informações de erros.The Errors function returns a table of error information. Essas informações poderão incluir as informações de coluna se o erro puder ser atribuído a uma determinada coluna.This information can include the column information, if the error can be attributed to a particular column. Use as mensagens de erro de nível de coluna em controles de rótulo que estão próximas de onde a coluna está localizada na tela de edição.Use column-level error messages in label controls that are close to where the column is located on the edit screen. Use as mensagens de erro de nível de registro nos casos em que a Coluna na tabela de erros esteja em branco, em um local próximo ao botão Salvar para todo o 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.

Trabalhando com grandes fontes de dadosWorking with large data sources

Quando estiver criando relatórios de fontes de dados grandes (talvez milhões de registros), é possível minimizar o tráfego de rede.When you are creating reports from large data sources (perhaps millions of records), you want to minimize network traffic. Digamos que você deseja relatar todos os clientes com um StatusCode "Platinum" na cidade de Nova York.Let's say you want to report on all Customers having a StatusCode of "Platinum" in New York City. E essa tabela de clientes contém milhões de registros.And that your Customers table contains millions of records.

Você não quer colocar esses milhões de clientes em seu aplicativo e, por isso, escolhe aqueles que deseja.You do not want to bring those millions of Customers into your app, and then choose the ones you want. O que você precisa é que essa escolha ocorra dentro do serviço de nuvem em que a tabela está armazenada e enviar somente os registros escolhidos pela rede.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.

Muitas, mas nem todas as funções que você pode usar para escolher registros podem ser delegadas, o que significa que elas serão executadas no serviço de nuvem.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. Você pode aprender como fazer isso lendo sobre Delegação.You can learn how to do this by reading about Delegation.

ColeçõesCollections

Coleções são um tipo especial de fonte de dados.Collections are a special kind of data source. Elas são locais para o aplicativo e não são apoiadas por uma conexão a um serviço na nuvem, portanto, as informações não podem ser compartilhadas entre dispositivos para o mesmo usuário ou entre os usuários.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. Elas funcionam como qualquer outra fonte de dados, com algumas exceções:They operate like any other data source, with a few exceptions:

  • Coleções podem ser criadas dinamicamente com a função Coletar.Collections can be created dynamically with the Collect function. Elas não precisam ser estabelecidas antes do tempo, como fontes de dados com base em conexão.They don't need to be established ahead of time, as connection-based data sources do.
  • As colunas de uma coleção podem ser modificadas a qualquer momento usando a função Coletar.The columns of a collection can be modified at any time using the Collect function.
  • Coleções permitem registros duplicados.Collections allow duplicate records. Mais de uma cópia do mesmo registro pode existir em uma coleção.More than one copy of the same record can exist in a collection. Funções como Remover operarão na primeira correspondência que encontrarem, a menos que o argumento Tudo seja fornecido.Functions such as Remove will operate on the first match they find, unless the All argument is supplied.
  • Você pode usar as funções SalvarDados e CarregarDados para salvar e recarregar uma cópia da coleção.You can use the SaveData and LoadData functions to save and reload a copy of the collection. As informações são armazenadas em um local privado que outros usuários, aplicativos ou dispositivos não podem acessar.The information is stored in a private location that other users, apps, or devices can't access.
  • Você pode usar os controles Exportar e Importar para salvar e recarregar uma cópia da coleção em um arquivo com o qual o usuário pode interagir.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 obter mais informações sobre como trabalhar com uma coleção como uma fonte de dados, consulte criar e atualizar uma coleção.For more information on working with a collection as a data source, see create and update a collection.

Coleções normalmente são usadas para manter o estado global para o aplicativo.Collections are commonly used to hold global state for the app. Consulte trabalhando com variáveis para as opções disponíveis para gerenciar o estado.See working with variables for the options available for managing state.