Visão geral do Microsoft Power Fx

Power Fx é a linguagem de baixo código que Microsoft Power Platform usa. É uma linguagem de programação funcional, de uso geral, fortemente tipada, declarativa e funcional.

Power Fx é expresso em texto de fácil leitura. É uma linguagem de pouco código com a qual os criadores podem trabalhar diretamente em uma barra de fórmulas semelhante ao Excel ou uma janela de texto do Visual Studio Code. O "baixo" em baixo código vem da natureza concisa e simples da linguagem, o que facilita tarefas comuns de programação para criadores e desenvolvedores. Ele permite todo o espectro de desenvolvimento sem código para aqueles que nunca programaram antes para "pró-código" para o profissional experiente, sem aprender ou reescrever falésias no meio. Diversas equipes podem colaborar e economizar tempo e despesas.

Nota

  • Microsoft Power Fx é o novo nome da linguagem de fórmula para aplicativos de tela no Power Apps. Essa visão geral e os artigos associados são um trabalho em andamento, pois Microsoft extrai o idioma de aplicativos de tela, integra-o a outros produtos Microsoft Power Platform e o disponibiliza como código aberto. Para aprender mais sobre e experimentar a linguagem hoje mesmo, comece com Introdução às fórmulas em aplicativos de tela na documentação do Power Apps e inscreva-se na Avaliação gratuita do Power Apps.
  • Neste artigo, os criadores referem-se aos usuários que podem usar um recurso em ambas as extremidades do espectro de habilidades de programação. Os desenvolvedores se referem aos usuários quando o recurso é mais avançado e provavelmente está além do escopo de um usuário Excel típico.

O Power Fx vincula objetos com fórmulas declarativas semelhantes a planilhas. Por exemplo, pense na propriedade Visível de um controle da interface do usuário como uma célula em uma planilha do Excel, com uma fórmula associada que calcula seu valor com base nas propriedades de outros controles. A lógica da fórmula recalcula o valor automaticamente, semelhante ao que acontece em uma planilha, o que afeta a visibilidade do controle.

Além disso, o Power Fx oferece lógica imperativa quando necessário. As planilhas normalmente não têm botões que podem enviar alterações a um banco de dados, mas os aplicativos costumam ter. A mesma linguagem de expressão é usada para lógica declarativa e imperativa.

Microsoft disponibilizará o Power Fx como software de software de software livre. Atualmente, ele está integrado a aplicativos de tela e Microsoft está no processo de extraí-lo de Power Apps para uso em outros produtos Microsoft Power Platform e como código aberto. Mais informações: Microsoft Power Fx no GitHub

Este artigo é uma visão geral da linguagem e seus princípios de design. Para saber mais sobre o Power Fx, consulte os seguintes artigos:

Pense na planilha

E se você pudesse criar um aplicativo com a mesma facilidade com que cria uma planilha no Excel?

E se você pudesse tirar proveito de seu conhecimento existente sobre planilhas?

Essas perguntas inspiraram a criação do Power Apps e do Power Fx. Centenas de milhões de pessoas criam planilhas com Excel todos os dias. Vamos trazer a criação de aplicativos que é fácil e usa Excel conceitos que eles já conhecem. Ao separar o Power Fx do Power Apps, responderemos a essas perguntas para a criação de automação, agente virtual ou outros domínios.

Todas as linguagens de programação, incluindo o Power Fx, têm expressões: uma maneira de representar um cálculo sobre números, strings ou outros tipos de dados. Por exemplo, mass * acceleration na maioria das linguagens expressa a multiplicação de mass e acceleration. Você pode colocar o resultado de uma expressão em uma variável, usá-la como argumento em um procedimento ou aninhar-a em uma expressão maior.

O Power Fx leva isso além. Uma expressão por si só não diz nada sobre o que está calculando. Cabe ao criador colocá-lo em uma variável ou passá-lo para uma função. No Power Fx, em vez de escrever apenas uma expressão sem significado específico, você escreve uma fórmula que liga a expressão a um identificador. Você escreve force = mass * acceleration como uma fórmula para calcular force. Como mass ou acceleration alterações, force atualiza automaticamente para um novo valor. A expressão descreveu um cálculo, uma fórmula deu um nome a esse cálculo e usou-o como uma receita. É por isso que nos referimos ao Power Fx como uma linguagem de fórmulas.

Por exemplo, esta fórmula do Stack Overflow pesquisa uma cadeia de caracteres na ordem inversa. No Excel, é semelhante à imagem a seguir.

