Tempo de leitura:
Neste artigo vou demonstrar-te através de exemplos práticos como podes navegar numa tabela em Power Query! Normalmente em Power Query trabalhamos os dados no seu todo, por exemplo, uma coluna ou linha inteira. Mas se pretendemos aceder a uma célula da tabela, por exemplo para obter o seu valor, temos de saber como navegar em tabelas com Power Query!
Vamos começar por adicionar uma tabela com dados no Power Query. Acedendo ao separador Dados [Data] e à opção De Tabela / Intervalo [From Table / Range]

Uma vez na janela do editor do Power Query existem alguns passos criados automaticamente pela consulta.

Aceder a registos, colunas e células da tabela
Registo da Tabela
Uma vez no Power Query, vamos então começar a nossa navegação! Iniciamos acedendo a um registo, que podemos considerar uma linha da tabela, esta linha (registo) tem sempre associado o respetivo campo da tabela.
Num duplicado da consulta, vamos então aceder a um registo:
= #”Tipo Alterado”{3}
Um registo é criado por chavetas “{ }” indicando a linha da tabela pretendida. O Power Query funciona com base 0, o que significa que a primeira linha da tabela é o registo 0. Assim neste caso estamos a aceder à 4ª linha da tabela.

Coluna da Tabela
Se pretendemos aceder a uma coluna -> Campo da tabela estamos a gerar uma lista de valores. Numa cópia da consulta adicionamos novamente um novo passo…
= #”Tipo Alterado”[Vendedor]
Uma coluna, que representa uma lista é criada por parêntesis retos “[ ]” indicando a coluna da tabela pretendida.

Célula da Tabela
Uma célula, tal como no Excel, é apenas a interceção de uma coluna com uma linha, neste caso para aceder a uma célula, neste caso o seu valor, utilizamos a lógica de aceder a um registo e uma coluna ou vice-versa, em Power Query, ambas a soluções funcionam!
= #”Tipo Alterado”{3}[Vendedor]
= #”Tipo Alterado”[Vendedor] {3}

Precisamos de definir um novo passo?
Os 3 exemplos anteriores foram definidos através de um novo passo. Na prática não é necessário criar um passo para obter esta informação, podemos aceder ao mecanismo de obter um registo, coluna ou célula através de qualquer passo da consulta, desde que o seu Output seja uma tabela!
= Table.TransformColumnTypes(Origem,{{“Data”, type datetime}, {“Vendedor”, type text}, {“Cliente”, type text}, {“Vendas (€)”, type number}, {“Lucro (€)”, type number}, {“Região”, type text}}){3}

Obter um registo através de pesquisa de dados
Podemos também aceder a uma linha da tabela, executado a extração de um registo através da pesquisa de um valor. Imagina um cenário semelhante à função PROCV [VLOOKUP] no Excel.
= #”Tipo Alterado”{[Cliente = “Melo”]}
Repara que aqui, acedemos ao registo através das chavetas “{ }” contudo acedemos também a uma coluna “[ ]” para definir o critério

A partir do momento que temos o registo, naturalmente podemos aceder a uma célula em particular nesse registo!

Esta solução funciona quando o valor a procurar identifica apenas um registo. No caso de a pesquisa devolver mais do que um registo, a consulta dá erro.
Por exemplo o seguinte código aplicado num passo novo:
= #”Linhas Ordenadas”{[Data = #date(2024, 11, 19)]}

Resulta no seguinte erro:

Se pensarmos logicamente faz sentido! Contudo podemos resolver esta questão. Quando procuramos vários registos estamos na realidade a FILTRAR uma Tabela para obter todos os registos em função de um ou mais critérios.
Neste caso temos apenas de ajustar o código para obter não um registo apenas, mas sim vários.
A expressão para filtrar dados em Power Query é a função Table.SelectRows, que necessita de uma tabela e um critério.
= Table.SelectRows(#”Linhas Ordenadas”, each [Data] = #date(2024, 11, 19))

Repara agora que o código tem algumas nuances…
- Estamos a usar uma função: Table.SelectRows
- O primeiro argumento da função é uma tabela, onde estamos a aproveitar o último Output: #”Linhas Ordenadas”
- Temos a expressão “each” que determina a iteração em cada linha da tabela
- Indicamos o campo para o critério: [Data]
- Indicamos o critério pretendido: #date(2024, 11, 19)
- Por fim repara que não estamos a aceder a um registo, sendo que as chavetas “{ }” não existem.
Projetar colunas
Para acedermos a uma coluna, podemos usar outra lógica, que se chama projeção! Basicamente o termo significa que para aceder a uma coluna, não precisamos de aceder à mesma como uma lista, mas sim como uma coluna em forma de tabela.
= #”Tipo Alterado”[[Cliente], [Data], [Vendedor]]
A técnica aqui é simples: Usamos os parêntesis retos “[ ]” para aceder a uma coluna, mas dentro dos mesmos escolhemos a coluna ou colunas a obter!

Estamos a projetar colunas. Esta lógica é semelhante a aplicar o comando: Remover Outras Colunas.

Aceder a Tabelas, Linhas ou células aninhadas
O último exemplo que quero mostrar é a possibilidade de acedermos a tabelas, dentro de outras tabelas, que por sua vez, podemos naturalmente aceder às colunas ou linhas dessas mesmas tabelas.
Vamos começar por criar uma tabela agrupada, que tem tabelas aninhadas.

O resultado é o seguinte:

Aceder a um registo específico
Para aceder a um registo específico usamos exatamente a mesma metodologia…

Em resumo obtemos um registo…

E podemos aceder à tabela aninhada…

E dentro da tabela a um registo ou coluna que quisermos…

Como podes ver navegar em Power Query é muito simples!
Próximo artigo:
Artigo Anterior:
Ficheiros
Artigos por Categoria
- Microsoft Excel (39)
- Power Apps (16)
- Power Automate (3)
- Power BI (10)
- Power Query (12)
- Python (2)
- VBA (7)

Leave a Reply