# inmonths - skript- och diagramfunktion

Med den här funktionen får vi reda på om en tidsmarkör faller inom samma månad, tvåmånadersperiod, fyramånadersperiod eller halvår som basdatum. Det går även att se om tidsmarkören finns inom en föregående eller senare tidsperiod.

Syntax:

InMonths(n\_months, timestamp, base\_date, period\_no [, first\_month\_of\_year])

Returnerad datatyp: Boolesk

I Qlik Sense, representeras det booleska sanna värdet av -1, och det falska värdet representeras av 0.

Diagram för funktionen `inmonths()`

Diagram för funktionen `inmonths()`

Diagram för funktionen `inmonths()`inmonths() ![Diagram som visar det tidsintervall under vilket inmonths()-funktionen kommer att utvärdera ett basdatum som sant eller falskt.](https://help.qlik.com/sv-SE/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-diagram1.png)

`inmonths()`-funktionen delar in året i segment baserat på det `n_months`-argument som tillhandahålls. Därefter avgör den huruvida varje tidsmarkör som utvärderas infaller i samma segment som `base_date`-argumentet. Men om ett `period_no`-argument tillhandahålls avgör funktionen huruvuda tidsmarkörerna infaller under en tidigare eller följande period från `base_date`.

Följande segment av året är tillgängliga i funktionen som `n_month`-argument.

`n_month`n\_month-argument

| Period | Antal månader |
| --- | --- |
| månad | 1 |
| två månader | 2 |
| kvartal | 3 |
| fyra månader | 4 |
| halvår | 6 |

Användning

Funktionen `inmonths()` returnerar ett booleskt resultat. Vanligtvis kommer denna typ av funktion att användas som ett villkor i en `if expression`. Genom att använda `inmonths()`-funktionen kan du välja den period som du vill utvärdera. Exempelvis, låta användaren identifiera produkter som tillverkats under en månad, ett kvartal eller ett halvår i en viss period.

Returnerad datatyp: Boolesk

I Qlik Sense, representeras det booleska sanna värdet av -1, och det falska värdet representeras av 0.

Argument

| Argument | Beskrivning |
| --- | --- |
| n\_months | Antalet månader som definierar perioden. Ett heltal eller uttryck vars resultat blir ett heltal som ska vara antingen: 1 (motsvaras av inmonth()-funktionen), 2 (tvåmånadersperiod), 3 (motsvaras av inquarter()-funktionen), 4 (fyramånadersperiod) eller 6 (halvår). |
| timestamp | Det datum du vill jämföra mot base\_date. |
| base\_date | Datum som används för att utvärdera perioden. |
| period\_no | Periodens startpunkt kan flyttas med period\_no, ett heltal, eller ett uttryck som resulterar i ett heltal, där värdet 0 anger den period som innehåller base\_date. Negativa värden i period\_no anger föregående perioder och positiva värden anger efterföljande perioder. |
| first\_month\_of\_year | Om du vill arbeta med (budget)år som inte börjar i januari kan du ange ett värde mellan 2 och 12 i first\_month\_of\_year. |

Du kan använda följande värden för att ställa in den första månaden på året i argumentet `first_month_of_year`:

first\_month\_of\_year values

| Månad | Värde |
| --- | --- |
| februari | 2 |
| mars | 3 |
| april | 4 |
| Maj | 5 |
| juni | 6 |
| juli | 7 |
| augusti | 8 |
| september | 9 |
| oktober | 10 |
| november | 11 |
| december | 12 |

## Lokala inställningar

Om inget annat anges använder exemplen i detta ämne följande datumformat: MM/DD/ÅÅÅÅ. Datumformatet anges i `SET DateFormat`-satsen i datainläsningsskriptet. Förvald datumformatering kan vara annorlunda i ditt system, på grund av dina regionala inställningar och andra faktorer. Du kan ändra formaten i exemplen nedan så att det passar dina krav. Eller så kan du ändra formaten i ditt laddningsskript så att de matchar dessa exempel.

Standardregionalinställningar i appar baseras på de regionala systeminställningarna för datorn eller servern där Qlik Sense är installerad. Om Qlik Sense-servern du ansluter till är inställd på Sverige så kommer skriptredigeraren använda regionala inställningar för Sverige för datum, tid och valuta. Dessa regionala formatinställningar är inte relaterade till språket som visas i Qlik Sense användargränssnittet. Qlik Sense kommer att visas på samma språk som webbläsaren du använder.

Exempel på funktioner

| Exempel | Resultat |
| --- | --- |
| `inmonths(4, '01/25/2013', '04/25/2013', 0)` | Returnerar TRUE Eftersom värdet för timestamp, 01/25/2013, befinner sig inom fyramånadersperioden 2013-01-01 till 2013-04-30 där värdet för `base_date`, 04/25/2013 finns. |
| `inmonths(4, '05/25/2013', '04/25/2013', 0)` | Returnerar FALSE Eftersom 05/25/2013 är utanför samma period som i förra exemplet. |
| `inmonths(4, '11/25/2012', '02/01/2013', -1 )` | Returnerar TRUE Eftersom värdet för `period_no`, `-1`, flyttar sökperioden bakåt en period på fyra månader (värdet för n-months), vilket gör sökperioden till 09/01/2012 till 12/31/2012. |
| `inmonths(4, '05/25/2006', '03/01/2006', 0, 3)` | Returnerar TRUE Eftersom värdet för `first_month_of_year` är angett som `3`, vilket gör sökperioden till 2006-03-01 till 2006-07-30 istället för 2006-01-01 till 2006-04-30. |

## Exempel 1 – inga ytterligare argument

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inmonths.htm)

