API Reference

Como utilizar a API no Power BI com paginação

Passo a Passo

Inicie o Power BI Desktop e abra um novo relatório ou um relatório existente.

1. Obter Dados

No menu em Página Inicial navegue através da opção Obter dados > Consulta em branco

2. Inserir o código

No menu em Página Inicial clique em Editor Avançado copie o código abaixo e cole no Editor Avançado:


(Url as text, Token as text, QuantidadeRegistrosPorPagina as number, OrderBy as text) =>
let
    
    // Verificação da quantidade máxima de registros por página
    maxRegistrosPorPagina = 500,
    registrosPorPaginaValidos = QuantidadeRegistrosPorPagina <= maxRegistrosPorPagina,

    // Verificação das condições antes de prosseguir
    resultado = if not registrosPorPaginaValidos then
        error "A quantidade máxima de registros por página é 500."
    else
        let
            // Visualização de registros
            top = QuantidadeRegistrosPorPagina,

            // Função para buscar os registros de uma página específica
            request = (skip as number, top as number) =>
            let
                baseURL = Url,
                url = baseURL & "?$skip=" & Text.From(skip) & "&$top=" & Text.From(top) & "&$orderby=" & Text.From(OrderBy),
                Fonte = Json.Document(Web.Contents(url, [Headers=[apitoken=Token]]))
            in
                Fonte,

            // Definindo a URL base
            baseURL = Url,
            Fonte = Json.Document(Web.Contents(baseURL, [Headers=[apitoken=Token]])),
            totalCount = Fonte[count], // Total de registros
            totalPages = Number.RoundUp(totalCount / top),

            // Gerar lista de páginas, incluindo o número da página em cada registro
            listOfPages = List.Generate(
                () => [page = 1, skip = 0, data = request(0, top)], // Estado inicial
                each [page] <= totalPages, // Condição de repetição
                each [page = [page] + 1, skip = [skip] + top, data = request([skip] + top, top)]
            ),

            // Converter para tabela
            tabelaInicial = Table.FromList(listOfPages, Splitter.SplitByNothing(), null, null, ExtraValues.Error),

            // Expandir os campos 'page' e 'data'
            tabelaExpandida = Table.ExpandRecordColumn(tabelaInicial, "Column1", {"page", "data"}, {"page", "data"}),

            // Expandir a coluna 'data' para obter 'items'
            tabelaComItems = Table.ExpandRecordColumn(tabelaExpandida, "data", {"items"}, {"items"}),
            #"items Expandido" = Table.ExpandListColumn(tabelaComItems, "items"),
    
            // Obter dinamicamente os nomes das colunas dos registros dentro de 'items'
            colunasItems = List.Distinct(List.Combine(List.Transform(#"items Expandido"[items], Record.FieldNames))),
    
            // Expandir dinamicamente os campos de cada registro dentro de 'items'
            tabelaFinal = Table.ExpandRecordColumn(#"items Expandido", "items", colunasItems, colunasItems)
        in
            tabelaFinal
in
    resultado

3. Utilize os parâmetros

Após inserir o código, será possível definir na consulta os valores dos parâmetros URL, Token, QuantidadeRegistrosPorPagina, e OrderBy na caixa de diálogo de parâmetros.

Nota: Nem todas as URLs estão disponíveis para uso. Apenas os endpoints que utilizam o oData são permitidos.

4. Expandir Colunas Manualmente:

Após a consulta inicial, algumas colunas que exibem os registros com o nome "record" e/ou "list", deverá ser expandidas caso seja importante um dado importante para o relatório.

Clique nos ícones de expansão (pequenas setas duplas) ao lado desses nomes para expandir os registros e visualizar os dados completos. Depois de ajustar e expandir as colunas conforme necessário, clique em Fechar e Aplicar na barra superior do editor de consultas.

O Power BI aplicará as mudanças e carregará os dados na interface principal para que você possa criar seu relatório.

Adicione no Relatório as colunas que deseja exibir. Caso tenha algum dado faltando ou que foi exibido de maneira errada, será necessário ajustar nas Etapas aplicadas ou pelo "Editor Avançado" .