Ir para conteúdo
  • 0

Steps API Notion


Murilo Lunardon
Ir para solução Solucionado por Joao Raulino ,

Pergunta

7 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução

Ops... erro meu. Codigo corrigido:

Citar

(t as table, optional colNum as number) =>

let
 colNum = if colNum = null then 0 else colNum,
 colName = Table.ColumnNames(t){colNum},
 colContents = Table.Column(t, colName),
 colExpand = List.Distinct(List.Combine(List.Transform(colContents,
                    each if _ is record
                    then Record.FieldNames(_)
                    else {}
            ))),
 newColNames = List.Transform(colExpand, each colName & "." & _),
 canExpand = List.Count(colExpand) > 0,
 expandTable = if canExpand
               then Table.ExpandRecordColumn(t, colName, colExpand, newColNames)
               else t,
 nextColNum = if canExpand then colNum else colNum + 1,
 repeat = if nextColNum>(Table.ColumnCount(expandTable) - 1)
          then expandTable
          else fnExpandAll(expandTable, nextColNum)
in
 repeat

Nao esquece de nomear a tua funcao como fnExpandAll para ela ser capaz de chamar ela mesma 😉 

Abs!

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
4 minutos atrás, Joao Raulino disse:

Suave @Murilo Lunardon?

Se você já souber qual record você quer expandir, você pode acessar ele diretamente usando a notação 'Tabela'[ColunaPai][ColunaFilho][ColunaNeto...]

Com isso da para diminuir bastante o código. Tenta ai e diz se deu certo 😉 

Abs!

Na verdade, seria todos.. 

Vou tentar oque você disse.

Obrg 😄

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Boa @Murilo Lunardon!

Nesse caso, se você quer expandir TODAS as colunas você pode usar uma função recursiva do tipo abaixo:

Citar

(t as table, optional colNum as number) =>

let 
    colNames = Table.ColumnNames(t),
    Index = if colNum = null then  0 else colNum,
    expand = Table.ExpandListColumn(t, colNames{Index}),
    nextCol = Index+1,
    repeat = if nextCol < List.Count(colNames) then 
        fnExpandAll(expand, nextCol) else expand
in 
    repeat

Depois basta criar um novo passo na tua consulta modificando o "UltimoPasso" para o nome do teu ultimo passo:

Citar

= fnExpandAll(UltimoPasso)

Abs!

Editado por Joao Raulino
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
6 minutos atrás, Joao Raulino disse:

Boa @Murilo Lunardon!

Nesse caso, se você quer expandir TODAS as colunas você pode usar uma função recursiva do tipo abaixo:

Depois basta criar um novo passo na tua consulta modificando o "UltimoPasso" para o nome do teu ultimo passo:

Abs!

Consegue implementar nesse cod?

 

let
    Authorization = "secret_VmZRUcDBck46IHqjUXobeXPFPZGU8iwvlqwoHEdmC4A",
    query = "",
    Source = Json.Document(
        Web.Contents(
            "https://api.notion.com/v1/",
            [
                RelativePath = "databases/7a49d95be95e4738a36eeeaeaf5c940f/query", 
                Headers = 
                [
                    #"Notion-Version" = "2022-06-28",
                    #"Authorization" = Authorization,
                    #"Content-Type" = "application/json"
                ], 
                Content = Text.ToBinary(query)
            ]
            )
        ),
    results = Source[results],
    #"Convertido para Tabela" = Table.FromList(results, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Column1 Expandido" = Table.ExpandRecordColumn(#"Convertido para Tabela", "Column1", {"properties"}, {"properties"}),
    #"properties Expandido" = Table.ExpandRecordColumn(#"Column1 Expandido", "properties", {"Data Entrada", "Status", "Fee Inicial", "ID", "Data Saida", "Fee Atual", "ID_Cliente", "CNPJ", "Cliente"}, {"Data Entrada", "Status", "Fee Inicial", "ID", "Data Saida", "Fee Atual", "ID_Cliente", "CNPJ", "Cliente"})
in
    #"properties Expandido"

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Fala @Murilo Lunardon!

Vi aqui que os teus dados vem como tipo "Record". Nesse caso cria a formula fnExpandAll com o código abaixo:

Citar

(t as table) =>

let
    colNum = 0,
    colNames = Table.ColumnNames(t){colNum},
    colContents = Table.Column(t, colNames),
    colToExpand = List.Distinct(List.Combine(List.Transform(colContents,
                        each if _ is record then Record.FieldNames(_) else {}))),
    newColNames = List.Transform(colToExpand, each colNames & "." & _),
    canExpandColumn = List.Count(colToExpand) > 0,
    expandedTable = if canExpandColumn
                         then
                         Table.ExpandRecordColumn(t, colNames, colToExpand, newColNames)
                         else
                         t,
    nextCol = if canExpandColumn then colNum else colNum + 1,
    repeat = if nextCol > (Table.ColumnCount(expandedTable) - 1)
             then
               expandedTable
             else
               ExpandAllRecords(expandedTable, null, nextCol)
in
    repeat

E o teu código fonte vai ficar assim:

Citar

let
    Authorization = "secret_VmZRUcDBck46IHqjUXobeXPFPZGU8iwvlqwoHEdmC4A",
    query = "",
    Source = Json.Document(
        Web.Contents(
            "https://api.notion.com/v1/",
            [
                RelativePath = "databases/7a49d95be95e4738a36eeeaeaf5c940f/query", 
                Headers = 
                [
                    #"Notion-Version" = "2022-06-28",
                    #"Authorization" = Authorization,
                    #"Content-Type" = "application/json"
                ], 
                Content = Text.ToBinary(query)
            ]
            )
        ),
    results = Source[results],
    t = Table.FromList(results, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    fnExpandAll = fnExpandAll(t)
in
    fnExpandAll

image.png.3b5e6eb1d9fb888cce9d8d9c973cbe83.png

Se essa resposta te ajudou, não esquece de marcar como melhor solução 😉

Abs!

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
43 minutos atrás, Joao Raulino disse:

Fala @Murilo Lunardon!

Vi aqui que os teus dados vem como tipo "Record". Nesse caso cria a formula fnExpandAll com o código abaixo:

E o teu código fonte vai ficar assim:

image.png.3b5e6eb1d9fb888cce9d8d9c973cbe83.png

Se essa resposta te ajudou, não esquece de marcar como melhor solução 😉

Abs!

está com esse erro a fn

image.png.0d747494cc34641c835f0d971c0399f2.png

Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...