#### Laddningsskript och resultat

Översikt

Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.

Laddningsskriptet innehåller:

* En datauppsättning som innehåller en uppsättning transaktioner för 2022 laddas i en tabell som heter `Transactions`.

* En föregående laddning med en extra variabel, `in_months`, som avgör vilka transaktioner som ägde rum under samma kvartal som 15 maj 2022.

Laddningsskript

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
       *, 
       inmonths(3,date,'05/15/2022', 0) as in_months 
       ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'2/19/2022',37.23 
8189,'3/7/2022',17.17 
8190,'3/30/2022',88.27 
8191,'4/5/2022',57.42 
8192,'4/16/2022',53.80 
8193,'5/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/22/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 
]; 
```

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* `date`
* `in_months`

Resultattabell

| date | in\_months |
| --- | --- |
| 2/19/2022 | 0 |
| 3/7/2022 | 0 |
| 3/30/2022 | 0 |
| 4/5/2022 | -1 |
| 4/16/2022 | -1 |
| 5/1/2022 | -1 |
| 5/7/2022 | -1 |
| 5/22/2022 | -1 |
| 6/15/2022 | -1 |
| 6/26/2022 | -1 |
| 7/9/2022 | 0 |
| 7/22/2022 | 0 |
| 7/23/2022 | 0 |
| 7/27/2022 | 0 |
| 8/2/2022 | 0 |
| 8/8/2022 | 0 |
| 8/19/2022 | 0 |
| 9/26/2022 | 0 |
| 10/14/2022 | 0 |
| 10/29/2022 | 0 |

`in_months`-fältet skapas i föregående LOAD-sats med hjälp av funktionen `inmonths()`. Det första argumentet som tillhandahålls är `3`, som delar upp året i kvartalssegment. Det andra argumentet som anges identifierar vilket fält som utvärderas, datumfältet i det här exemplet. Det tredje argumentet är ett hårdkodat datum för 15 maj, som är `base_date` och ett `period_no` av `0` är det sista argumentet.

Diagrammet över `inmonths()`-funktionen med kvartalssegment

Diagrammet över `inmonths()`-funktionen med kvartalssegment

Diagrammet över `inmonths()`inmonths()-funktionen med kvartalssegment![Diagram som visar det tidsintervall som utvärderas av inmonths()-funktionen med 15 maj som basdatum, och året indelat i kvartalssegment.](https://help.qlik.com/sv-SE/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-examples1_and4-diagram.png)

Maj infaller under årets andra kvartal. Därför kommer alla transaktioner som sker mellan 1 april och 30 juni att returnera det booleska resultatet TRUE. Det här valideras i resultattabellen.

## Exempel 2 – period\_no

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inmonths.htm)

#### Laddningsskript och resultat

Översikt

Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.

Laddningsskriptet innehåller:

* En datauppsättning som innehåller en uppsättning transaktioner för 2022 laddas i en tabell som heter `Transactions`.

* En föregående laddning med en extra variabel, `previous_quarter`, som avgör huruvida transaktionerna ägde rum under kvartalet före 15 maj 2022.

Laddningsskript

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
       *, 
       inmonths(3,date,'05/15/2022', -1) as previous_quarter 
       ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'2/19/2022',37.23 
8189,'3/7/2022',17.17 
8190,'3/30/2022',88.27 
8191,'4/5/2022',57.42 
8192,'4/16/2022',53.80 
8193,'5/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/22/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 
]; 
```

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* `date`
* `previous_quarter`

Resultattabell

| date | föregående kvartal |
| --- | --- |
| 2/19/2022 | -1 |
| 3/7/2022 | -1 |
| 3/30/2022 | -1 |
| 4/5/2022 | 0 |
| 4/16/2022 | 0 |
| 5/1/2022 | 0 |
| 5/7/2022 | 0 |
| 5/22/2022 | 0 |
| 6/15/2022 | 0 |
| 6/26/2022 | 0 |
| 7/9/2022 | 0 |
| 7/22/2022 | 0 |
| 7/23/2022 | 0 |
| 7/27/2022 | 0 |
| 8/2/2022 | 0 |
| 8/8/2022 | 0 |
| 8/19/2022 | 0 |
| 9/26/2022 | 0 |
| 10/14/2022 | 0 |
| 10/29/2022 | 0 |

Funktionen utvärderar huruvuda transaktioner inträffade under årets första kvartal genom att använda `-1` som `period_no` argument i `inmonths()`-funktionen. 15 maj är `base_date` och infaller under årets andra kvartal (april-juni).

Diagrammet över `inmonths()`-funktionen med kvartalssegment och `period_no` inställd till `-1`

Diagrammet över `inmonths()`-funktionen med kvartalssegment och `period_no` inställd till `-1`

Diagrammet över `inmonths()`inmonths()-funktionen med kvartalssegment och `period_no`period\_no inställd till `-1`-1![Diagram som visar det tidsintervall som utvärderas av inmonths()-funktionen med 15 maj som basdatum, året indelat i kvartalssegment och period_no inställt till -1 vilket ställer tillbaka tidsintervallet med ett kvartal.](https://help.qlik.com/sv-SE/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-example2-diagram.png)

Därför kommer alla transaktioner som sker mellan januari och mars returnera det booleska resultatet TRUE.

## Exempel 3 – first\_month\_of\_year

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inmonths.htm)

#### Laddningsskript och resultat

Översikt

Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.

Laddningsskriptet innehåller:

* En datauppsättning som innehåller en uppsättning transaktioner för 2022 laddas i en tabell som heter `Transactions`.

* En föregående laddning med en extra variabel, `in_months`, som avgör vilka transaktioner som ägde rum under samma kvartal som 15 maj 2022.

I det här exemplet är organisationspolicyn att mars är den första månaden i räkenskapsåret.

Laddningsskript

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
       *, 
       inmonths(3,date,'05/15/2022', 0, 3) as in_months 
       ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'2/19/2022',37.23 
8189,'3/7/2022',17.17 
8190,'3/30/2022',88.27 
8191,'4/5/2022',57.42 
8192,'4/16/2022',53.80 
8193,'5/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/22/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 
]; 
```

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* `date`
* `in_months`

Resultattabell

| date | in\_months |
| --- | --- |
| 2/19/2022 | 0 |
| 3/7/2022 | -1 |
| 3/30/2022 | -1 |
| 4/5/2022 | -1 |
| 4/16/2022 | -1 |
| 5/1/2022 | -1 |
| 5/7/2022 | -1 |
| 5/22/2022 | -1 |
| 6/15/2022 | 0 |
| 6/26/2022 | 0 |
| 7/9/2022 | 0 |
| 7/22/2022 | 0 |
| 7/23/2022 | 0 |
| 7/27/2022 | 0 |
| 8/2/2022 | 0 |
| 8/8/2022 | 0 |
| 8/19/2022 | 0 |
| 9/26/2022 | 0 |
| 10/14/2022 | 0 |
| 10/29/2022 | 0 |

Genom att använda `3`som `first_month_of_year`-argument i `inmonths()`-funktionen startar funktionen året den 1 mars. `inmonths()`-funktionen delar sedan upp året i kvartal: mar-maj, jun-aug, sep-nov, dec-feb. Därför infaller 15 maj under årets första kvartal (mars-maj).

Diagram för `inmonths()`-funktionen med mars inställt som årets första månad.

Diagram för `inmonths()`-funktionen med mars inställt som årets första månad.

Diagram för `inmonths()`inmonths()-funktionen med mars inställt som årets första månad.![Diagram som visar det tidsintervall som utvärderas av inmonths()-funktionen med 15 maj som basdatum, året indelat i kvartalssegment och mars inställt som årets första månad.](https://help.qlik.com/sv-SE/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-example3-diagram.png)

Alla transaktioner som inträffar under dessa månader returnerar det booleska värdet TRUE.

## Exempel 4 – Diagramobjektexempel

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inmonths.htm)

#### Laddningsskript och diagramuttryck

Översikt

Samma datauppsättning och scenario som det första exemplet används.

I det här exemplet är dock datauppsättningen oförändrad och har laddats i programmet. Beräkningen som avgör om transaktioner har skett i samma kvartal som den 15 maj 2022 skapas som ett mått i ett diagram i appen.

Laddningsskript

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'2/19/2022',37.23 
8189,'3/7/2022',17.17 
8190,'3/30/2022',88.27 
8191,'4/5/2022',57.42 
8192,'4/16/2022',53.80 
8193,'5/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/22/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 
]; 
```

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till det här fältet som en dimension:

* `date`

För att beräkna om transaktioner ägde rum under samma kvartal som 15 maj skapar du följande mått:

`=inmonths(3,date,'05/15/2022', 0)`

Resultattabell

| date | =inmonths(3,date,'05/15/2022', 0) |
| --- | --- |
| 2/19/2022 | 0 |
| 3/7/2022 | 0 |
| 3/30/2022 | 0 |
| 4/5/2022 | -1 |
| 4/16/2022 | -1 |
| 5/1/2022 | -1 |
| 5/7/2022 | -1 |
| 5/22/2022 | -1 |
| 6/15/2022 | -1 |
| 6/26/2022 | -1 |
| 7/9/2022 | 0 |
| 7/22/2022 | 0 |
| 7/23/2022 | 0 |
| 7/27/2022 | 0 |
| 8/2/2022 | 0 |
| 8/8/2022 | 0 |
| 8/19/2022 | 0 |
| 9/26/2022 | 0 |
| 10/14/2022 | 0 |
| 10/29/2022 | 0 |

`in_months`-fältet skapas i diagrammet genom att använda `inmonths()`-funktionen. Det första argumentet som tillhandahålls är `3`, som delar upp året i kvartalssegment. Det andra argumentet som anges identifierar vilket fält som utvärderas, datumfältet i det här exemplet. Det tredje argumentet är ett hårdkodat datum för 15 maj, som är `base_date` och ett `period_no` av `0` är det sista argumentet.

Diagrammet över `inmonths()`-funktionen med kvartalssegment

Diagrammet över `inmonths()`-funktionen med kvartalssegment

Diagrammet över `inmonths()`inmonths()-funktionen med kvartalssegment![Diagram som visar det tidsintervall som utvärderas av inmonths()-funktionen med 15 maj som basdatum, och året indelat i kvartalssegment.](https://help.qlik.com/sv-SE/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-examples1_and4-diagram.png)

Maj infaller under årets andra kvartal. Därför kommer alla transaktioner som sker mellan 1 april och 30 juni att returnera det booleska resultatet TRUE. Det här valideras i resultattabellen.

## Exempel 5 – Scenario

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inmonths.htm)

#### Laddningsskript och resultat

Översikt

Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.

Laddningsskriptet innehåller:

* En datauppsättning laddas i en tabell som heter Products.

* Tabellen innehåller följande fält:

  * produkt-ID

  * produkttyp

  * tillverkningsdatum

  * kostnadspris

Slutanvändaren vill ha ett diagramobjekt som visar, per produkttyp, kostnaden för produkterna som tillverkats under det första segmentet av 2021. Användaren vill kunna definiera det här segmentets längd.

Laddningsskript

```
SET vPeriod = 1; 

Products: 
Load 
* 
Inline  
[ 
product_id,product_type,manufacture_date,cost_price 
8188,product A,'2/19/2022',37.23 
8189,product D,'3/7/2022',17.17 
8190,product C,'3/30/2022',88.27 
8191,product B,'4/5/2022',57.42 
8192,product D,'4/16/2022',53.80 
8193,product D,'5/1/2022',82.06 
8194,product A,'5/7/2022',40.39 
8195,product B,'5/22/2022',87.21 
8196,product C,'6/15/2022',95.93 
8197,product B,'6/26/2022',45.89 
8198,product C,'7/9/2022',36.23 
8199,product D,'7/22/2022',25.66 
8200,product D,'7/23/2022',82.77 
8201,product A,'7/27/2022',69.98 
8202,product A,'8/2/2022',76.11 
8203,product B,'8/8/2022',25.12 
8204,product B,'8/19/2022',46.23 
8205,product B,'9/26/2022',84.21 
8206,product C,'10/14/2022',96.24 
8207,product D,'10/29/2022',67.67 
];
```

Resultat

Ladda data och öppna ett ark.

I början av laddningsskriptet har en variabel, vPeriod, skapats som är kopplad till variabelinmatningskontrollen.

Gör följande:

1. Klicka på Anpassade objekti resurspanelen.

2. Välj Qlik instrumentpanelspaket och skapa ett variabelinmatningsobjekt.

3. Ange en titel för diagramobjektet.

4. Under Variabel väljer du vPeriod som namn och ställer in objektet så att det visas som en rullgardinsmeny.

5. Under Värden klickar du på Dynamiska värden. Ange följande:

   ```
   ='1~month|2~bi-month|3~quarter|4~tertial|6~half-year'.
   ```

6. Lägg till en ny tabell i arket.

7. I egenskapspanelen under Data lägger du till product\_type som en dimension.

8. Lägg till följande uttryck som ett mått:

   =sum(if(inmonths($(vPeriod),manufacture\_date,makedate(2022,01,01),0),cost\_price,0))

9. Ange måttens Nummerformatering till Pengar.

Resultattabell

| product\_type | =sum(if(inmonths($(vPeriod),manufacture\_date,makedate(2022,01,01),0),cost\_price,0)) |
| --- | --- |
| produkt A | $88.27 |
| produkt B | $37.23 |
| produkt C | $17.17 |
| produkt D | $0.00 |

inmonths()-funktionen använder användarindata som sitt argument för att definiera storleken på startsegmentet för året. Funktionen skickar tillverkningsdatumet för var och en av produkterna som inmonths()-funktionens andra argument. Genom att använda 1 januari som det tredje argumentet i inmonths()-funktionen kommer produkter med tillverkningsdatum under årets öppningssegment att returnera det booleska värdet TRUE och därför kommer summafunktionen att lägga till kostnaden för de här produkterna.