Tipos de datos

A información flúe a través de Power Fx en valores pequenos e discretos, como as celas dunha folla de cálculo. Por exemplo, os datos dun campo de aniversario e un campo de aniversario flúen como un valor de data que inclúe o ano, o mes e o día. Power Fx formata estes valores, restrinxe a entrada ao que é adecuado para cada un e comparte os valores cunha base de datos. Os aniversarios e aniversarios poden diferir segundo as persoas, pero o sistema xestiona do mesmo xeito. Neste caso, Data é un exemplo de tipo de datos.

Este artigo explica cada tipo de datos en Power Fx, como funcionan e como se mapean a fontes de datos externas.

Tipo de datos Descripción Exemplos
Booleano Un valor verdadeiro ou falso. Podes usalo directamente en Se,Filtro e outras funcións sen comparación. verdade
Elección Unha elección entre un conxunto de opcións, apoiado por un número. Este tipo de datos combina unha etiqueta de texto localizable cun valor numérico. A etiqueta aparece na aplicación e o valor numérico gárdase e úsase para as comparacións. A función Type soporta este tipo de datos se usa unha instancia dun campo Choice por nome. ThisItem.OrderStatus
Cor Unha especificación de cor que inclúe unha canle alfa. Cor.Vermello
ColorValue("#102030")
RGBA(255; 128; 0; 0,5)
Moeda Valor de moeda almacenado nun número de coma flotante. Os valores de moeda son os mesmos que os valores de número con opcións de formato de moeda. A función Type non admite o tipo de datos Currency . 123
4.56
Data Unha data sen hora, no fuso horario do usuario da aplicación. Data (5, 16 de 2019)
DataHora Unha data cunha hora, no fuso horario do usuario da aplicación. DateTimeValue( "16 de maio, 2019 1:23:09 PM")
Decimal Un número con alta precisión, operacións de base 10 e un alcance limitado. 123
Decimal("1.2345")
Dinámico (anteriormente UntypedObject) O tipo do valor é dinámico e pode variar en tempo de execución. Un valor dinámico pode ser calquera tipo existente, e pode ser convertido en tipos compatibles usando funcións como Boolean(),Value(),Table(), etc. Para obter máis información, consulte Valores dinámicos e Traballar con JSON. ParseJSON("{ ""Campo"" : 1234 }").Campo
Flotar Un número con precisión estándar, operacións base 2 e unha ampla gama. 123
8.903e121
1.234e-200
GUID Un identificador único a nivel mundial. GUID()
GUID( "123e4567-e89b-12d3-a456-426655440000" )
Hiperligazón Cadea de texto que contén un hipervínculo. "https://powerapps.microsoft.com"
Imaxe Unha cadea de texto de identificador de recursos universal (URI) a unha imaxe en .jpeg, .png, .svg, .gifou outro formato común de imaxe web. A función Tipo non admite o tipo de datos Imaxe . MyImage engadida como recurso de aplicación
"https://northwindtraders.com/logo.jpg"
"appres://blobmanager/7b12ffa2..."
Medios Unha cadea de texto URI para unha gravación de vídeo ou audio. A función Tipo non admite o tipo de datos Media . MyVideo engadiuse como recurso da aplicación
"https://northwindtraders.com/intro.mp4"
"appres://blobmanager/3ba411c..."
Número Un alias para Decimal (a maioría dos Power Fx hosts) ou Float (aplicacións Canvas). Se pode usar calquera variedade de números para unha situación, use Number para a máxima compatibilidade. 123
0,0123
1e4
Gravar Un rexistro de valores de datos. Este tipo de datos composto contén instancias doutros tipos de datos listados neste artigo. Para obter máis información, consulte Traballar coas táboas. A función Type admite este tipo de datos se usa unha instancia dun Record. { Empresa: "Northwind Traders",
Persoal: 35,
Sen ánimo de lucro: false }
Referencia de rexistro Unha referencia a un rexistro nunha táboa. Estas referencias úsanse a miúdo con buscas polimórficas. Para máis información, consulte Traballar con referencias. A función Type non admite este tipo de datos. Primeiro(Contas).Propietario
Táboa Táboa de rexistros. Todos os rexistros deben ter os mesmos nomes de campo e tipos de datos, e os campos omitidos son tratados como en branco. Este tipo de datos composto contén instancias doutros tipos de datos listados neste artigo. Para obter máis información, consulte Traballar coas táboas. A función Type soporta este tipo de datos se usa unha instancia dunha táboa. Táboa( { Nome: "Sidney",
Apelido: "Higa" },
{ Nome: "Nancy",
Apelido: "Anderson" } )
Texto Unha cadea de texto Unicode. "Ola, mundo"
Tempo Unha hora sen data, no fuso horario do usuario da aplicación. Tempo (11, 23, 45)
Baleiro Usado só por funcións definidas polo usuario, indica que unha función non ten un tipo de retorno. A función Type non admite este tipo de datos. Aínda que unha función non teña un tipo ou valor de retorno, sempre pode devolver un erro. Ola(): Void = { Notificación("Ola!" ) }
Si/Non Unha elección entre un conxunto de dúas opcións, apoiado por un valor booleano. Este tipo de datos combina unha etiqueta de texto localizable cun valor booleano. A etiqueta aparece na aplicación e o valor booleano gárdase e úsase para as comparacións. A función Tipo soporta este tipo de datos se usa unha instancia dun campo Si/Non por nome. Este Elemento.Imponible

