Nocións acerca de táboas e rexistros en aplicacións de lenzo
En Power Apps, pode crear unha aplicación de lenzo que acceda á información en Microsoft Excel, SharePoint, SQL Server e varias outras fontes que almacenan datos en rexistros e táboas. Para traballar con máis eficacia con este tipo de datos, revise os conceptos que subxacen a estas estruturas.
- Un rexistro contén unha ou varias categorías de información sobre unha persoa, un lugar ou unha cousa. Por exemplo, un rexistro pode conter o nome, o enderezo de correo electrónico e o número de teléfono dun só cliente. Outras ferramentas fan referencia a un rexistro como "fila" ou "elemento".
- Unha táboa contén un ou máis rexistros que conteñen as mesmas categorías de información. Por exemplo, unha táboa pode conter os nomes, os enderezos de correo electrónico e os números de teléfono de 50 clientes.
Na súa aplicación, usará fórmulas para crear, actualizar e manipular rexistros e táboas. Probablemente lerá e escribirá datos nunha orixe de datos externa, que é unha táboa ampliada. Ademais, pode crear unha ou varias táboas internas, chamadas coleccións.
Pode crear unha variedade de fórmulas que toman o nome dunha táboa como argumento, do mesmo xeito que unha fórmula en Excel toma unha ou máis referencias de celas como argumentos. Algunhas fórmulas de Power Apps devolven unha táboa que reflicte os demais argumentos que especifica. Por exemplo, pode crear unha fórmula:
- para actualizar un rexistro dunha táboa especificando esa táboa como un dos múltiples argumentos para a función Parche
- para engadir, eliminar e renomear columnas dunha táboa especificando esa táboa como argumento para a función AddColumns, DropColumns ou RenameColumns. Ningunha destas funcións modifica a táboa orixinal. No seu lugar, a función devolve outra táboa baseada nos outros argumentos que especifique.
Elementos dunha táboa
Rexistros
Cada rexistro contén polo menos unha categoría de información para unha persoa, un lugar ou unha cousa. O exemplo anterior mostra un rexistro para cada produto (Chocolate, Pan e Auga) e unha columna para cada categoría de información (Prezo, Cantidade en man e Cantidade baixo pedido).
Nunha fórmula, pode referirse a un rexistro por si só, fóra do contexto dunha táboa, usando chaves. Por exemplo, este rexistro { Nome: "Amorodos", Prezo: 7,99 } non está asociado a unha táboa. Teña en conta que os nomes de campos, como Nome e Prezo nese exemplo, non están situados entre comiñas dobres.
Campos
Un campo é unha información individual dun rexistro. Pode visualizar este tipo de campo como un valor dunha columna para un rexistro concreto.
Do mesmo xeito que cun control, fai referencia a un campo dun rexistro mediante o . operador do rexistro. Por exemplo, First(Products).Name devolve o campo Nome para o primeiro rexistro da táboa Produtos.
Un campo pode conter outro rexistro ou táboa, como mostra o exemplo para a función GrupoBy. Pode aniñar tantos niveis de rexistros e táboas como desexe.
Columnas
Unha columna fai referencia ao mesmo campo para un ou varios rexistros dunha táboa. No exemplo anterior, cada produto ten un campo de prezo e ese prezo está na mesma columna para todos os produtos. A táboa anterior ten catro columnas, mostradas horizontalmente na parte superior:
- Nome
- Prezo
- Cantidade dispoñible
- Cantidade do pedido
O nome da columna reflicte os campos desa columna.
Todos os valores dunha columna son do mesmo tipo de datos. No exemplo anterior, a columna "Cantidade dispoñible" sempre contén un número e non pode conter unha cadea, como "12 unidades", para un rexistro. O valor de calquera campo tamén pode estar en branco.
Pode que fixese referencia a columnas como "campos" noutras ferramentas.
Nota
Para orixes de datos como mosaicos de SharePoint, Excel ou Power BI que conteñen nomes de columnas con espazos, Power Apps substituirá os espazos por "_x0020_". Por exemplo, "Nome da columna" dentro do mosaico de SharePoint, Excel ou Power BI aparecerá como "Column_x0020_Name" dentro de Power Apps cando se amosa no deseño de datos ou se usa nunha fórmula.
Table
Unha táboa está composta por un ou máis rexistros, cada un con varios campos que teñen nomes coherentes nos rexistros.
Calquera táboa almacenada nunha orixe de datos ou nunha colección ten un nome, que se utiliza para referirse á táboa e pasala a funcións que toman as táboas como argumentos. As táboas tamén poden ser o resultado dunha función ou dunha fórmula.
Como no seguinte exemplo, pode expresar unha táboa nunha fórmula empregando a función Táboa cun conxunto de rexistros, que se expresan entre chaves:
Table( { Value: "Strawberry" }, { Value: "Vanilla" } )
Tamén pode definir unha táboa dunha columna con parénteses cadradas. Unha forma equivalente de escribir o anterior:
[ "Strawberry", "Vanilla" ]
Fórmulas de táboa
En Excel e Power Apps, emprega fórmulas para manipular números e cadeas de texto de formas semellantes:
- En Excel, escriba un valor, como por exemplo 42, na cela A1 e logo escriba unha fórmula, como A1+2 noutra cela para mostrar o valor de 44.
- En Power Apps, estableza a propiedade Default de Slider1 en 42 e estableza a propiedade Text dunha etiqueta en Slider1.Value + 2 para amosar o valor de 44.
Nos dous casos, o valor calculado cambia automaticamente se cambia os valores dos argumentos (por exemplo, o número da cela A1 ou o valor de Slider1).
Do mesmo xeito, pode usar fórmulas para acceder e manipular datos en táboas e rexistros. Pode usar nomes de táboas como argumentos nalgunhas fórmulas, como Min(Catalog, Price) para amosar o valor máis baixo da columna Prezo da táboa Catálogo. Outras fórmulas proporcionan táboas enteiras como valores de retorno, como RenameColumns(Catalog, "Price", "Cost"), que devolve todos os rexistros da táboa Catálogo pero cambia o nome da columna Prezo a Custo.
Do mesmo xeito que cos números, as fórmulas que inclúen táboas e rexistros recalcúlanse automaticamente a medida que se modifican as táboas ou rexistros subxacentes. Se o custo dun produto da táboa Catálogo baixa a un nivel inferior ao mínimo anterior, o valor de retorno da fórmula Min cambiará automaticamente para que coincida.
Botemos unha ollada a algúns exemplos sinxelos.
Cree unha aplicación en branco para un teléfono e engada un control de Galería vertical que conteña outros controis.
De xeito predeterminado, a pantalla mostra texto de marcador de posición dunha táboa chamada CustomGallerySample. A propiedade Items do control Galería da pantalla establécese automaticamente nesa táboa.
Nota
Algúns controis reorganizáronse e ampliáronse con fins de ilustración.
En vez de configurar a propiedade Items no nome dunha táboa, configúrea nunha fórmula que inclúa o nome da táboa como argumento, como neste exemplo:
Sort(CustomGallerySample, SampleHeading, SortOrder.Descending)
Esta fórmula incorpora a función Ordenar, que toma o nome dunha táboa como primeiro argumento e o nome dunha columna desa táboa como segundo argumento. A función tamén admite un terceiro argumento opcional, que estipula que desexa clasificar os datos en orde descendente.
Estableza a propiedade Items nunha fórmula que tome a fórmula do paso anterior como argumento e devolva unha táboa, como neste exemplo:
FirstN(Sort(CustomGallerySample, SampleHeading, SortOrder.Descending), 2)
Nesta fórmula, use a función FirstN para mostrar un determinado número de rexistros nunha táboa. Use a función Ordenar como primeiro argumento para FirstN e un número (neste caso, 2) como segundo argumento, que especifica cantos rexistros hai que mostrar.
Toda a fórmula devolve unha táboa que contén os dous primeiros rexistros da táboa CustomGallerySample ordenados pola columna SampleHeading en orde descendente.
Funcións da táboa e propiedades de control
Considere a función Inferior. Se a variable benvido contén a cadea de texto "Ola, mundo", a fórmula Inferior (benvido) devolve "Ola, mundo". Esta función non modifica de ningún xeito o valor desa variable. Inferior é unha función pura en canto só procesa entradas e produce resultados. Iso é todo; non ten efectos secundarios. Todas as funcións de Excel e a maioría en Power Apps son funcións puras, que permiten recalcular automaticamente o libro de traballo ou a aplicación.
Power Apps ofrece un conxunto de funcións que operan nas táboas do mesmo xeito. Estas funcións toman as táboas como entrada e filtran, ordenar, transforman, reducen e resumen táboas enteiras de datos. De feito, Inferior e moitas outras funcións que normalmente toman un único valor tamén poden tomar unha táboa dunha única columna como entrada.
- Ordenar, Filtrar - Ordena e filtra os rexistros.
- FirstN, LastN - Devolve os primeiros N ou últimos N rexistros da táboa.
- Abs, Sqrt, Round, RoundUp, RoundDown - Operacións aritméticas en cada rexistro dunha táboa dunha única columna, que permite obter unha táboa de resultados dunha única columna.
- Left, Mid, Right, Replace, Substitute, Trim, Lower, Upper, Proper - Manipulacións de cadeas de cada rexistro dunha táboa dunha única columna que provoca a obtención dunha táboa de cadeas dunha única columna.
- Len - Para unha columna de cadeas, devolve unha táboa dunha única columna que contén a lonxitude de cada cadea.
- Concatenate - Concatena varias columnas de cadeas, obtendo unha táboa de cadeas dunha única columna.
- AddColumns, DropColumns, RenameColumns, ShowColumns - Manipulación de columnas da táboa, que permite obter unha nova táboa con distintas columnas.
- Distinct - Elimina rexistros duplicados.
- Shuffle - Cambia os rexistros nunha orde aleatoria.
- HashTags - Buscas de hashtags nunha cadea.
- Errors - Ofrece información de erro cando traballa cunha orixe de datos.
Moitas destas funcións toman unha táboa dunha única columna como entrada. Se unha táboa enteira ten só unha columna, pode especificala polo nome. Se unha táboa ten varias columnas, pode especificar unha desas columnas usando a sintaxe Table.Column. Por exemplo, Products.Name devolve a táboa dunha única columna só de valores de Nome da táboa Produtos.
Pode modificar completamente a forma dunha táboa que queira usando a función AddColumns, RenameColumns, ShowColumns ou DropColumns. Novamente, estas funcións só cambian a súa saída, non a súa fonte.
As propiedades dos controis tamén poden ser táboas:
- Elementos - Aplícase a galerías, caixas de lista e caixas de combinación. Esta propiedade define a táboa que amosa a galería ou a lista.
- SelectedItems - Aplícase a caixas de lista e caixas de combinación. Esta propiedade define a táboa de elementos que o usuario seleccionou se SelectMultiple está activado.
Fórmulas de comportamento
Outras funcións están deseñadas especificamente para modificar datos e ter efectos secundarios. Debido a que estas funcións non son puras, debe construílas con coidado e non poden participar en recalcular automaticamente os valores da aplicación. Só pode usar estas funcións dentro de fórmulas de comportamento.
- Collect, Clear, ClearCollect - Crea coleccións, as borra e engádelles datos.
- Patch - Modifica un ou varios campos nun rexistro.
- Update, UpdateIf - Actualiza rexistros que coinciden cun ou varios criterios que especifique.
- Remove, RemoveIf - Elimina rexistros que coinciden cun ou varios criterios que especifique.
Rexistrar fórmulas
Tamén pode crear unha fórmula que calcule datos para un rexistro individual, toma un rexistro individual como argumento e proporciona un rexistro individual como valor de retorno. Volvendo ao exemplo da nosa galería anterior, usemos a propiedade Gallery1.Selected para mostrar información de calquera rexistro que o usuario seleccione na galería.
Engada un Botón e axuste a súa propiedade OnSelect nesta fórmula:
Collect( SelectedRecord, Gallery1.Selected )Seleccione o botón mantendo premida a tecla Alt.
No menú Ficheiro, seleccione Coleccións.
Esta fórmula devolve un rexistro que inclúe non só os datos do rexistro seleccionados na galería, senón tamén cada control desa galería. Por exemplo, o rexistro contén unha columna de Exemplo de texto, que coincide coa columna Exemplo de texto da táboa orixinal, e unha columna Subtítulo1, que representa a etiqueta que mostra os datos desa columna. Seleccione a icona da táboa na columna Subtítulo1 para ver eses datos.
Nota
A columna Subtítulo1 pode ter o nome Subtítulo2 ou outro semellante se engadiu elementos distintos aos que especifica este tema.
Agora que ten o rexistro seleccionado, pode extraerlle campos individuais mediante o operador . .
Engada un control de Etiqueta e logo móvao baixo a galería e o botón.
Estableza a propiedade Text nesta expresión:
"Selected: " & Gallery1.Selected.SampleHeading
Tomou a propiedade Selected, que é un rexistro, e extraeu a propiedade SampleHeading dela.
Tamén pode usar un rexistro como un recipiente para fins en xeral para os valores nomeados relacionados.
- Se constrúe unha fórmula arredor das funcións UpdateContext e Navigate, use un rexistro para reunir as variables de contexto que desexa actualizar.
- Use a propiedade Updates dun Formulario de edición para reunir os cambios que o usuario realizou nun formulario.
- Use a función Patch para actualizar unha orixe de datos pero tamén para fusionar rexistros.
Nestes casos, o rexistro nunca formou parte dunha táboa.
Rexistrar funcións e propiedades de control
Funcións que devolven rexistros:
- FirstN, LastN - Devolve o primeiro ou último rexistro ou rexistros da táboa.
- Lookup - Devolve o primeiro rexistro dunha táboa que coincida cun ou máis criterios.
- Patch - Actualiza unha orixe de datos ou fusiona rexistros.
- Defaults - Devolve os valores predeterminados dunha orixe de datos.
Propiedades que devolven rexistros:
- Selected - Aplícase a galerías e caixas de lista. Devolve o rexistro actualmente seleccionado.
- Updates - Aplícase ás galerías. Reúne todos os cambios que fai un usuario nun formulario de entrada de datos.
- Update - Aplícase a controis de entrada como controis de entrada de texto e cursores da barra de desprazamento. Configura propiedades individuais para que a galería reúna.
Ámbito do rexistro
Algunhas funcións operan avaliando unha fórmula en todos os rexistros dunha táboa individualmente. O resultado da fórmula úsase de varias maneiras:
- AddColumns - A fórmula proporciona o valor do campo engadido.
- Average, Max, Min, Sum, StdevP, VarP - A fórmula proporciona o valor para agregar.
- Filter, Lookup - A fórmula determina se o rexistro debe estar incluído no resultado.
- Concat - A fórmula determina as cadeas para concatenar entre si.
- Distinct - A fórmula devolve un valor, usado para identificar rexistros duplicados.
- ForAll - A fórmula pode devolver calquera valor, potencialmente con efectos secundarios.
- Sort - A fórmula proporciona o valor segundo o que clasificar os rexistros.
- With - A fórmula pode devolver calquera valor, potencialmente con efectos secundarios.
Dentro destas fórmulas, pode facer referencia aos campos do rexistro que se está a procesar. Cada unha destas funcións crea un "ámbito de rexistro" no que se avalía a fórmula, onde os campos do rexistro están dispoñibles como identificadores de nivel superior. Tamén pode facer referencia ás propiedades de control e outros valores desde toda a aplicación.
Por exemplo, toma unha táboa de Produtos:
Para crear esta táboa de exemplos na súa aplicación, insira un botón e configure a súa propiedade OnSelect nesta fórmula e logo seleccione o botón (faga clic nel mantendo premida a tecla Alt en Power Apps Studio):
Set( Products,
Table(
{ Product: "Widget", 'Quantity Requested': 6, 'Quantity Available': 3 },
{ Product: "Gadget", 'Quantity Requested': 10, 'Quantity Available': 20 },
{ Product: "Gizmo", 'Quantity Requested': 4, 'Quantity Available': 11 },
{ Product: "Apparatus", 'Quantity Requested': 7, 'Quantity Available': 6 }
)
)
Para determinar se algún destes produtos tiña máis solicitudes do que está dispoñible:
Filter( Products, 'Quantity Requested' > 'Quantity Available' )
O primeiro argumento a Filtrar é a táboa de rexistros no que operar, e o segundo argumento é unha fórmula. Filtrar crea un ámbito de rexistro para avaliar esta fórmula no que os campos de cada rexistro están dispoñibles, neste caso Produto, Cantidade solicitada e Cantidade dispoñible. O resultado da comparación determina se cada rexistro se debe incluír no resultado da función:
Ademais deste exemplo, podemos calcular canto pedir de cada produto:
AddColumns(
Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
"Quantity To Order", 'Quantity Requested' - 'Quantity Available'
)
Aquí estamos engadindo unha columna calculada ao resultado. AddColumns ten o seu propio ámbito de rexistro que usa para calcular a diferenza entre o solicitado e o dispoñible.
Finalmente, podemos reducir a táboa de resultados a só as columnas que queremos:
ShowColumns(
AddColumns(
Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
"Quantity To Order", 'Quantity Requested' - 'Quantity Available'
),
"Product",
"Quantity To Order"
)
Teña en conta que nas opcións anteriores, empregamos comiñas dobres (") nalgúns lugares e comiñas simples (') noutros lugares. As comiñas simples son necesarias cando se fai referencia ao valor dun obxecto, como un campo ou táboa, no que o nome do obxecto contén un espazo. As comiñas dobres úsanse cando non estamos facendo referencia ao valor dun obxecto, senón falando del, especialmente en situacións nas que o obxecto aínda non existe, como no caso de AddColumns.
Desambiguación
Os nomes de campos engadidos co ámbito de rexistro anulan os mesmos nomes doutros lugares da aplicación. Cando isto sucede, aínda pode acceder a valores desde fóra do ámbito do rexistro co operador @ disambiguation:
- Para acceder a valores desde ámbitos de rexistro aniñados, use o operador @ co nome da táboa que se opera ao usar este padrón:
Table[@FieldName] - Para acceder a valores globais, como orixes de datos, coleccións e variables de contexto, use o padrón [@ObjectName] (sen designación de táboa).
Se a táboa na que se está operando é unha expresión, como Filter( Table, ... ), o operador de desambiguación non se pode usar. Só o ámbito de rexistro máis interior pode acceder a campos desde esta expresión de táboa ao non usar o operador de desambiguación.
Por exemplo, imaxine dispoñer dunha colección X:
Pode crear esta colección con ClearCollect( X, [1, 2] ).
E outra colección Y:
Pode crear esta colección con ClearCollect( Y, ["A", "B"] ).
Ademais, defina unha variable de contexto chamada Value con esta fórmula: UpdateContext( {Value: "!"} )
Xuntémolo todo. Neste contexto, a seguinte fórmula:
Ungroup(
ForAll( X,
ForAll( Y,
Y[@Value] & Text( X[@Value] ) & [@Value]
)
),
"Value"
)
produce esta táboa:
Que pasa aquí? A función ForAll máis externa define un ámbito de rexistro para X que permite o acceso ao campo Valor de cada rexistro mentres se procesa. Pódese acceder simplemente usando a palabra Valor ou usando X[@Value].
A función ForAll interior define outro ámbito de rexistro para Y. Debido a que esta táboa tamén ten un campo Valor definido, usando Valor aquí fai referencia ao campo dentro do rexistro de Y e xa non ao de X. Aquí, para acceder ao campo Valor de X, debemos usar a versión máis longa co operador de desambiguación.
Debido a que Y é o ámbito de rexistro máis interno, o acceso aos campos desta táboa non require desambiguación, o que nos permite usar esta fórmula co mesmo resultado:
Ungroup(
ForAll( X,
ForAll( Y,
Value & Text( X[@Value] ) & [@Value]
)
),
"Value"
)
Todos os ámbitos de rexistro de ForAll anulan o ámbito global. A variable de contexto Valor que definimos non está dispoñible por nome sen o operador de desambiguación. Para acceder a este valor, use [@Value].
Desagrupar aplana o resultado porque as funcións ForAll aniñadas provocan unha táboa de resultados aniñada.
Táboas dunha soa columna
Para operar nunha única columna desde unha táboa, use a función ShowColumns como neste exemplo:
ShowColumns( Products, "Product" )
Esta fórmula produce esta táboa dunha única columna:
Para obter unha alternativa máis curta, especifique Table.Column, que extrae a táboa de columna única de tan só Columna de Táboa. Por exemplo, esta fórmula produce exactamente o mesmo resultado que ao usar ShowColumns.
Products.Product
Rexistros en liña
Expresa rexistros mediante chaves que conteñen valores de campo con nome. Por exemplo, pode expresar o primeiro rexistro da táboa ao comezo deste tema empregando esta fórmula:
{ Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 }
Tamén pode incorporar fórmulas a outras fórmulas, como se mostra neste exemplo:
{ Name: First(Products).Name, Price: First(Products).Price * 1.095 }
Pode aniñar rexistros aniñando chaves, como se mostra neste exemplo:
{ 'Quantity': { 'OnHand': ThisItem.QuantOnHand, 'OnOrder': ThisItem.QuantOnOrder } }
Inclúa cada nome de columna que conteña un carácter especial, como un espazo ou dous puntos, entre comiñas simples. Para usar unha comiña simple dentro dun nome de columna, multiplíquea por dous.
Teña en conta que o valor da columna Prezo non inclúe un símbolo monetario, como o signo do dólar. Ese formato aplicarase cando se amose o valor.
Táboas en liña
Pode crear unha táboa empregando a función Táboa función e un conxunto de rexistros. Pode expresar a táboa ao comezo deste tema empregando esta fórmula:
Table(
{ Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 },
{ Name: "Bread", Price: 4.95, 'Quantity on Hand': 34, 'Quantity on Order': 0 },
{ Name: "Water", Price: 4.95, 'Quantity on Hand': 10, 'Quantity on Order': 0 }
)
Tamén pode aniñar táboas:
Table(
{ Name: "Chocolate",
'Quantity History': Table( { Quarter: "Q1", OnHand: 10, OnOrder: 10 },
{ Quarter: "Q2", OnHand: 18, OnOrder: 0 } )
}
)
Táboas de valores en liña
Pode crear táboas dunha única columna especificando valores entre corchetes. A táboa resultante ten unha única columna, chamada Valor.
Por exemplo, [ 1, 2, 3, 4 ]
equivale a Table( { Value: 1 }, { Value: 2 }, { Value: 3 }, { Value: 4 } )
e devolve esta táboa:
Nota
Pode indicarnos as súas preferencias para o idioma da documentación? Realice unha enquisa breve. (teña en conta que esa enquisa está en inglés)
Esta enquisa durará sete minutos aproximadamente. Non se recompilarán datos persoais (declaración de privacidade).