Filtrar colunas de opção do Dataverse com fórmulas do Power Fx

Concluído 100 XP

Quando você tem uma tabela do Dataverse com coluna de opção, geralmente deseja filtrar os dados usando a coluna de opção. Os cenários de filtragem mais comuns são:

  • Filtrar as linhas de tabela para exibição em uma galeria.

  • Ter um menu suspenso ou controle de caixa de combinação com a lista de valores de escolha e deixar o usuário selecionar um ou mais. Em seguida, você pode usar os valores selecionados para filtrar as linhas da tabela mostradas na galeria.

Por exemplo, se tiver um campo de opção Category na tabela Accounts, você poderá usar a seguinte lógica para filtrar somente os clientes preferenciais:

Filter(
  Accounts,
  Category = 'Category (Accounts)'.'Preferred Customer'
)

Certifique-se de usar a cadeia de caracteres table.column completa, e não apenas a cadeia de caracteres de coluna, "Preferred Customer" (como a imagem abaixo), pois trata-se de uma comparação inválida. Caso esqueça de adicionar a tabela à cadeia de caracteres, você verá o erro "Tipos incompatíveis para comparação". Como "Category (Accounts)" é uma tabela (ou um conjunto de opções), você não pode comparar o valor da tabela com um valor de texto. Portanto, você precisa usar a referência totalmente qualificada: 'Category (Accounts)'.'Preferred Customer' (também exibida como [@Category].'Preferred Customer').

Frequentemente, você desejará usar um menu suspenso ou uma caixa de combinação para filtrar uma galeria para que os usuários possam determinar as categorias de itens a serem exibidos. No exemplo a seguir, você usará uma caixa de combinação para permitir que os usuários façam várias seleções de categorias de contas para mostrar na galeria.

Primeiro, você adiciona uma caixa de combinação à tela e, em seguida, define a propriedade Items usando a função Choices.

A função Choices() prepara uma lista de valores para seu usuário selecionar usando os metadados para a coluna de opção Accounts.Category.

Em seguida, você modificará a fórmula Items para que a galeria a inclua usando a propriedade SelectedItems de caixa de combinação.

Filter(Accounts, Category in ComboBoxCategory.SelectedItems)

O uso do operador in permite que a fórmula filtre qualquer uma das categorias selecionadas.

Essa fórmula só mostrará linhas na galeria quando pelo menos uma categoria for selecionada. Se desejar mostrar todas as linhas quando nenhuma categoria estiver selecionada, você poderá adicionar uma verificação isEmpty à fórmula.

Filter(
  Accounts, Category in ComboBoxCategory.SelectedItems
  || IsEmpty(ComboBoxCategory.SelectedItems)
)

Filtrar colunas de opções

A filtragem de linhas da tabela em uma coluna de opções é complicada devido à maneira como os dados são armazenados no Dataverse como uma lista separada por vírgulas. Como resultado, qualquer filtro que você redigir que envolva uma coluna de opções receberá um aviso de delegação, como ilustrado no exemplo a seguir.

Uma abordagem que pode ser usada para evitar o problema de delegação é a criação de uma exibição de tabela do Dataverse que filtre os valores das opções e, em seguida, use a exibição nos critérios de sua função Filter(). Essa abordagem ajudará a evitar o aviso de delegação, mas não permitirá que o usuário do aplicativo forneça os valores dos critérios de filtro. A captura de tela a seguir mostra um exemplo de um filtro de exibição do Dataverse para a coluna de opções Entrega Preferencial.

Você pode usar essa exibição do Dataverse chamada Entrega de Segunda-feira usando a seguinte função de Filter():

Filter(
  Accounts,
  'Accounts (Views)'.'Monday Delivery'
)

Além disso, ainda é possível incluir critérios inseridos pelo usuário para colunas que não sejam a Category. Por exemplo, a função Filter() a seguir mostra a adição da coluna de opção Category, que é filtrada de acordo com o valor que o usuário selecionou na lista suspensa.

Filter(
  Accounts,
  'Accounts (Views)'.'Monday Delivery',
  Category = Dropdown1.Selected.Value
)

Devido à lista padronizada de valores, as colunas de opção e opções são úteis para fornecer maneiras consistentes de filtrar as linhas da tabela.


Unidade seguinte: Modificar valores de opção e de opções

Anterior Avançar