Moitos destes tipos de datos son similares e teñen a mesma representación subxacente, como un campo de hiperligazón tratado como texto. Os tipos de datos adicionais ofrecen mellores experiencias predeterminadas en formularios e outros controis.

En branco

Todos os tipos de datos poden ter un valor en branco (sen valor). O termo "nulo" úsase con frecuencia en bases de datos para este concepto.

Use a función Baleiro coa función Conxunto ou Parche para definir unha variable ou campo en baleiro. Por exemplo, Set( x, Blank() ) elimina o valor da variable global x.

Proba un valor en branco coa función IsBlank . Substitúa posibles valores en branco por valores que non estean en branco usando a función Coalesce.

Debido a que todos os tipos de datos soportan en branco, os tipos de datos de opción Boolean e Two teñen tres valores posibles.

Os catro tipos de datos están baseados nunha cadea de texto Unicode.

Texto incrustado

As cadeas de texto incrustadas nunha fórmula están incluídas entre comiñas dobres. Use dúas comiñas dobres xuntas para representar unha única comiña dobre na cadea de texto. Por exemplo, usando a seguinte fórmula na propiedade OnSelect dun control Botón:

Notify( "Jane said ""Hello, World!""" )

Resulta nun banner cando se preme o botón, onde se omiten as primeiras e últimas comiñas dobres (xa que delimitan a cadea de texto) e as comiñas dobres repetidas ao redor de Hello, World! son substituídas por unha soa comiña dobre:

notificación emerxente coa mensaxe Jane dixo

Non se usan comiñas individuais para nomes de identificador que conteñen caracteres especiais e non teñen importancia especial dentro dunha cadea de texto.

Interpolación de cadeas

Use a interpolación de cadeas para inserir fórmulas nunha cadea de texto. A miúdo é máis fácil traballar con este enfoque e visualizar a saída que usar a función Concatenar ou o operador & .

Coloque como prefixo na cadea de texto un signo de dólar $ e engada a fórmula que se vai incrustar con chaves { }. Para incluír unha chave na cadea de texto, utilice chaves repetidas: {{ ou }}. A interpolación de cadeas pódese usar en calquera lugar onde se poida usar unha cadea de texto estándar.

Por exemplo, considere esta fórmula con variables globais Mazás establecido en 3 e Plátanos axustado en 4:

$"We have {Apples} apples, {Bananas} bananas, yielding {Apples+Bananas} fruit total."

Esta fórmula devolve a cadea de texto Temos 3 mazás, 4 plátanos, un total de 7 froitas. As variables Mazás e Plátanos insírense no texto substituíndo as chaves, xunto co resultado da fórmula matemática Mazás+Plátanos. Os espazos e outros caracteres arredor das chaves consérvanse tal e como están.

As fórmulas incorporadas poden incluír calquera función ou operador. Todo o que se require é que o resultado da fórmula poida ser forzado a unha cadea de texto. Por exemplo, esta fórmula insire Alcume se se fornece, ou o Nome se non, nun saúdo:

$"Welcome {Coalesce( NickName, FirstName )}, it's great to meet you!"

Se NickName está axustado en "Joe", esta fórmula producirá a cadea de texto Dámoslle a benvida, Joe, encantado de coñecelo. Pero se NickName está baleiro e FirstName é "Joseph", esta fórmula produce Estimado Joseph, encantado de coñecelo no seu lugar.

