Colunas calculadas no SharePoint | Uma visão geral
Descubra a importância das colunas calculadas no SharePoint e como elas podem realizar cálculos automáticos e obtenção de dados em suas listas.
Vou mostrar a você como adicionar um parâmetro na função M em sua consulta de tabela de datas . Este exemplo é baseado em uma questão levantada no . Você pode assistir ao vídeo completo deste tutorial na parte inferior deste blog.
A dúvida era como mudar a numeração do 1º dia da semana de 0 para 1 . Observe que isso não altera o início real do dia da semana. Nesta tabela de datas, o início da semana será sempre segunda-feira. Trata-se apenas de se referir à segunda-feira como o dia 1 em vez do dia 0.
Esse processo não é necessariamente complexo, mas você precisa de um entendimento básico de como a linguagem M é estruturada. Se você é um membro do LuckyTemplates, pode conferir o . A introdução toca no assunto.
Índice
A função M e a tabela de data estendida
Deixe-me começar entrando no Power Query . Já copiei a função M da tabela de datas aqui.
Eu tenho a função M da categoria M Code Showcase no Fórum LuckyTemplates . O código está no tópico .
Se eu abrir o Editor Avançado , este é o código.
Há muito código M lá, o que pode ser uma distração.
Criando uma consulta de teste
Como há muita coisa acontecendo na função M, vou começar com uma nova consulta em branco .
Vou nomear essa Consulta de Teste .
A seguir, abrirei o Editor avançado .
Como vou criar uma função, vou adicionar um par de parênteses e deletar todo o código padrão ali contido.
Para iniciar a função, vou declarar um parâmetro opcional .
Em seguida, adicionarei uma variável. Chamarei essa variável de WDStartNum , pois representará o número inicial do dia da semana. Eu também preciso declarar seu tipo, então vou digitar number .
Estou declarando o tipo para evitar erros. Se eu deixá-lo como qualquer tipo, isso significa que ele pode passar uma tabela ou um valor de data em vez de apenas passar números.
O próximo passo é adicionar a cláusula let e a cláusula in .
Sob a cláusula let, preciso de um nome de variável. Vou chamar essa variável de WDStart .
Agora, preciso testar se o WDStartNum foi aprovado. Se passar, não será igual a null . Então vou declarar que se o WDStartNum não for igual a null, quero que seja retornado um valor .
Quanto à cláusula in, quero que a mesma etapa seja aprovada. Portanto, colocarei WDStart lá, que é o nome que demos à nossa variável anteriormente na cláusula let.
Assim que eu pressionar Concluído, a função será criada. Então, tentarei passar um valor por meio dessa função.
Vou tentar digitar a letra “a”.
Lembre-se que anteriormente declarei que o valor deve ser um número. Como reconhece que o valor inserido não atende a esse requisito, não permite que eu insira esse parâmetro.
Vou deletar isso e deixar o espaço em branco.
Depois de clicar em Invoke, ele retorna um valor de 0.
Voltando à minha consulta original, ele afirma que, se o valor não for igual a null, o WDStartNum deve ser retornado. Se for igual a nulo, um 0 deve ser retornado.
Então esse 0 está correto.
Desta vez, vou tentar passar um valor alterando o número no TestQuery. É verdade que ele retorna um “1” quando eu aperto enter.
Agora, deixe-me tentar passar de 2020 no TestQuery. Depois de apertar enter, ele também retorna 2020.
Evidentemente, não quero que isso aconteça. Como quero um valor que represente o início da semana, quero que apareça 0 ou 1. Isso significa que preciso criar outro teste para ver se o número digitado é 0 ou 1. Posso usar a função List.Contains para isso.
Usando List.Contains
Criei uma consulta em branco e inseri List.Contains sem usar parênteses.
Depois de pressionar enter, posso ver a documentação dessa função.
List.Contains indica se a lista contém um valor.
Portanto, requer uma lista como primeiro parâmetro e, em seguida, um valor é adicionado depois disso. Se esse valor for encontrado dentro da lista, ele retornará verdadeiro. Caso contrário, retornará falso.
Vou abrir o Editor Avançado novamente para que eu possa fazer as alterações necessárias na minha consulta.
Em vez de testar se um valor não é igual a null, vou usar List.Contains .
Agora, darei uma lista de valores a serem aplicados a esta função.
Usarei colchetes como um inicializador de lista. Dentro desses colchetes, vou colocar 0, 1. Vou adicionar uma vírgula depois de fechar esse colchete.
Para o segundo parâmetro, usarei WDStartNum. Em seguida, adicionarei o parêntese de fechamento.
Com isso em vigor, significa que 0 ou 1 deve me fornecer o WDStartNumber. Se algo diferente de 0 ou 1 for colocado, devo obter um resultado de 0.
Deixe-me testar isso colocando 2020 no TestQuery. Como esperado, isso retorna um “0” (zero).
Isso porque o valor 2020 não está na lista.
Adicionando o parâmetro à função M
Agora que tenho certeza de que o código está funcionando, posso finalmente colocá-lo dentro da tabela de datas e da função M. Vou abrir o Editor Avançado e depois vou copiar o logic .
Em seguida, entrarei na consulta da tabela de datas.
Abrirei a função M original por meio do Editor Avançado .
Então, vou colar meu código lá. Vamos garantir que haja uma vírgula no final da linha.
Em seguida, vou realçar e copiar meu parâmetro name .
Então eu vou adicionar esse parâmetro aqui .
Observe que primeiro tenho que adicionar uma vírgula ao final da linha existente e, em seguida, tenho que declarar esse parâmetro como opcional . Então posso colocar WDStartNum e adicionar o tipo .
Eu adicionei o parâmetro e também incorporei a lógica. Mas também preciso ter certeza de obter os resultados esperados. Vou procurar a linha de código que cobre o dia da semana.
Em seguida, adicionarei + WDStart .
Clicarei em Concluído para fechar o editor. Em seguida, vou invocar a consulta.
Para StartDate, colocarei 1º de janeiro de 2020 e, em seguida, usarei 31 de dezembro de 2020 como EndDate.
Usarei “7” como o mês inicial do ano fiscal e, a seguir, colocarei “0” como WDStartNum.
Vou clicar em Invocar. Agora, eu tenho a tabela de datas.
Vou renomeá-lo para garantir que possa ser facilmente identificado.
Agora, vou verificar os resultados.
Esta é a minha coluna DayOfWeek .
Isso mostra que segunda-feira retornou como 0.
Voltando à pergunta do fórum, preciso mudar o número do início da semana para 1 ao invés de 0. Então vou mudar isso só na medida.
Quando pressiono enter, segunda-feira agora será o dia 1 em vez do dia 0.
Olhando para o intervalo de números, agora vai de 1 a 7 em vez de 0 a 6.
O que acontece se eu passar um valor nulo?
Em seguida, o DayOfWeek para segunda-feira volta para 0.
Usando a função M para criar uma tabela de datas estendida do LuckyTemplates
Guia para iniciantes do código M no LuckyTemplates
Configurando uma data inicial e uma data final dinâmicas para tabelas de datas do Power Query
Conclusão
É assim que você pode adicionar um parâmetro adicional diretamente na função M em sua consulta de tabela de datas. O processo não é nada complexo, como mencionei anteriormente. Contanto que você tenha uma fonte para o código M, é fácil a partir daí.
Novamente, você sempre pode conferir o curso Advanced Data Transformations & Modeling no Online se não tiver experiência em como os códigos M funcionam.
Tudo de bom,
melissa
***** Aprendendo LuckyTemplates? *****
Descubra a importância das colunas calculadas no SharePoint e como elas podem realizar cálculos automáticos e obtenção de dados em suas listas.
Descubra todos os atributos pré-atentivos e saiba como isso pode impactar significativamente seu relatório do LuckyTemplates
Aprenda a contar o número total de dias em que você não tinha estoque por meio dessa técnica eficaz de gerenciamento de inventário do LuckyTemplates.
Saiba mais sobre as exibições de gerenciamento dinâmico (DMV) no DAX Studio e como usá-las para carregar conjuntos de dados diretamente no LuckyTemplates.
Este tutorial irá discutir sobre Variáveis e Expressões dentro do Editor do Power Query, destacando a importância de variáveis M e sua sintaxe.
Aprenda a calcular a diferença em dias entre compras usando DAX no LuckyTemplates com este guia completo.
Calcular uma média no LuckyTemplates envolve técnicas DAX para obter dados precisos em relatórios de negócios.
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.