monthstart – função de script e gráfico
Esta função retorna um valor correspondente à data/hora com o primeiro milissegundo do primeiro dia do mês que contém date. O formato de saída padrão será o DateFormat definido no script.
Sintaxe:
MonthStart(date[, period_no])
Tipo de dados de retorno: dual
A função monthstart() determina em qual mês a data cai. Em seguida, ela retorna um carimbo de data/hora, em formato de data, para o primeiro milissegundo daquele mês.
Argumento | Descrição |
---|---|
date | A data ou o carimbo de data/hora a ser avaliado. |
period_no | period_no é um inteiro, no qual, se 0 ou omitido, indica o mês que contém date. Valores negativos em period_no indicam meses precedentes e valores positivos indicam meses sucessivos. |
Quando usar
A função monthstart() é comumente usada como parte de uma expressão quando o usuário deseja que o cálculo use a fração do mês decorrido até o momento. Por exemplo, ela pode ser usada para calcular os juros acumulados em um mês até uma determinada data.
Exemplo | Resultado |
---|---|
monthstart('10/19/2001') | Retorna 10/01/2001. |
monthstart('10/19/2001', -1) | Retorna 09/01/2001. |
Configurações regionais
A menos que especificado de outra forma, os exemplos neste tópico usam o seguinte formato de data: MM/DD/AAAA. O formato de data é especificado na instrução SET DateFormat no seu script de carregamento de dados. A formatação de data padrão pode ser diferente no seu sistema devido às suas configurações regionais e outros fatores. Você pode alterar os formatos nos exemplos abaixo para atender às suas necessidades. Ou pode alterar os formatos no seu script de carregamento para corresponder a esses exemplos.
As configurações regionais padrão nos aplicativos são baseadas nas configurações regionais do sistema do computador ou servidor em que o Qlik Sense está instalado. Se o servidor Qlik Sense que você está acessando estiver definido como Suécia, o Editor de carregamento de dados usará as configurações regionais suecas para datas, horas e moedas. Essas configurações de formato regional não estão relacionadas ao idioma exibido na interface do usuário do Qlik Sense. O Qlik Sense será exibido no mesmo idioma do navegador que você está usando.
Exemplo 1: Sem argumentos adicionais
Visão geral
Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova guia.
O script de carregamento contém:
-
Um conjunto de dados contendo um conjunto de transações para 2022, que é carregado em uma tabela chamada Transactions.
-
O campo de data fornecido no formato da variável de sistema DateFormat (MM/DD/AAAA).
-
A criação de um campo, start_of_month, que retorna um carimbo de data/hora para o início do mês em que as transações ocorreram.
Script de carregamento
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
monthstart(date) as start_of_month,
timestamp(monthstart(date)) as start_of_month_timestamp
;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
Resultados
Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:
-
date
-
start_of_month
-
start_of_month_timestamp
date | start_of_month | start_of_month_timestamp |
---|---|---|
1/7/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
1/19/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
2/5/2022 | 02/01/2022 | 2/1/2022 12:00:00 AM |
2/28/2022 | 02/01/2022 | 2/1/2022 12:00:00 AM |
3/16/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
4/1/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
5/7/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
5/16/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
6/15/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
6/26/2022 | 07/01/2022 | 6/1/2022 12:00:00 AM |
7/9/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
7/22/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
7/23/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
7/27/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
8/2/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
8/8/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
8/19/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
9/26/2022 | 09/01/2022 | 9/1/2022 12:00:00 AM |
10/14/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |
10/29/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |
O campo start_of_month é criado na instrução de carregamento anterior usando a função monthstart() e transmitindo o campo de data como o argumento da função.
A função monthstart() identifica em qual mês o valor da data cai, retornando um carimbo de data/hora para o primeiro milissegundo desse mês.
A transação 8192 ocorreu em 16 de março. A função monthstart() retorna o primeiro milissegundo desse mês, que é 1º de março às 12:00:00 AM.
Exemplo 2: period_no
Visão geral
Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova guia.
O script de carregamento contém:
-
O mesmo conjunto de dados e cenário do primeiro exemplo.
-
A criação de um campo, previous_month_start, que retorna o carimbo de data/hora inicial do mês antes da transação.
Script de carregamento
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
monthstart(date,-1) as previous_month_start,
timestamp(monthstart(date,-1)) as previous_month_start_timestamp
;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
Resultados
Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:
-
date
-
previous_month_start
-
previous_month_start_timestamp
date | previous_month_start | previous_month_start_timestamp |
---|---|---|
1/7/2022 | 12/01/2021 | 12/1/2021 12:00:00 AM |
1/19/2022 | 12/01/2021 | 12/1/2021 12:00:00 AM |
2/5/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
2/28/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
3/16/2022 | 02/01/2022 | 2/1/2022 12:00:00 AM |
4/1/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
5/7/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
5/16/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
6/15/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
6/26/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
7/9/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
7/22/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
7/23/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
7/27/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
8/2/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
8/8/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
8/19/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
9/26/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
10/14/2022 | 09/01/2022 | 9/1/2022 12:00:00 AM |
10/29/2022 | 09/01/2022 | 9/1/2022 12:00:00 AM |
Nesse caso, como um period_no de -1 foi usado como o argumento offset na função monthstart(), a função primeiro identifica o mês em que as transações ocorrem. Em seguida, ela muda um mês antes e identifica o primeiro milissegundo desse mês.
A transação 8192 ocorreu em 16 de março. A função monthstart() identifica que o mês anterior à realização da transação foi em fevereiro. Em seguida, ela retorna o primeiro milissegundo desse mês, 1º de fevereiro, às 12h00.
Exemplo 3: Exemplo de objeto de gráfico
Visão geral
Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova guia.
O script de carregamento contém o mesmo conjunto de dados e cenário do primeiro exemplo.
No entanto, neste exemplo, o conjunto de dados inalterado é carregado no aplicativo. O cálculo que retorna um carimbo de data/hora para o início do mês em que as transações ocorreram é criado como uma medida em um objeto de gráfico do aplicativo.
Script de carregamento
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
Resultados
Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esse campo como uma dimensão: date.
Para calcular a data de início do mês em que uma transação ocorre, crie as seguintes medidas:
-
=monthstart(date)
- =timestamp(monthstart(date))
date | =monthstart(date) | =timestamp(monthstart(date)) |
---|---|---|
10/14/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |
10/29/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |
9/26/2022 | 09/01/2022 | 9/1/2022 12:00:00 AM |
8/2/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
8/8/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
8/19/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
7/9/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
7/22/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
7/23/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
7/27/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
6/15/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
6/26/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
5/7/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
5/16/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
4/1/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
3/16/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
2/5/2022 | 02/01/2022 | 2/1/2022 12:00:00 AM |
2/28/2022 | 02/01/2022 | 2/1/2022 12:00:00 AM |
1/7/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
1/19/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
A medida start_of_month é criada no objeto de gráfico usando a função monthstart() e transmitindo o campo de data como o argumento da função.
A função monthstart() identifica em qual mês o valor da data cai, retornando um carimbo de data/hora para o primeiro milissegundo desse mês.
A transação 8192 ocorreu em 16 de março. A função monthstart() identifica que a transação ocorreu em março e retorna o primeiro milissegundo desse mês, que é 1º de março às 12:00:00 AM.
Exemplo 4: Cenário
Visão geral
Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova guia.
O script de carregamento contém:
-
Um conjunto de dados contendo um conjunto de saldos de empréstimos, que é carregado em uma tabela denominada Loans.
-
Dados que consistem em IDs de empréstimos, saldo no início do mês e taxa de juros simples cobrada em cada empréstimo por ano.
O usuário final deseja um objeto de gráfico que mostre, por ID de empréstimo, os juros atuais que foram acumulados em cada empréstimo no mês até o momento.
Script de carregamento
SET DateFormat='MM/DD/YYYY';
Loans:
Load
*
Inline
[
loan_id,start_balance,rate
8188,$10000.00,0.024
8189,$15000.00,0.057
8190,$17500.00,0.024
8191,$21000.00,0.034
8192,$90000.00,0.084
];
Resultados
Faça o seguinte:
-
Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:
-
loan_id
-
start_balance
-
-
Em seguida, crie uma medida para calcular os juros acumulados:
=start_balance*(rate*(today(1)-monthstart(today(1)))/365)
-
Defina o Formato numérico da medida como Dinheiro.
loan_id | start_balance | =start_balance*(rate*(today(1)-monthstart(today(1)))/365) |
---|---|---|
8188 | $10000.00 | $16.44 |
8189 | $15000.00 | $58.56 |
8190 | $17500.00 | $28.77 |
8191 | $21000.00 | $48.90 |
8192 | $90000.00 | $517.81 |
A função monthstart(), usando a data de hoje como seu único argumento, retorna a data de início do mês atual. Ao subtrair esse resultado da data atual, a expressão retorna o número de dias decorridos até o momento neste mês.
Esse valor é então multiplicado pela taxa de juros e dividido por 365 para retornar a taxa de juros efetiva acumulada do período. O resultado é então multiplicado pelo saldo inicial do empréstimo para retornar os juros acumulados até o momento neste mês.