A interpolación de cadeas pode incluír cadeas de texto estándar na fórmula incrustada. Por exemplo, se non se forneceu nin NickName ou FirstName, aínda podemos fornecer "Friend" como substituto:

$"Welcome {Coalesce( NickName, FirstName, "Friend" )}!"

Incluso se poden aniñar as interpolacións de cadeas. Considere este exemplo no que se combinan o Nome, Segundo nome e Apelido nun saúdo. Aínda que un ou dous destes valores estean en branco, mantense o número correcto de espazos entre as partes do nome. Se non se proporciona ningunha das partes, a interpolación da cadea interna contraerase nunha cadea baleira e substituirase pola función Fusionar por "Amigo".

$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
Primeira Centro Última Resultado
Xoán Qunicy Doe Welcome John Quincy Doe!
Xoán en branco Doe Welcome John Doe!
en branco en branco Doe Welcome Doe!
en branco en branco en branco Welcome Friend!

Newlines

As cadeas de texto incrustadas poden conter novas liñas. Por exemplo, considere axustar a propiedade Text dun control de Etiqueta para o seguinte:

"Line 1
Line 2
Line 3"

Esta fórmula dá como resultado tres liñas que aparecen no control de etiquetas:

Cadena de texto e control de etiquetas incorporados que mostran tres liñas con Liña 1, Liña 2 e Liña 3.

As novas liñas tamén son compatibles coa interpolación de cadeas:

$"Line {1}
Line {1+1}
Line {1+1+1}"

O que dá como resultado a mesma saída:

Fórmula de interpolación de cadeas e control de etiquetas que mostran tres liñas con Liña 1, Liña 2 e Liña 3.

Recursos de imaxe e multimedia

A través do menú Ficheiro, pode engadir ficheiros de imaxe, vídeo e audio como recursos de aplicación. O nome do ficheiro importado convértese no nome do recurso na aplicación. Neste gráfico, engadiuse á aplicación o logotipo de Northwind Traders, que se chama nwindlogo:

Recurso Northwind.

Para empregar este recurso nunha aplicación, especifíqueo na propiedade Imaxe dun control de Imaxe:

Imaxe do vento do norte.

URI de imaxes e outros soportes

Pode investigar un pouco máis neste último exemplo, definindo a propiedade Text dun control de Etiqueta en nwindlogo. A etiqueta mostra unha cadea de texto:

Texto Northwind.

As aplicacións de lenzo fan referencia a cada imaxe ou outro ficheiro multimedia, xa sexa na nube ou se engada como recurso de aplicación por parte dunha cadea de texto de URI.

Por exemplo, a propiedade Image dun control de imaxe non só acepta recursos da aplicacións, senón que tamén liga con imaxes da web, como "https://northwindtraders.com/logo.jpg". A propiedade tamén acepta imaxes en liña que usan o esquema da URI de datos como neste exemplo:

"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFAQMAAACtnVQoAAAABlBMVEUAAAB0J3UMNU6VAAAAAXRSTlMAQObYZgAAABRJREFUCNdjUGJgCGVg6GgAkkA2AA8/AffqCEBsAAAAAElFTkSuQmCC"

Esta URI mostra unha versión reducida de dous diamantes púrpura:

Dobres diamantes.

Pode amosar a imaxe máis recente capturada nun control de Cámara se establece a propiedade Imaxe dun control de imaxe á propiedade Foto do control da cámara. A aplicación garda a imaxe na memoria e a propiedade Foto do control da cámara devolve unha referencia URI á imaxe. Por exemplo, pode facer unha foto e a propiedade Foto da cámara podería devolver "appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1".

Empregue un URI para facer referencia a unha imaxe ou outro ficheiro multimedia almacenado nunha base de datos. Deste xeito, a aplicación non recupera os datos reais ata que é necesaria. Por exemplo, un anexo nunha táboa de Microsoft Dataverse pode devolver "appres://datasources/Contacts/table/...". Como no exemplo da cámara, pode amosar esta imaxe establecendo a propiedade Image dun control de imaxe nesta referencia, que recupera os datos binarios.

Cando garda un tipo de datos multimedia, como unha imaxe, nunha base de datos, a aplicación envía a imaxe real ou os datos multimedia, e non a referencia URI.

Límites de tamaño

