Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tudo que estiver relacionado a tratamento de dados, Power Query editor e linguagem M
Por CleuberZago
Posts
#54935
Olá pessoal,

Tenho uma base muito extensa com inúmeros dados sobre jogos de tênis, incluindo os placares ponto-a-ponto, jogo-a-jogo, partida por partida e preciso de ajuda para conseguir criar uma coluna condicional binária que valide a incidência de um determinado placar dentro de um game de uma partida.

Nessa coluna condicional preciso que a fórmula consiga ler distintamente para a partida (match_id) e para o game (Gm#) se houve deuce (placar de 40-40 ( [Pts] = "40-40" )). Caso tenha havido, todas a linhas daquele game deve ficar com 1 nessa coluna, caso não deve ficar 0.

Em resumo, caso tenha ocorrência do placar 40-40 todas as linhas daquele game naquela partida deve ficar com 1 nessa nova coluna .

No arquivo anexo um exemplo muito simples disso, o valor que está na coluna Check é o esperado.

EDIT: Caso achem que seja melhor condicionar isso com medidas, também aceito sugestões rsrsrsrs.
Você não está autorizado a ver ou baixar esse anexo.
Por osvaldomp
#54943
CleuberZago escreveu: ... preciso que a fórmula consiga ler distintamente ...
Eu sugiro uma solução via macro ou UDF. Retorne se houver interesse.

EDIT: Caso achem que seja melhor condicionar isso com medidas, também aceito sugestões rsrsrsrs.
O que exatamente você quer dizer com "condicionar isso com medidas" ?
Por babdallas
#54945
Código: Selecionar todos
let
    Fonte = Excel.CurrentWorkbook(){[Name="Tabela1"]}[Content],
    TiposAlterados = Table.TransformColumnTypes(Fonte,{{"match_id", type text}, {"Gm#", Int64.Type}, {"Pts", type text}}),
    InsereColMatchidGm = Table.AddColumn(TiposAlterados, "match_id-Gm#", each Text.Combine({[match_id], Text.From([#"Gm#"], "pt-BR")}, "-"), type text),
    AgrupaLinhas = Table.TransformColumnTypes(Table.Group(InsereColMatchidGm, {"match_id-Gm#"}, {{"Check", each List.Count(List.FindText(_[Pts],"40-40"))}}),{{"Check", type number}}),
    MesclaEtapas = Table.NestedJoin(AgrupaLinhas, {"match_id-Gm#"}, InsereColMatchidGm, {"match_id-Gm#"}, "AgrupaLinhas", JoinKind.LeftOuter),
    Expande = Table.ExpandTableColumn(MesclaEtapas, "AgrupaLinhas", {"match_id", "Gm#", "Pts"}, {"AgrupaLinhas.match_id", "AgrupaLinhas.Gm#", "AgrupaLinhas.Pts"}),
    RemoveColMatchidGm = Table.SelectColumns(Expande,{"AgrupaLinhas.match_id", "AgrupaLinhas.Gm#", "AgrupaLinhas.Pts", "Check"})
in
    RemoveColMatchidGm
Você não está autorizado a ver ou baixar esse anexo.
Por CleuberZago
Posts
#54968
babdallas escreveu:
Código: Selecionar todos
let
    Fonte = Excel.CurrentWorkbook(){[Name="Tabela1"]}[Content],
    TiposAlterados = Table.TransformColumnTypes(Fonte,{{"match_id", type text}, {"Gm#", Int64.Type}, {"Pts", type text}}),
    InsereColMatchidGm = Table.AddColumn(TiposAlterados, "match_id-Gm#", each Text.Combine({[match_id], Text.From([#"Gm#"], "pt-BR")}, "-"), type text),
    AgrupaLinhas = Table.TransformColumnTypes(Table.Group(InsereColMatchidGm, {"match_id-Gm#"}, {{"Check", each List.Count(List.FindText(_[Pts],"40-40"))}}),{{"Check", type number}}),
    MesclaEtapas = Table.NestedJoin(AgrupaLinhas, {"match_id-Gm#"}, InsereColMatchidGm, {"match_id-Gm#"}, "AgrupaLinhas", JoinKind.LeftOuter),
    Expande = Table.ExpandTableColumn(MesclaEtapas, "AgrupaLinhas", {"match_id", "Gm#", "Pts"}, {"AgrupaLinhas.match_id", "AgrupaLinhas.Gm#", "AgrupaLinhas.Pts"}),
    RemoveColMatchidGm = Table.SelectColumns(Expande,{"AgrupaLinhas.match_id", "AgrupaLinhas.Gm#", "AgrupaLinhas.Pts", "Check"})
in
    RemoveColMatchidGm
Perfeito, Bruno. Porém....

Qnd tento aplica-la na consulta da base não estou conseguindo sequer processar, trava tudo. Acredito que pelo tamanho da base.
Por CleuberZago
Posts
#54969
osvaldomp escreveu:
CleuberZago escreveu: ... preciso que a fórmula consiga ler distintamente ...
Eu sugiro uma solução via macro ou UDF. Retorne se houver interesse.

EDIT: Caso achem que seja melhor condicionar isso com medidas, também aceito sugestões rsrsrsrs.
O que exatamente você quer dizer com "condicionar isso com medidas" ?
Minha intenção é fazer um total de zero coisas no Excel, o que for preciso trabalhar no PBI...

Quando falo em "condicionar isso com medidas" é fazer esse sim/não ou 0/1 direto em uma medida do PBI, se for o caso. Não precisar inserir uma coluna no Power Query só pra fazer a validação disso.
Por babdallas
#54975
OK, vou ver se consigo otimizar algo na linguagem M e também tentar fazer com DAX.
Por babdallas
#54977
Veja se usando Table,Buffer melhora o desempenho.
Código: Selecionar todos
let
    Fonte = Excel.CurrentWorkbook(){[Name="Tabela1"]}[Content],
    TiposAlterados = Table.TransformColumnTypes(Fonte,{{"match_id", type text}, {"Gm#", Int64.Type}, {"Pts", type text}}),
    InsereColMatchidGm = Table.Buffer(Table.AddColumn(TiposAlterados, "match_id-Gm#", each Text.Combine({[match_id], Text.From([#"Gm#"], "pt-BR")}, "-"), type text)),
    AgrupaLinhas = Table.Buffer(Table.TransformColumnTypes(Table.Group(InsereColMatchidGm, {"match_id-Gm#"}, {{"Check", each List.Count(List.FindText(_[Pts],"40-40"))}}),{{"Check", type number}})),
    MesclaEtapas = Table.NestedJoin(AgrupaLinhas, {"match_id-Gm#"}, InsereColMatchidGm, {"match_id-Gm#"}, "AgrupaLinhas", JoinKind.LeftOuter),
    Expande = Table.ExpandTableColumn(MesclaEtapas, "AgrupaLinhas", {"match_id", "Gm#", "Pts"}, {"AgrupaLinhas.match_id", "AgrupaLinhas.Gm#", "AgrupaLinhas.Pts"}),
    RemoveColMatchidGm = Table.SelectColumns(Expande,{"AgrupaLinhas.match_id", "AgrupaLinhas.Gm#", "AgrupaLinhas.Pts", "Check"})
in
    RemoveColMatchidGm
Por CleuberZago
Posts
#55085
Nada... Mesmo inserindo etapa a etapa não vai.

Nessa consulta em específico o csv possui mais de 600k registros, foras os outros relacionamentos. Também não acredito que seja por conta de desempenho da máquina, estou com um i7, SSD e 16GB de memória.

Talvez o caminho seja usar DAX mesmo.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord