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.