Igual que cadeas de texto e URI, estes tipos de datos non teñen límite preestablecido na súa lonxitude.

Os datos binarios aos que se refiren estes tipos de datos tampouco teñen límite preestablecido de tamaño. Por exemplo, unha imaxe capturada a través do control da cámara que se fai referencia como "apres://..." pode ser tan grande e de alta resolución como a cámara do dispositivo pode reunir. A resolución, a velocidade de fotogramas e outros atributos dos ficheiros multimedia non están limitados polo tipo de datos, pero os controis específicos para reproducir e capturar ficheiros multimedia poden ter as súas propias limitacións.

Non obstante, todos os tamaños de datos están suxeitos á cantidade de memoria dispoñible na aplicación. Os navegadores que se executan nun computador de escritorio normalmente admiten máis de 100 megabytes de datos. Non obstante, a cantidade de memoria dispoñible dun dispositivo como un teléfono pode ser moi inferior, normalmente nun rango de 30-70 megabytes. Para determinar se a túa aplicación se executa dentro destes límites, proba escenarios comúns en todos os dispositivos nos que debería executarse.

Como práctica recomendada, conserve os datos na memoria só o tempo que sexa necesario. Cargue imaxes nunha base de datos o máis rápido posible; descargue imaxes só cando o usuario da aplicación as solicite.

Números

Nota

Power Apps só admite Float hoxe en día e é o tipo de todos os números. Pronto engadirase compatibilidade con Decimal .

Power Fx admite dous tipos de números: Decimal e Float (con sinónimos Número e Moeda).

O decimal é o mellor para a maioría dos cálculos empresariais. Pode representar con precisión números en base 10, o que significa que 0.1 pódese representar con exactitude e evitará erros de redondeo durante os cálculos. Ten un rango suficientemente grande para calquera necesidade empresarial, ata 1028 con ata 28 díxitos de precisión. Decimal é o tipo de datos numéricos predeterminado para a maioría dos Power Fx hosts, que se usa se simplemente se escribe 2*2.

Float é o mellor para os cálculos científicos. Pode representar números nun intervalo maior, ata 10308. A precisión está limitada a 15 decimais e as matemáticas baséanse na base 2, polo que non pode representar con precisión algúns valores decimais comúns. Float tamén ten un rendemento máis alto e é favorecido se iso é un factor e a precisión non é crítica.

Números decimais

O tipo de datos Decimal utiliza a maioría das veces o tipo de datos decimal .NET. Algúns hosts, como as columnas de fórmula de Dataverse que se executan en SQL Server, usan o tipo de datos decimais de SQL Server.

Decimal face as matemáticas como aprendeu na escola, utilizando cifras de base 10, importante para evitar erros de redondeo por diferenzas moi pequenas que se poden acumular ao usar as matemáticas de base 2 (como usa Flotador).

O rango é de 79,228,162,514,264,337,593,543,950,335 positivo a 79,228,162,514,264,337,593,543,950,335 negativo. O separador decimal pódese colocar en calquera lugar destes números, proporcionando ata 28 díxitos de precisión, e aínda así estar representado con precisión. Por exemplo, 79,228,162,514,264.337593543950335 pódese representar exactamente, igual que 7.9228162514264337593543950335.

Números de coma flotante

O tipo de datos Float , tamén coñecido como Número ou Moeda, utiliza o estándar de punto flotante de dobre precisión IEEE 754. Este estándar proporciona unha gama moi grande de números nos que traballar, desde –1.79769 x 10308 ata 1.79769 x 10308. O menor valor que se pode representar é 5 x 10–324.

Float pode representar exactamente números enteiros (ou enteiros) entre –9,007,199,254,740,991 (–(253 – 1)) e 9,007,199,254,740,991 (2 a63>53 – 1), inclusive. Este rango é superior aos tipos de datos enteiros de 32 bits (ou 4 bytes) que as bases de datos usan habitualmente. Non obstante, as aplicacións de lenzo non poden representar tipos de datos enteiros de 64 bits (ou 8 bytes). Quizais queiras almacenar o número nun campo de texto ou usar unha columna calculada para facer unha copia do número nun campo de texto, para que se asigne a datos de Texto escriba a aplicación de lenzo. Deste xeito, pode manter, amosar e introducir estes valores e comparalos para determinar se son iguais; con todo, non pode realizar cálculos numéricos sobre estes neste formulario.

A aritmética de punto flotante é aproximada, polo que ás veces pode dar resultados inesperados con moitos exemplos documentados. Pode esperar que a fórmula 55 / 100 * 100 devolva exactamente 55 e que (55 / 100 * 100) - 55 devolva exactamente cero. Non obstante, esta última fórmula devolve 7.1054 x 10–15, que é moi pequeno, pero non cero. Esta pequena diferenza normalmente non causa ningún problema e a aplicación arredóndaa cando amosa o resultado. Non obstante, pequenas diferenzas poden realizarse nos cálculos posteriores e parecer que ofrecen unha resposta incorrecta.

Os sistemas de bases de datos adoitan almacenar moedas e realizar cálculos mediante matemáticas decimais, o cal ofrece un rango máis pequeno pero un maior control sobre a precisión. De xeito predeterminado, as aplicacións de lenzo atribúen moedas dentro e fóra dos valores de punto flotante; polo tanto, o resultado pode variar dos cálculos que se fan nun tipo de datos decimal nativo. Dependendo das necesidades de precisión da túa aplicación, pode querer traballar con estes valores como Texto, como se describiu anteriormente para enteiros grandes.

Valores predeterminados e conversións

Nota

Power Apps só admite Float hoxe en día e é o tipo de todos os números. Pronto engadirase compatibilidade con Decimal .

A maioría dos Power Fx hosts usan Decimal de forma predeterminada. Ter este valor predeterminado significa:

  • Números literais en fórmulas. O número 1.234 interprétase como un valor decimal . Por exemplo, a fórmula 1.234 * 2 interpreta o 1.234 e 2 como Decimal e devolve a Resultado decimal.
  • Función de valor. Value( "1.234" ) devolve un valor decimal . Por exemplo, na fórmula Value( "1.234" ) * 2, a función Valor interpreta o contido da cadea de texto "1.234" como a Decimal.

Para traballar con valores Float , utilízase a función Float . Ampliando o noso exemplo, Float( 1.234 ) converte o Decimal1.234 en Float. Float tamén se pode usar como substituto de Valor para converter unha cadea que contén un número de coma flotante como Float( "1.234" ) a un valor flotante , que é necesario se o número non se pode representar como a Decimal.

En resumo:

Uso Decimal Flotar
Números literais en fórmulas 1.234 Float( 1.234 )
Float( "1.234" )
Conversión a partir dunha cadea de texto Value( "1.234" )
Decimal( "1.234" )
Float( "1.234" )
Conversión entre tipos numéricos Decimal( float ) Float( decimal )
Conversión a cadea de texto Text( decimal ) Text( float )

Mestura de tipos numéricos

Os valores flotantes e decimais pódense mesturar libremente. Cando se mesturan, os valores decimais convértense en valores flotantes debido ao intervalo máis amplo. Como esta conversión pode provocar unha perda de precisión, é importante non mesturar os dous innecesariamente. Dado que Decimal é o tipo de datos literal predeterminado e a maioría das funcións numéricas conservan o tipo, é relativamente fácil evitar moverse a Float sen desexalo.

Por exemplo, considere o seguinte cálculo mediante pac power-fx repl despois de instalar a Power Platform CLI. Dado que ambos os números son Decimal, o cálculo realízase en Decimal e o resultado mantén a precisión total:

>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002

Se, pola contra, se cambiase o segundo operando a Float , o cálculo completo farase en Float e perderíase unha pequena fracción:

>> 1.0000000000000000000000000001 * Float(2)
2

Data, hora e DataeHora

Fusos horarios

Os valores de data e hora inclúense nestas categorías:

  • Local do usuario: estes valores almacénanse en UTC (Tempo Universal Coordinado), pero a zona horaria do usuario da aplicación afecta a forma en que a aplicación mostra estes valores e como os especifica o usuario da aplicación. Como exemplo, o mesmo momento aparece de forma diferente a un usuario de Canadá que a un usuario de Xapón.
  • Independente da zona horaria: a aplicación mostra estes valores da mesma forma e o usuario da aplicación especifícaos da mesma forma, independentemente da zona horaria. O mesmo momento aparece da mesma maneira para un usuario de Canadá que para un usuario de Xapón. Os autores das aplicacións que non esperan que as súas aplicacións funcionen en zonas horarias diferentes usan estes valores porque son máis sinxelos.

Esta táboa mostra algúns exemplos:

Tipo de data/hora Valor almacenado na base de datos Valor mostrado e inserido 7 horas ao oeste do UTC Valor mostrado e inserido 4 horas ao leste do UTC
Usuario local Domingo,Maio19,2019
4:00 a.m.
Sábado 18 demaio,2019
9:00 p.m.
Domingo,Maio19,2019
8:00 a.m.
Independente da zona horaria Domingo,Maio19,2019
4:00 a.m.
Domingo,Maio19,2019
4:00 a.m.
Domingo,Maio19,2019
4:00 a.m.

Para a data/horas da Hora local do usuario, as aplicacións de lenzo usan a zona horaria do navegador ou o dispositivo, pero as aplicacións baseadas en modelos utilizan a configuración do usuario en Dataverse. Estes axustes normalmente coinciden, pero os resultados difiren se estes axustes difiren.

Use as funcións DateAdd e TimeZoneInformation para converter a hora local en UTC e viceversa. Consulte os exemplos ao final da documentación para estas funcións.

Equivalentes numéricos

As aplicacións de lenzo manteñen e calculan todos os valores de data e hora, Hora local do usuario ou Fuso horario independente en UTC. A aplicación traduce os valores en función da zona horaria do usuario da aplicación cando os amosa e cando o usuario da aplicación os especifica.

Cando unha aplicación de lenzo le un valor de Fuso horario independente dunha orixe de datos ou escribe ese valor nunha orixe de datos, a aplicación axusta automaticamente o valor para compensar o fuso horario do usuario da aplicación. A aplicación trata entón o valor como un valor UTC, de acordo con todos os demais valores de data/hora da aplicación. Por mor desta compensación, o valor do Fuso horario independente orixinal aparece cando a aplicación axusta o valor UTC para a zona horaria do usuario da aplicación.

Pode observar este comportamento máis de preto empregando a función Value para acceder ao valor numérico subxacente para un valor de data/hora. Esta función devolve o valor da data/hora como número de milisegundos desde o 1 de xaneiro, 1970 00:00:00.000 UTC.

Debido a que cada valor da data/hora mantense en UTC, a fórmula Value( Date( 1970, 1, 1 ) ) non volverá cero na maioría das partes do mundo porque a función Data devolve unha data en UTC. Por exemplo, a fórmula devolvería 28,800,000 nunha zona horaria compensada desde UTC en oito horas. Ese número reflicte o número de milisegundos en oito horas.

Volvendo ao noso exemplo:

Tipo de data/hora Valor almacenado na base de datos Valor mostrado e inserido 7 horas ao oeste do UTC Valor devolve a función
Usuario local Domingo,Maio19,2019
4:00 a.m.
Sábado 18 demaio,2019
9:00 p.m.
1,558,238,400,000
(Domingo,Maio19,2019
4:00 AM UTC)
Independente da zona horaria Domingo,Maio19,2019
4:00 a.m.
Domingo,Maio19,2019
4:00 a.m.
1,558,263,600,000
(Domingo,Maio19,2019
11:00 AM UTC)

Converter tempos Unix

Os tempos Unix reflicten o número de segundos desde o 1 de xaneiro, 1970 00:00:00 UTC. Debido a que as aplicacións de lenzo usan milisegundos en vez de segundos, pode facer a conversión entre ambas multiplicando ou dividindo por 1.000.

Por exemplo, o tempo Unix mostra o 9 de setembro do 2001 ás 01:46:40 UTC como 1,000,000,000. Para amosar ese valor de data/hora nunha aplicación de lenzo, multiplique ese número por 1.000 para convertelo en milisegundos e logo utilíceo nunha función de Text. A fórmula Text( 1000000000 * 1000, DateTimeFormat.UTC ) devolve a cadea 2001-09-09T01:46:40.000Z.

Non obstante, esa función devolve Sábado, 8 de setembro, 2001 18:46:40 se usa o formato DateTimeFormat.LongDateTime24 nunha zona horaria cunha compensación de -7 horas respecto ao horario UTC (7 horas ao oeste de UTC). Este resultado mostra o valor DataTime correctamente en función da zona horaria local.

Para converter a unha hora Unix, divida o resultado do Valor entre 1.000:
RoundDown(Valor(UnixTime) / 1000, 0)

Se precisa a hora Unix nun valor Data para facer máis cálculos ou mostrar dentro de Power Apps, use esta fórmula:
DataAdd(Data (1970,1,1), UnixTime, Segundos)

