O que é self em Python: exemplos do mundo real
O que é self em Python: exemplos do mundo real
Quero mergulhar fundo em algo chamado análise combinatória. Isso pode ser definido como a escolha e arranjo de elementos de conjuntos de acordo com regras prescritas. Pode parecer esotérico, mas na verdade tem alguns casos de uso muito práticos. Você pode assistir ao vídeo completo deste tutorial na parte inferior deste blog.
Neste tutorial, mostrarei como fazer isso usando o Power Query no LuckyTemplates.
Índice
Exemplo de Caso de Análise Combinatória
Neste exemplo de análise combinatória, a tarefa era que tínhamos uma lista de seis armazéns e precisávamos gerar cada conjunto exclusivo de três. Parece um problema bastante simples, mas este é um daqueles casos em que a linguagem realmente importa.
A resposta correta aqui é 216, 120, 56 ou 20. Portanto, dependendo de como você define esse conjunto único e das regras que prescreveu, você pode errar por um fator de 10 se não obtiver o conjunto corretamente.
E assim, há duas dimensões que importam aqui. A primeira é “ a ordem importa ?” Então, quando estamos falando de três séries de três, o ABC é equivalente ao BCA? Então a ordem importa? E se a ordem importa , estamos falando de permutações .
Um bom exemplo de permutações em que a ordem pode importar é (estamos falando sobre um contexto de depósito) no caso do tempo de viagem. Pode muito bem ser que se você visitar o armazém A, depois o armazém B e depois o armazém C, o tempo de viagem devido ao fluxo de tráfego com tráfego contra tráfego, o tempo que você chegou a cada armazém pode ser bem diferente dependendo do pedido em que você os visita.
O outro lado disso é “ a ordem não importa ”, caso em que estamos falando de combinações , não de permutações. O caso de uso aqui que é comum é a distância. Por exemplo, como o corvo voa, a distância de A a B a C não será diferente da distância de B a C a A. Essas serão consideradas em um contexto de combinação.
As combinações são consideradas duplicatas umas das outras. Considerando que, em um contexto de permutação, eles serão considerados únicos.
E assim, como você pode ver, um bloqueio de combinação realmente deve ser um bloqueio de permutação porque, nesse caso, a ordem importa, tornando-o uma permutação, não uma combinação.
A segunda questão ou dimensão que importa é “ uma vez que um item é escolhido, ele pode ser escolhido novamente ?” Por exemplo, se escolhermos A como nosso primeiro armazém, podemos escolher A novamente ou temos que escolher elementos únicos a cada vez?
O termo que usamos aqui é “ com reposição ” ou “ sem reposição ”. Então, se um item pode ser recolhido novamente, é com reposição, ou seja, você o retira. E, de certa forma, ele volta para a caixa de seleção e deve ser escolhido novamente. Se a resposta for não, é sem reposição.
E assim, você pode ver nesta solução que as permutações com substituição são as menos restritivas. Então esse é o que nos dá 216 conjuntos únicos. E as combinações sem reposição são as mais restritivas nos dando 20.
Vamos apenas usar essas fórmulas como uma forma de verificar nossos resultados do Power Query . Portanto, vamos nos lembrar de 216, 120, 56 e 20. Agora vamos pular para o Power Query e ver como essa análise combinatória funciona.
Análise Combinatória: Permutações em Power Query
No Power Query, tenho aqui um caso bem simples com seis armazéns nomeados.
E desenvolvi esta função Power Query M, que usei para processar combinações e permutações.
Primeiro, vou desenvolver o primeiro caso de uso, que são permutações com substituição , o menos restritivo do grupo. A maneira de fazer isso no Power Query é pegar essa tabela Warehouses e fazer referência a ela (em DAX, usamos CROSSJOIN ).
Vou chamar isso de Per w Rep (permutações com substituição).
Há várias maneiras de fazer uma junção cruzada no Power Query. A maneira mais fácil que encontrei é simplesmente ir Add column , depois Custom column . Na fórmula da coluna personalizada, faça referência à tabela Armazéns .
E o que descobriremos quando clicarmos em OK é que ele gera uma tabela aninhada.
Em seguida, expandimos isso e desmarcamos o nome de colunas originais Use como um prefixo .
E obtemos este Location.1 , que é toda combinação possível de dois. Portanto, são necessárias as primeiras seis referências contra as outras seis combinações. O segundo seis faz o mesmo até que tenhamos 36 conjuntos diferentes.
Podemos fazer o terceiro fazendo isso de novo. Então vamos Adicionar coluna, depois uma coluna personalizada e, em seguida, Armazéns.
E teremos as 216 linhas como as permutações com substituição.
E você pode ver aqui embaixo, 3 colunas, 216 linhas.
O próximo caso de uso é permutações sem substituição . O que estamos pensando aqui é basicamente tudo que tem um elemento repetido. Nesta tabela, veremos da linha 1 à linha 8.
Para fazer isso, vamos dar uma olhada nesta função, fxSortAndIsDistinct .
No Editor avançado, você pode ver que basicamente pede uma tabela e, em seguida, faz um SortLocs . Mas a parte importante aqui para “com substituição” ou “sem substituição” é que esta é uma função IsDistinct . O que isso faz é basicamente pegar uma lista de elementos e determinar verdadeiro ou falso, se é distinto ou se tem alguma duplicata na lista de itens.
Então vamos aqui, selecionamos o Perm w Rep e pressionamos Invoke .
Isso nos dará essas duas novas colunas, SortLocs e IsDistinct . Agora, lembre-se de que os oito primeiros registros tinham duplicatas e o nono registro foi a primeira vez que vimos o arquivo . É por isso que a nona linha aqui é a primeira que aparece como verdadeira.
Se pensarmos nos números que tivemos nos cálculos fatoriais, esperamos 120 registros se retirarmos os registros não distintos. Então, vamos tentar filtrar aqui e tirar o FALSO.
Ao fazermos isso, obtemos aqui exatamente as 120 linhas que esperamos. Agora vamos renomear isso como Perm wo Rep (permutação sem substituição).
Análise Combinatória: Combinações em Power Query
Agora faremos as combinações com substituição . Para isso, basta repetirmos o processo e repetirmos o passo (Função Invocada). Portanto, não há problema em termos duplicatas, mas não queremos conjuntos com os mesmos elementos , mas em uma ordem diferente.
Neste caso, quando estamos falando de combinações. Se você lembrar que ABC é igual a BCA é igual a CAB, todos são considerados duplicatas um do outro. E a maneira como determinamos isso é por meio da função Sort ( fxSortAndIsDistinct ).
Se voltarmos à função no Editor avançado, veremos para a segunda coluna que pegamos a lista e a classificamos alfabeticamente. Em seguida, extraímos os valores delimitados por vírgula dessa lista. Agora temos cada conjunto classificado em ordem alfabética. Normalizamos a ordem para facilitar a localização de duplicatas.
Agora, se voltarmos a essa função invocada, lembre-se de que estamos procurando 56 registros aqui. Então, pegamos esse tipo de local ( SortLocs ) e removemos nossas duplicatas .
Com isso, obtemos 56 linhas.
E assim, este é o nosso terceiro caso de uso. Vamos renomeá-lo como CC w Rep (combinações com substituição).
Vamos encerrar isso pegando novamente aquela tabela de permutações com substituição (Perm w Rep) e fazer o mesmo padrão (invocar). Então, vamos remover as duplicatas (coluna SortLocs) porque isso é uma combinação e a ordem não importa. É sem substituição, então também queremos apenas a lista distinta . Então, clicamos em FALSE na coluna IsDistinct.
Com isso, obtemos 20 registros. E agora temos todos os nossos quatro casos de uso.
Classificando as colunas da tabela de datas no LuckyTemplates
Guia para iniciantes do código M no LuckyTemplates
Converter a função da tabela de datas em uma consulta de tabela no LuckyTemplates
Conclusão
Portanto, agora temos todos os quatro casos de uso. Você pode ver realmente como isso é poderoso em termos de desenvolvimento da análise combinatória que lhe dá controle sobre a substituição e os elementos distintos.
Isso é aplicável até mesmo em alguns casos mais complexos em que você tem uma substituição parcial ou talvez selecione um elemento duplicado para o primeiro, mas não para a segunda vez. Você ainda pode lidar com isso muito bem no Power Query .
Espero que você tenha achado isso útil. Confira os links abaixo para mais conteúdo. Você também pode assistir ao vídeo completo deste tutorial abaixo.
Tudo de bom!
O que é self em Python: exemplos do mundo real
Você aprenderá como salvar e carregar objetos de um arquivo .rds no R. Este blog também abordará como importar objetos do R para o LuckyTemplates.
Neste tutorial de linguagem de codificação DAX, aprenda como usar a função GENERATE e como alterar um título de medida dinamicamente.
Este tutorial abordará como usar a técnica Multi Threaded Dynamic Visuals para criar insights de visualizações de dados dinâmicos em seus relatórios.
Neste artigo, analisarei o contexto do filtro. O contexto do filtro é um dos principais tópicos sobre os quais qualquer usuário do LuckyTemplates deve aprender inicialmente.
Quero mostrar como o serviço online do LuckyTemplates Apps pode ajudar no gerenciamento de diferentes relatórios e insights gerados de várias fontes.
Aprenda a calcular suas alterações de margem de lucro usando técnicas como ramificação de medida e combinação de fórmulas DAX no LuckyTemplates.
Este tutorial discutirá sobre as ideias de materialização de caches de dados e como elas afetam o desempenho dos DAXs no fornecimento de resultados.
Se você ainda estiver usando o Excel até agora, este é o melhor momento para começar a usar o LuckyTemplates para suas necessidades de relatórios de negócios.
O que é o Gateway do LuckyTemplates? Tudo o que você precisa saber