monthstart - funzione dello script e del grafico
Questa funzione restituisce un valore corrispondente a un indicatore temporale recante il primo millisecondo del primo giorno del mese contenente date. Il formato di output predefinito sarà il formato DateFormat impostato nello script.
Sintassi:
MonthStart(date[, period_no])
Tipo di dati restituiti: duale
La funzione monthstart() determina in quale mese cade la data. Restituisce quindi un timestamp, in formato data, per il primo millisecondo di quel mese.
Argomento | Descrizione |
---|---|
date | La data o la data e ora da valutare. |
period_no | period_no è un numero intero che, se corrisponde a 0 o viene omesso, indica il mese contenente date. I valori negativi di period_no indicano i mesi precedenti, mentre i valori positivi indicano i mesi successivi. |
Casi di utilizzo
La funzione monthstart() viene comunemente utilizzata come parte di un'espressione quando l'utente desidera che il calcolo utilizzi la frazione del mese trascorsa finora. Ad esempio, può essere utilizzato per calcolare gli interessi accumulati in un mese fino a una certa data.
Esempio | Risultato |
---|---|
monthstart('10/19/2001') | Restituisce 10/01/2001. |
monthstart('10/19/2001', -1) | Restituisce 09/01/2001. |
Impostazioni locali
Se non diversamente specificato, gli esempi di questo argomento utilizzano il seguente formato di data: MM/GG/AAAA. Il formato della data viene specificato nell'istruzione SET DateFormat nello script di caricamento dei dati. La formattazione predefinita della data potrebbe essere diversa nel proprio sistema, a causa delle impostazioni regionali e di altri fattori. È possibile modificare i formati degli esempi seguenti in base alle proprie esigenze. In alternativa, è possibile modificare i formati nel proprio script di caricamento per adattarli a questi esempi.
Le impostazioni regionali predefinite delle app si basano sulle impostazioni regionali del sistema del computer o del server in cui risulta installato Qlik Sense. Se il server Qlik Sense a cui si accede è impostato in Svezia, l'editor caricamento dati utilizzerà le impostazioni regionali svedesi per date, ora e valuta. Queste impostazioni di formato regionale non riguardano la lingua visualizzata nell'interfaccia utente Qlik Sense. Qlik Sense verrà visualizzato nella stessa lingua del browser utilizzato.
Esempio 1 – Nessun argomento aggiuntivo
Panoramica
Aprire l'editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova scheda.
Lo script di caricamento contiene:
-
Un set di dati contenente un insieme di transazioni per il 2022, caricato in una tabella denominata 'Transactions'.
-
Il campo della data fornito nel formato della variabile di sistema DateFormat (MM/GG/AAAA).
-
La creazione di un campo, start_of_month, che restituisce un timestamp per l'inizio del mese in cui sono avvenute le transazioni.
Script di caricamento
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
];
Risultati
Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:
-
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 |
Il campo 'start_of_month' viene creato nell'istruzione di caricamento precedente mediante l'uso della funzione monthstart() e trasferendo il campo data come argomento della funzione.
La funzione monthstart() identifica in quale mese cade il valore della data, restituendo un timestamp per il primo millisecondo di quel mese.
La transazione 8192 è avvenuta il 16 marzo. La funzione monthstart() restituisce il primo millisecondo di quel mese, ovvero il 1° marzo alle ore 12:00:00 AM.
Esempio 2 – period_no
Panoramica
Aprire l'editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova scheda.
Lo script di caricamento contiene:
-
Vengono utilizzati lo stesso set di dati e lo stesso scenario del primo esempio.
-
La creazione di un campo, previous_month_start, che restituisce il timestamp dell'inizio del mese precedente la transazione.
Script di caricamento
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
];
Risultati
Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:
-
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 |
In questo caso, poiché il valore period_no di -1 è stato utilizzato come argomento offset nella funzione monthstart(), la funzione per prima cosa identifica il mese in cui avvengono le transazioni. Si sposta poi un mese prima e identifica il millisecondo iniziale di tale mese.
La transazione 8192 è avvenuta il 16 marzo. La funzione monthstart() identifica che il mese precedente la transazione è avvenuta in febbraio. Quindi restituisce il primo millisecondo di quel mese, il 1° febbraio alle 12:00:00.
Esempio 3 - Esempio di oggetto grafico
Panoramica
Aprire l'Editor di caricamento dati e aggiungere lo script di caricamento sotto in una nuova scheda.
Lo script di caricamento contiene lo stesso set di dati e lo stesso scenario del primo esempio.
Tuttavia, in questo esempio, il set di dati invariato viene caricato nell'applicazione. Il calcolo che restituisce un timestamp per l'inizio del mese in cui sono avvenute le transazioni viene creato come misura in un oggetto grafico dell'applicazione.
Script di caricamento
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
];
Risultati
Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere questo campo come dimensione: date.
Per calcolare la data di inizio del mese in cui avviene una transazione, creare le seguenti misure:
-
=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 |
La misura start_of_month viene creata nell'oggetto grafico mediante l'utilizzo della funzione monthstart() e trasferendo il campo data come argomento della funzione.
La funzione monthstart() identifica in quale mese cade il valore della data, restituendo un timestamp per il primo millisecondo di quel mese.
La transazione 8192 è avvenuta il 16 marzo. La funzione monthstart() identifica che la transazione ha avuto luogo nel mese di marzo e restituisce il primo millisecondo di quel mese, ovvero il 1° marzo alle 12:00:00 AM.
Esempio 4 – Scenario
Panoramica
Aprire l'editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova scheda.
Lo script di caricamento contiene:
-
Un set di dati contenente un insieme di saldi di prestiti, che viene caricato in una tabella chiamata Loans.
-
Dati costituiti dagli ID dei prestiti, dal saldo all'inizio del mese e dal tasso di interesse semplice annuo applicato a ciascun prestito.
L'utente finale desidera un oggetto grafico che mostri, in base all'ID del prestito, gli interessi correnti che sono stati maturati per ciascun prestito nel mese in corso.
Script di caricamento
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
];
Risultati
Procedere come indicato di seguito:
-
Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:
-
loan_id
-
start_balance
-
-
Quindi, creare una misura per calcolare gli interessi accumulati:
=start_balance*(rate*(today(1)-monthstart(today(1)))/365)
-
Impostare la Formattazione numero della misura su Denaro.
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 |
Utilizzando la data odierna come unico argomento, la funzione monthstart() restituisce la data di inizio del mese corrente. Sottraendo tale risultato dalla data corrente, l'espressione restituisce il numero di giorni trascorsi fino ad ora questo mese.
Questo valore viene quindi moltiplicato per il tasso di interesse e diviso per 365, per restituire il tasso di interesse effettivo incorso per questo periodo. Il risultato viene poi moltiplicato per il saldo iniziale del prestito per ottenere gli interessi maturati fino a ora in questo mese.