SQL Server

SQL Server ten DataHora, Datahora2e outros tipos de datos de data/hora que non inclúen unha compensación de zona horaria e non indican en que zona horaria están. As aplicacións de lenzo asumen que estes valores están almacenados en UTC e trátaos como Hora local do usuario. Se os valores son independentes do fuso horario, corrixa para as traducións UTC usando TimeZoneOffset.

As aplicacións de lenzo utilizan a información do fuso horario incluída nos campos Datetimeoffset ao converter un valor na representación de UTC interna da aplicación. As aplicacións sempre usan UTC como fuso horario (compensación cero de zona horaria) cando escriben datos.

As aplicacións de lenzo len e escriben valores do tipo de datos Hora en SQL Server como cadeas de texto no Formato de duración ISO 8601. Por exemplo, ten que analizar este formato de cadea e usar a función Time para converter a cadea de texto "PT2H1M39S" nun valor de Hora:

With(
    Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
    Time( Value( hours ), Value( minutes ), Value( seconds ) )
)
// Result: 2:01 AM (as shown in a label control, use the Text function to see the seconds)

Información de data e hora mesturada

Data, Hora e DataHora teñen nomes diferentes, pero todos teñen o mesma información sobre datas e horas.

O valor de Data pode incluír información de hora con el, que normalmente corresponde á medianoite. O valor Hora pode levar información da data, que normalmente corresponde ao 1 de xaneiro de 1970. Dataverse tamén almacena información da hora cun campo Só data pero só mostra por defecto a información de data. De xeito parecido, as aplicacións de lenzo ás veces distinguen entre estes tipos de datos para determinar formatos e controis predeterminados.

Non se recomenda engadir e restar valores de data e hora directamente porque o fuso horario e outras conversións poden provocar resultados confusos. Use a función Valor para converter os valores de data/hora en milisegundos primeiro e teña en conta a zona horaria do usuario da aplicación ou empregue as funcións DateAdd e DateDiff para sumar ou restar a un destes valores.

Eleccións e Si/Non

Os tipos de datos de opcións e dúas opcións ofrecen dúas ou máis opcións para que un usuario da aplicación seleccione. Por exemplo, unha elección Estado do pedido pode ofrecer as eleccións Novo, Enviado, Facturado e Pechado. O tipo de datos de dúas opcións só ofrece dúas opcións.

Ambos os tipos de datos mostran as súas etiquetas como texto. Por exemplo, un control de etiqueta mostra unha das opcións de estado do pedido se a propiedade Text do control se establece nunha fórmula que fai referencia a esa elección. As etiquetas de opcións pódense localizar para os usuarios da aplicación en diferentes lugares.

Cando un usuario da aplicación selecciona unha opción e garda o cambio, a aplicación envía os datos á base de datos, que os almacena dun xeito independente do idioma. Unha opción nunha opción envíase e almacénase como un número, e unha opción nun tipo de datos de dúas opcións envíase e almacénase como un valor booleano.

As etiquetas son só para exhibición. Non podes comparar as etiquetas directamente porque son específicas para un idioma. Pola contra, cada elección ten unha enumeración que funciona co valor booleano ou número subxacente. Por exemplo, non pode usar esta fórmula:

If( ThisItem.OrderStatus = "Active", ...

Pero pode usar esta fórmula:

If( ThisItem.OrderStatus = OrderStatus.Active, ...

Para as eleccións globais (que comparten as táboas), o nome da enumeración do conxunto de opcións coincide co nome da elección global. Para as opcións locais (que están limitadas a unha táboa), o nome pode incluír o nome da táboa. Este comportamento evita conflitos se varias táboas teñen opcións co mesmo nome. Por exemplo, a táboa Contas pode ter unha elección Estado do pedido e o seu nome podería ser Estado do pedido (contas). Ese nome ten espazos e parénteses, polo que debes rodealo con comiñas simples se o fas referencia nunha fórmula.

Os valores de dúas opcións tamén se comportan como valores booleanos. Por exemplo, un valor de dúas opcións chamado TaxStatus podería ter as etiquetas Taxable e Non-Taxable, que corresponden a true e false. Para demostrar isto, usa esta fórmula:

If( ThisItem.Taxable = TaxStatus.Taxable, ...

Tamén podes usar esta fórmula:

If( ThisItem.Taxable, ...