Ir para conteúdo
  • 0

Selecionar palavra especifica para criacao de nova coluna


Wagner
Ir para solução Solucionado por Bruno Abdalla de Souza ,

Pergunta

  • Alunos

Boa tarde, estou tentando incluir uma coluna chamada “Local” na tabela fControle, essa coluna e’ baseada nas seguintes premissas:

 1)      Verifico se na descrição do campo( coluna “Text”) tem os dígitos do local, definido na tabela dLoc, coluna "Local" (por exemplo AAA10)

2)      Se tiver coloco na nova coluna(Local) o valor dLoc(no caso AAA10);

3)      Se não tiver verifico novamente na tabela fControle na coluna “Group” e uso essa informação para verificar novamente o Local associado.(Por exemplo na linha #9 Não existe – informar request# - no caso FFF01)

Estava tentando usar o comando List.Contains, mas nao obtive successo, tentei tb Text .String, e tambem nao funcionou.

Desde ja Agradeco qualquer ajuda para obter o resultado.

Obrigado

 

Controle_Teste.pbix

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 1
  • Alunos
  • Solução

Tente este código aqui @Wagner

 

AdicionaColunaLocal = 
        Table.AddColumn(
            #"Changed Type1", 
            "Local", 
            let
                vTabelaLocal = Table.Buffer(dLoc),
                vListaLocal = List.Buffer(vTabelaLocal[Local])
            in
                each 
                    let 
                        vTexto = _[Text],
                        vGroup = _[Group],
                        vLocal = 
                            List.Accumulate(
                                vListaLocal,
                                "",
                                (estado, atual) => if Text.Contains(vTexto, atual) then atual else estado
                            ),
                        vLocalAlternativo = if Text.Length(vLocal) > 0 then vLocal else Table.SelectRows(vTabelaLocal, each [Group] = vGroup)[Local]{0}
                    in
                        vLocalAlternativo,
                    type text
        )

 

Editado por Bruno Abdalla de Souza
  • Like 2
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

@Wagner, para mexer no POwerQuery vamos precisar das planilhas controle.xlsx e loc.xlsx. Anexa um exemplo delas aqui, por favor. Se possível, diga também qual é o resultado esperado, pois facilita o nosso entendimento.

Editado por Bruno Abdalla de Souza
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Oi Renato, obrigado pelo feedback, a coluna Group e' uma informacao que utilizo no caso de nao conseguir identificar o local na coluna Text, 90% dos casos o local pode ser identificado por ai. A ideia e' utilizar o group quando nao ha informacao de local no Text. 

O desafio e' identificar o local na coluna Text da fControle, que pode estar em posicoes diferentes, e extrair isso e colocar em uma nova coluna, em caso de nao achar o local, volto e procuro na coluna Group.  

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Não entendi muito bem @Wagner. No grupo A10, temos um texto EEE10, mas nas dLoc temos que o Grupo A10 pode ser várias opções, mas nenhuma é o EEE10. Neste caso, não deveria dar uma mensagem de erro ou um aviso de que não há correspondência? Não consegui entender a lógica ainda que você usou.

O grupo C33 não tem correspondência na tabela dLoc. Neste caso, qual a lógica para saber que tem que retornar FFF01? Teria que voltar só o que é maiúsculo em forma sequencial?

Explica um pouco melhor por favor.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Oi @Bruno Abdalla de Souzaobrigado pela atenção.  Verdade, minha dLoc esta errada, cada grupo deve ter 1 local associado, acabei deixando isso escapar quando ajeitei a simulação. Enfim, essa informacao so sera usada como uma segunda referencia para identificar o local caso nao tenha sido informado na coluna Text da dControle.  Então a ideia e' extrair da coluna Text  a informação de Localização, sempre vou ter um prédio com o código XXXNN, e tenho a tabela dLoc para controle desses locais. Caso eu nao encontre nenhuma referencia na Text, ai vejo qual o grupo na dLoc e identifico a localização relacionado. Anexei um novo file dLoc. 

Obrigado

Loc.numbers

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Eu tinha entendido o seguinte.

Verifico na tabela fato qual o grupo. Vou na dLoc e procuro os locais correspondentes. Com estes locais, verifico quais deles estão presentes na coluna Text da tabela fato. Se algum deles estiver, retorno este local, caso contrário retorno nulo ou uma mensagem que não houve correspondência.

mas pelo que entendi você quer que procure primeiro na coluna Text se há um texto XXXNN (onde X são letras e N são números). Caso não tenha nada disso, aí sim podemos procurar na tabela dLoc a correspondência. Seria isso?

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Isso @Bruno Abdalla de Souza, e' a segunda opcao, extraio informacao da coluna Text(XXXNN) usando a lista dLoc como referencia, e se nao tiver o codigo local, volto na dLoc com o codigo Group e vejo qual o codigo local.

Hoje na live mensal o Leo resolveu uma parte:

= Table.AddColumn(#"Changed Type1", "Custom", each List.Accumulate(
    dLoc[Local],
"",
(s, c) =>
if Text.Contains([Text], c) then c else s
))

 

 

Agora so esta faltando a segunda parte que e' voltar na dLoc usando o info Group da dControle para ver o respectivo codigo e associar o Local.

image.png

Editado por Wagner
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...