Ir para conteúdo
  • 0

ERRO AO INVOCAR FUNÇÃO PERSONALIZADA


wesleirocha84
Ir para solução Solucionado por wesleirocha84 ,

Pergunta

  • Alunos

Prezados boa noite, para eu entender o conceito e a forma correta de montar uma função, poderiam me ajudar com o erro ? Obrigado.

Se eu chamo a função direto na função, o resultado é o esperado:

image.png.7e26e77733d75f30905d91a381d35cc8.png

se eu chamo a função por dentro da tabela, dá erro,

image.png.e43cb73f0ac95341230363e5b6923a61.png

até tentei tratar o erro adicionando uma outra coluna, mas não deu certo, creio que seja algo bem simples.

image.png.5a03f651adbb82fc852b419acbc50226.png

Erro.pbix

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução
50 minutos atrás, wesleirocha84 disse:

Bom dia, seguindo esse raciocínio, consegui resolver alterando CONTENT para VALUE, acabou gerando mais uma etapa, mas vou quebrar a cabeça aqui. Valeu.

Cheguei no resultado que eu queria, troquei

(TABELA as table, DELIMITER as text, ENCODING as text) =>
let
    Fonte = TABELA,
    #"Personalização Adicionada" = Table.AddColumn(Fonte, "Personalizar", each Csv.Document([Content],[Delimiter=DELIMITER, Encoding=ENCODING, QuoteStyle=QuoteStyle.None]))
in
    #"Personalização Adicionada"

por

= (TABELA as any, DELIMITER as text, ENCODING as text) =>
let
    Fonte = TABELA,
    #"Personalização Adicionada" = Csv.Document(TABELA,[Delimiter=DELIMITER, Encoding=ENCODING, QuoteStyle=QuoteStyle.None])
in
    #"Personalização Adicionada"

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Olá, @wesleirocha84!

 

Numa rápida olhada, o erro está acontecendo porque você está indicando no parâmetro que a função deve receber uma tabela (TABELA as table).

Na terceira etapa, Função Personalizada Invocada, o problema é que você está tentando tratar um texto como tabela.

Já na quinta etapa, Função Personalizada Invocada1, o problema é que da forma que você escreveu a função, ele pegaria a tabela e aplicaria o Csv.Document na coluna Content, daí o erro que é apresentado.

 

Se você quer simplesmente dividir um texto por delimitador, existe uma função própria para isto.

 

Espero ter ajudado.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
13 horas atrás, Vitor Peralva disse:

Olá, @wesleirocha84!

 

Numa rápida olhada, o erro está acontecendo porque você está indicando no parâmetro que a função deve receber uma tabela (TABELA as table).

Na terceira etapa, Função Personalizada Invocada, o problema é que você está tentando tratar um texto como tabela.

Já na quinta etapa, Função Personalizada Invocada1, o problema é que da forma que você escreveu a função, ele pegaria a tabela e aplicaria o Csv.Document na coluna Content, daí o erro que é apresentado.

 

Se você quer simplesmente dividir um texto por delimitador, existe uma função própria para isto.

 

Espero ter ajudado.

Bom dia, valeu pelo retorno, vamos lá.

Em relação ao parâmetro ser tabela, já tinha colocado ele como opcional (sem o "as") e não foi;

O da terceira etapa, tentei resolver transformando o texto em tabela (print3) e não resolveu;

A quinta etapa, estou apontando pra coluna (coluna 4) que transformei o texto em tabela;

 

Não é o caso de dividir não, montei ela só pra aprendizado mesmo, para entender o conceito, porque chamando por fora da tabela vai e se chamar por dentro não vai, memo transformando os valores em tabela.

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
1 hora atrás, wesleirocha84 disse:

Bom dia, valeu pelo retorno, vamos lá.

Em relação ao parâmetro ser tabela, já tinha colocado ele como opcional (sem o "as") e não foi;

O da terceira etapa, tentei resolver transformando o texto em tabela (print3) e não resolveu;

A quinta etapa, estou apontando pra coluna (coluna 4) que transformei o texto em tabela;

 

Não é o caso de dividir não, montei ela só pra aprendizado mesmo, para entender o conceito, porque chamando por fora da tabela vai e se chamar por dentro não vai, memo transformando os valores em tabela.

 

 

Ainda que não indique o tipo de dados que pode receber no argumento, indiretamente você informa no seu código:

 

(TABELA as table, DELIMITER as text, ENCODING as text) =>
let
    Fonte = TABELA,
    #"Personalização Adicionada" = Table.AddColumn(Fonte, "Personalizar", each Csv.Document([Content],[Delimiter=DELIMITER, Encoding=ENCODING, QuoteStyle=QuoteStyle.None]))
in
    #"Personalização Adicionada"

 

Quando você usa a função Table.AddColumn, você está informando que ela vai receber uma tabela, que se encontra na etapa fonte, que é alimentada pelo argumento tabela.

Sendo assim, não basta não indicar que não é tabela.

Na verdade, você precisa definir o que vai tratar, pq as funções a serem aplicadas dependem, fundamentalmente, do que você indicar.

 

Sobre o transformar em tabela, como destaquei, a sua função diz para pegar a coluna CONTENT e aplicar a função, qualquer tabela que não tenha a coluna CONTENT vai dar erro.

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
23 horas atrás, Vitor Peralva disse:

 

Ainda que não indique o tipo de dados que pode receber no argumento, indiretamente você informa no seu código:

 

(TABELA as table, DELIMITER as text, ENCODING as text) =>
let
    Fonte = TABELA,
    #"Personalização Adicionada" = Table.AddColumn(Fonte, "Personalizar", each Csv.Document([Content],[Delimiter=DELIMITER, Encoding=ENCODING, QuoteStyle=QuoteStyle.None]))
in
    #"Personalização Adicionada"

 

Quando você usa a função Table.AddColumn, você está informando que ela vai receber uma tabela, que se encontra na etapa fonte, que é alimentada pelo argumento tabela.

Sendo assim, não basta não indicar que não é tabela.

Na verdade, você precisa definir o que vai tratar, pq as funções a serem aplicadas dependem, fundamentalmente, do que você indicar.

 

Sobre o transformar em tabela, como destaquei, a sua função diz para pegar a coluna CONTENT e aplicar a função, qualquer tabela que não tenha a coluna CONTENT vai dar erro.

 

Bom dia, seguindo esse raciocínio, consegui resolver alterando CONTENT para VALUE, acabou gerando mais uma etapa, mas vou quebrar a cabeça aqui. Valeu.

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...