Pesquisa reversa

Captura de tela de uma barra de fórmulas no Excel com a fórmula: =RIGHT(A1,LEN(A1)- FIND("|", SUBSTITUTE(A1," ","|", LEN(A1)-LEN(SUBSTITUTE(A1," ","")))) A célula A1 contém o texto "Hello, World! É um prazer conhecê-lo!" A célula A2 contém o texto "você!"

O Power Fx funciona com esta mesma fórmula, com as referências de célula substituídas por referências de propriedade de controle:

Pesquisa reversa do Power Fx.

Captura de tela de uma barra de fórmulas do Power Fx no Power Apps. A fórmula é =RIGHT(Input.Text,Len(Input.Text)- FIND("|", SUBSTITUTE(Input.Text," ","|", Len(Input.Text)-Len(Substitute(Input.Text," ","")))) Na caixa de entrada abaixo da fórmula, o texto "Hello, World! É um prazer conhecê-lo!" aparece, letra por letra. Ao mesmo tempo, na caixa Rótulo, aparecem as letras da última palavra. Quando o texto completo aparece na caixa de entrada, a palavra "você!" aparece na caixa de Rótulo.

À medida que o valor do Input controle é alterado, o Label controle recalcula automaticamente a fórmula e mostra o novo valor. Não há manipuladores de evento OnChange aqui, como seria comum em outras linguagens.

Outro exemplo usa uma fórmula para a Fill cor da tela. À medida que os controles deslizantes que controlam Vermelho, Verde e Azul são alterados, a cor da tela de fundo é alterada automaticamente à medida que está sendo recalculada.

Controle deslizante da cor.

Não há eventos OnChange para os controles deslizantes como seria comum em outras linguagens. Não há como definir explicitamente o valor da propriedade Fill. Se a cor não está funcionando como esperado, você precisa olhar para essa fórmula para entender por que ela não está funcionando. Você não precisa pesquisar no aplicativo para encontrar um trecho de código que defina a propriedade em um momento inesperado; não há elemento de tempo. Os valores corretos da fórmula são sempre mantidos.

Como os controles deslizantes são definidos como uma cor escura, os rótulos de Vermelho, Verde e Azul mudam para branco para compensar. Essa alteração ocorre por meio de uma fórmula simples na Color propriedade para cada controle de rótulo.

Controles deslizantes coloridos do Power Fx.

O que é ótimo nessa fórmula é que ela está isolada do que está acontecendo para a Fill cor: são dois cálculos totalmente diferentes. Em vez de grandes procedimentos monolíticos, a lógica do Power Fx é geralmente composto de várias fórmulas menores independentes. Essa estrutura os torna mais fáceis de entender e permite aprimoramentos sem perturbar a lógica existente.

O Power Fx é uma linguagem declarativa, assim como o Excel. O criador define o comportamento que deseja, mas cabe ao sistema determinar e otimizar como e quando realizá-lo. Para tornar isso prático, a maior parte do trabalho é feita por meio de funções puras sem efeitos colaterais, tornando o Power Fx também uma linguagem funcional (novamente, assim como o Excel).

Sempre ativas

Um aspecto que define as planilhas é que elas estão sempre ativas e as alterações são refletidas instantaneamente. Não há nenhum modo de compilação ou execução em uma planilha. Quando você modifica uma fórmula ou insere um valor, a planilha recalcula imediatamente para refletir as alterações. Todos os erros detectados aparecem imediatamente e não interferem no restante da planilha.

O Power Fx implementa a mesma coisa. Ele usa um compilador incremental para manter continuamente o programa em sincronia com os dados em que está operando. As alterações são propagadas automaticamente por meio do grafo do programa, afetando os resultados de cálculos dependentes. Esses cálculos podem gerar propriedades em controles como cor ou posição. O compilador incremental também fornece uma rica experiência de edição de fórmula com IntelliSense, sugestões, preenchimento automático e verificação de tipo.

Na animação a seguir, o número da ordem é exibido em um controle de rótulo dependente do controle deslizante, embora haja dois erros nos rótulos abaixo dele. O aplicativo é muito dinâmico e interativo. A primeira tentativa de corrigir a fórmula inserindo .InvalidName resulta em uma linha vermelha imediata e um erro é exibido, como deveria, mas o aplicativo continua em execução.

Sempre ativas.

Quando você entra .Employee, o Data painel adiciona a tabela Funcionários, recupera metadados para esta tabela e imediatamente oferece sugestões para colunas. Você acabou de percorrer uma relação de uma tabela para outra e o sistema fez os ajustes necessários nas referências do aplicativo. A mesma coisa acontece ao adicionar um .Customer.

Após cada alteração, o controle deslizante continua com seu último valor e todas as variáveis retêm seu valor. Durante todo o tempo, o número da ordem continua a ser exibido no rótulo superior como deveria. O aplicativo está ativo, processando dados reais o tempo todo. Você pode salvá-lo, ir embora e outros podem abri-lo e usá-lo como Excel. Não há nenhuma etapa de build, nenhuma compilação, há apenas uma etapa de publicação para determinar qual versão do aplicativo está pronta para os usuários.

Pouco código

O Power Fx descreve a lógica de negócios em fórmulas concisas, porém poderosas. A maior parte da lógica reduz a uma única linha, com muita expressividade e controle para necessidades mais complexas. O objetivo é reduzir ao mínimo o número de conceitos que um criador precisa entender, de preferência, não mais que um usuário do Excel já saberia.

Por exemplo, para procurar o nome de um funcionário para um pedido, você escreve o Power Fx como mostrado na animação a seguir. Além dos conceitos do Excel, o único conceito adicionado usado aqui é a notação de ponto "." para fazer drill em uma estrutura de dados, neste caso, .Employee.'First Name'. A animação mostra o mapeamento entre as partes da fórmula do Power Fx e os conceitos que precisam ser explicitamente codificados no JavaScript equivalente.

JavaScript com pouco código.

Vamos olhar mais detalhadamente para todas as coisas que o Power Fx faz por nós e a liberdade que ele tem de otimizar porque a fórmula é declarativa:

  • Assíncrono : Todas as operações de dados em Power Fx são assíncronos. O criador não precisa especificar isso, nem precisa sincronizar as operações após o término da chamada. O criador não precisa estar ciente desse conceito, nem precisa saber o que é uma promessa ou função lambda.

  • Local e remoto : Power Fx usa a mesma sintaxe e funções para dados locais na memória e conecta remotamente um banco de dados ou serviço. O usuário não precisa pensar sobre essa distinção. O Power Fx delega automaticamente o que pode para o servidor a fim de processar filtros e classificações com mais eficiência.

  • Dados relacionais : Pedidos e Clientes são duas tabelas diferentes, com um relacionamento muitos para um. A consulta OData requer um "$expand" com conhecimento da chave estrangeira, semelhante a um Join em SQL. A fórmula não tem nada disso; na verdade, as chaves do banco de dados são outro conceito que o criador não precisa saber. O criador pode usar a notação de ponto simples para acessar todo o gráfico de relacionamentos de um registro.

  • Projeção :Ao escrever uma consulta, muitos desenvolvedores escrevem select * from table, que traz de volta todas as colunas de dados. O Power Fx analisa todas as colunas usadas em todo o aplicativo, mesmo nas dependências da fórmula. A projeção é otimizada automaticamente e, novamente, um fabricante não precisa saber o que "projeção" significa.

  • Recupere apenas o que é necessário : Neste exemplo, o LookUp A função implica que apenas um registro deve ser recuperado e isso é tudo o que é retornado. Se mais registros forem solicitados usando a função Filter, para a qual milhares de registros podem se qualificar, apenas uma única página de dados é retornada por vez, na ordem de 100 registros por página. O usuário deve fazer gestos por meio de uma galeria ou tabela de dados para ver mais dados e ele traz automaticamente mais dados para eles. O fabricante pode raciocinar sobre grandes conjuntos de dados sem precisar pensar em limitar as solicitações de dados a blocos gerenciáveis.

  • É executado somente quando necessário: você define uma fórmula para a Text propriedade do controle de rótulo. Conforme a variável selecionada muda, LookUp é automaticamente recalculado e o rótulo é atualizado. O criador não precisou escrever um manipulador OnChange para Seleção e não precisou se lembrar de que esse rótulo depende dele. Essa é a programação declarativa, conforme discutido anteriormente; o criador especificou o que desejava no rótulo, não como ou quando deveria ser obtido. Se esse rótulo não estiver visível porque ele estiver em uma tela que não esteja visível ou sua Visible propriedade for falsa, você poderá adiar esse cálculo até que o rótulo fique visível e elimine-o efetivamente se isso raramente acontecer.

  • Excel tradução de sintaxe: muitos usuários sabem que a es&s (&) é usada para concatenação de cadeia de caracteres em Excel. O JavaScript usa um sinal de mais (+) e outras linguagens usam um ponto (.).

  • Nomes de exibição e localização : First Name é usado no Power Fx fórmula enquanto nwind_firstname é usado no equivalente em JavaScript. No Microsoft Dataverse e SharePoint, há um nome de exibição para colunas e tabelas, além de um nome lógico exclusivo. Os nomes de exibição costumam ser muito mais amigáveis ao usuário, como neste caso, mas têm outra qualidade importante: podem ser localizados. Se você tiver uma equipe multilíngue, cada membro da equipe poderá ver os nomes das tabelas e campos em seu próprio idioma. Em todos os casos de uso, o Power Fx garante que o nome lógico correto seja enviado ao banco de dados automaticamente.

Nenhum código

Você não precisa ler ou gravar o Power Fx para começar a expressar a lógica. Você pode expressar muitas personalizações e lógica por meio de comutadores simples e construtores de interface do usuário. Essas ferramentas sem código são criadas para ler e gravar o Power Fx, portanto, há muito espaço para alguém ir mais longe. No entanto, as ferramentas sem código nunca oferecem toda a expressividade do idioma completo. Mesmo quando você usa construtores sem código, a barra de fórmulas está na frente e no centro em Power Apps para instruir o fabricante sobre o que está sendo feito em seu nome para que eles possam começar a aprender o Power Fx.

Vamos examinar alguns exemplos. No Power Apps, o painel de propriedades fornece opções e botões sem código para as propriedades dos controles. Na prática, a maioria dos valores de propriedade é estática. Você pode usar o criador de cores para alterar a cor de fundo da Gallery. Observe que a barra de fórmulas reflete essa mudança, atualizando a fórmula para uma chamada a RGBA diferente. A qualquer momento, você pode ir até a barra de fórmulas e levar essa alteração mais adiante - neste exemplo, usando ColorFade para ajustar a cor. A propriedade de cor ainda aparece no painel de propriedades, mas um ícone fx aparece ao passar o mouse e você é direcionado para a barra de fórmulas. Isso funciona totalmente de duas maneiras: remover a chamada a ColorFade retorna a cor para algo que o painel de propriedades pode entender e você poderá usá-lo novamente para definir uma cor.

Cor sem código.

Veja um exemplo mais complicado. A galeria mostra uma lista de funcionários do Dataverse. O Dataverse fornece exibições sobre os dados da tabela. Você pode selecionar uma dessas exibições e as alterações de fórmula para usar a Filter função com esse nome de exibição. Você pode usar os dois menus suspensos para discar na tabela e exibição corretas sem tocar na barra de fórmulas. Mas digamos que você queira ir além e adicionar uma classificação. Você pode adicionar essa função na barra de fórmulas e o painel de propriedades mostra novamente um ícone fx e direciona modificações para a barra de fórmulas. E, novamente, se você simplificar a fórmula para algo que o painel de propriedades pode ler e gravar, ela poderá ser usada.

Classificação sem código.

Esses exemplos são simples. O Power Fx faz uma ótima linguagem para descrever interações sem código. É conciso, poderoso e fácil de analisar. Ele fornece o espaço para a cabeça que é muitas vezes necessário com "sem falésias" até o baixo código.

Código profissional

Às vezes, os fabricantes de baixo código criam soluções que exigem a ajuda de um especialista ou são assumidas por um desenvolvedor profissional para manter e aprimorar. Os profissionais também apreciam que o desenvolvimento que requer pouco código pode ser mais fácil, rápido e menos custoso que criar uma ferramenta profissional. Nem toda situação requer todo o poder do Visual Studio.

Os profissionais desejam usar ferramentas profissionais para serem mais produtivos. Você pode armazenar fórmulas do Power Fx em arquivos de origem YAML, que são fáceis de editar usando Visual Studio Code, Visual Studio ou qualquer outro editor de texto. Armazenar fórmulas em arquivos YAML permite que você coloque o Power Fx sob controle do código-fonte usando GitHub, Azure DevOps ou qualquer outro sistema de controle de código-fonte.

Código profissional do Visual Studio Code

Código profissional GitHub.

O Power Fx suporta componentes baseados em fórmulas para compartilhamento e reutilização. Ele dá suporte a parâmetros para propriedades de componente, permitindo a criação de funções puras definidas pelo usuário com mais aprimoramentos no caminho.

Além disso, o Power Fx é ótimo para unir componentes e serviços criados por profissionais. Conectores prontos para uso fornecem acesso a centenas de fontes de dados e serviços Web. Conectores personalizados permitem que o Power Fx fale com qualquer serviço Web REST. Os componentes de código permitem que o Power Fx interaja com JavaScript totalmente personalizado na tela e na página.

Princípios de design

Simples

O Power Fx foi projetado para atingir o público-alvo do criador, cujos membros não são treinados como desenvolvedores. Sempre que possível, a linguagem usa o conhecimento que esse público já conhece ou pode captar rapidamente. O número de conceitos necessários para ter sucesso é mínimo.

Ser simples também é bom para os desenvolvedores. Para o público-alvo do desenvolvedor, o Power Fx pretende ser uma linguagem de baixo código que reduz o tempo necessário para criar uma solução.

Consistência do Excel

A linguagem Microsoft Power Fx pega muita coisa emprestada da linguagem de fórmulas do Excel. Ele aproveita Excel conhecimento e experiência dos muitos criadores que também usam Excel. Tipos, operadores e semânticas de função são o mais próximo possível do Excel.

Se Excel não tiver uma resposta, o Power Fx examinará o SQL em seguida. Depois do Excel, o SQL é a próxima linguagem declarativa mais comumente usada e pode fornecer orientação sobre operações de dados e tipagem forte que o Excel não oferece.

Declarativo

O criador descreve o que eles querem que sua lógica faça, não exatamente como ou quando para fazer isso. Essa abordagem permite que o compilador otimize executando operações em paralelo, adiando o trabalho até que seja necessário e pré-buscando e reutilizando dados armazenados em cache.

Por exemplo, em uma planilha Excel, o autor define as relações entre as células, mas Excel decide quando e em que ordem avaliar fórmulas. Da mesma forma, você pode pensar em fórmulas em um aplicativo como "recalc-ing" conforme necessário com base em ações do usuário, alterações de banco de dados ou eventos de temporizador.

Funcional

Use funções puras que não têm efeitos colaterais. Essa abordagem resulta em uma lógica mais fácil de entender e dá ao compilador mais liberdade para otimizar.

Ao contrário de Excel, os aplicativos por sua natureza sofrem mutação de estado. Por exemplo, os aplicativos têm botões que salvam alterações no registro em um banco de dados. Algumas funções, portanto, têm efeitos colaterais, embora limitem esses efeitos colaterais tanto quanto prático.

Composição

Sempre que possível, adicione a funcionalidade que compõe bem com a funcionalidade existente. Você pode decompor funções poderosas em partes menores que você pode usar com mais facilidade de forma independente.

Por exemplo, um controle Galeria não tem propriedades Sort e Filter separadas. Em vez disso, você compõe as funções e Filter as Sort funções em uma única Items propriedade. Você colocará a interface do usuário em camadas para expressar Sort e Filter comportamento na parte superior da Items propriedade usando um editor bidirecional para essa propriedade.

Com tipo forte

Os tipos de todos os valores são conhecidos em tempo de compilação. Essa abordagem permite a detecção antecipada de erros e sugestões avançadas durante a criação.

Há suporte para tipos polimórficos, mas antes de usá-los, você deve fixar seu tipo em um tipo estático e esse tipo deve ser conhecido no momento da compilação. As funções IsType e AsType são fornecidas para tipos de teste e elenco.

Inferência de tipo

Os tipos são derivados de seu uso sem serem declarados. Por exemplo, definir uma variável como um número resulta no tipo da variável sendo estabelecido como um número.

O uso de tipo conflitante resulta em um erro de tempo de compilação.

Separadores decimais que diferenciam o local

Algumas regiões do mundo usam um ponto (.) como um separador decimal enquanto outros usam uma vírgula (,). Excel segue esta convenção regional. Outras linguagens de programação geralmente usam um ponto canônico (.) como separador decimal para todos os usuários em todo o mundo. Para ser o mais acessível possível para os criadores em todos os níveis, é importante que 3,14 seja um número decimal para uma pessoa na França que tenha usado essa sintaxe durante toda a vida.

A escolha do separador decimal tem um impacto em cascata no separador de lista, usado para argumentos de chamada de função e no operador de encadeamento.

Separador decimal do idioma do autor Separador decimal do Power Fx Separador de lista do Power Fx Operador de encadeamento do Power Fx
. (ponto) . (ponto) , (vírgula) ; (ponto e vírgula)
, (vírgula) , (vírgula) ; (ponto e vírgula) ;; (ponto e vírgula duplo)

Mais Informações: Suporte global

Não orientado a objetos

O Excel não é baseado em objetos, nem o Power Fx. Por exemplo, em algumas linguagens, o comprimento de uma cadeia de caracteres é expresso como uma propriedade da cadeia de caracteres, como "Olá, Mundo".length no JavaScript. Em vez disso, o Excel e Power Fx expressam isso em termos de uma função como Len( "Olá, Mundo" ).

Os componentes com propriedades e métodos são baseados em objetos e o Power Fx trabalha facilmente com eles. Mas sempre que possível, prefira uma abordagem funcional.

Extensível

Os fabricantes podem criar seus componentes e funções usando o Power Fx em si. Os desenvolvedores podem criar seus componentes e funções escrevendo JavaScript.

Fácil para o desenvolvedor

Embora os criadores sejam o principal destino, tente ser amigável para desenvolvedores sempre que possível. Se ele não entrar em conflito com os princípios de design descritos anteriormente, faça as coisas de uma maneira que um desenvolvedor aprecie. Por exemplo, Excel não tem capacidade para adicionar comentários, portanto, use comentários embutidos e de linha C.

Evolução da linguagem

A evolução das linguagens de programação é necessária e complicada. Todos, legitimamente, estão preocupados com o fato de que uma mudança, não importa o quão bem-intencionada seja, pode interromper o código existente e exigir que os usuários aprendam um novo padrão. O Power Fx leva a sério a compatibilidade com versões anteriores, mas a equipe do Power Fx também acredita fortemente que nem sempre acertará na primeira vez e que a comunidade pode aprender coletivamente o que é melhor. Uma linguagem de programação deve evoluir e o Power Fx foi projetado para dar suporte à evolução da linguagem desde o início.

Cada documento salvo do Power Fx inclui um carimbo de versão de idioma. Se a equipe do Power Fx quiser fazer uma alteração incompatível, ela escreverá o que chama de "conversor de compatibilidade de volta" que reescreve automaticamente a fórmula na próxima vez que for editada. Se a alteração for algo importante sobre o qual a equipe precisa instruir o usuário, o aplicativo exibirá uma mensagem com um link para os documentos. Usando essa instalação, o Power Fx ainda pode carregar aplicativos que foram criados com as versões prévias do Power Apps de muitos anos atrás, apesar de todas as alterações que ocorreram desde então.

Por exemplo, a equipe do Power Fx introduziu a ShowError função para exibir uma faixa de erro com um plano de fundo vermelho.

Mostrar erro.

Os usuários adoraram, mas também pediram uma maneira de mostrar uma faixa de sucesso (fundo verde) ou uma faixa informativa (fundo azul). Portanto, a equipe criou uma função mais genérica Notify que usa um segundo argumento para o tipo de notificação. A equipe poderia ter acabado de adicionar Notify e mantido ShowError do jeito que estava, mas em vez disso eles substituíram ShowErrorNotifypor . Eles removeram uma função que estava anteriormente em produção e a substituíram por outra coisa. Como haveria duas maneiras de fazer a mesma coisa, essa alteração teria causado confusão , especialmente para novos usuários, e, o mais importante, teria adicionado complexidade. Ninguém reclamou, todos gostaram da mudança e passaram para o próximo recurso Notify.

Esta é a aparência do mesmo aplicativo quando carregado na versão mais recente do Power Apps. Nenhuma ação foi exigida do usuário para fazer essa transformação acontecer, ela ocorreu automaticamente quando o aplicativo foi aberto.

A função Notify substitui ShowError.

Usando essa instalação, o Power Fx pode evoluir de forma mais rápida e agressiva do que a maioria das linguagens de programação.

Sem valor indefinido

Algumas linguagens, como o JavaScript, usam o conceito de um valor indefinido para variáveis não inicializadas ou propriedades ausentes. Para simplificar, o Power Fx evita esse conceito. As instâncias que seriam indefinidas em outras linguagens são tratadas como um erro ou um valor em branco. Por exemplo, todas as variáveis não inicializadas começam com um valor em branco. Todos os tipos de dados podem assumir o valor de branco.

Tipos de dados
Operadores e identificadores
Tabelas
Variáveis
Lógica imperativa
Suporte global
Gramática de expressão
Gramática de fórmula YAML
Fórmulas em aplicativos de tela