# CalcDim - grafik fonksiyonu

CalcDim() bir dimension ifadesinde kullanıldığında motorun ifadeyi dahili olarak yönetme şekliyle ilgili otomatik yorumunu geçersiz kılar. Özellikle bu fonksiyon, veri modelinde yeni bir dahili alanın oluşturulmasını engeller. Bunun yerine, uygulamada yapılan seçimler, orijinal veri modelinden geçerli alanlardaki seçimler olarak ele alınır.

Bu işlev, komut dosyası içinde kullanılamaz. Ek olarak, sistem performansı için en iyi uygulama, hesaplanan boyutta kullanılan alanları mümkün olduğunda komut dosyası aracılığıyla mantıksal alanlar olarak yüklemektir. CalcDim() , hesaplanan alanın komut dosyasından yüklenmesinin mümkün olmadığı senaryolarda motor davranışını kontrol etmenin bir yolunu sunar.

Qlik Sense içinde, boyut ifadesi varsayılan olarak anında oluşturulan bir alan olarak gerçekleştirilir; yani, mevcut seçim çubuğunda görünen, isteğe bağlı olarak oluşturulan gerçek bir alan olarak. Seçimler, komut dosyasından gelen herhangi bir mantıksal alana benzer şekilde bu alana uygulanır ve çıkarılır.

CalcDim() içine sarılmış bir ifade, QlikView içinde tüm hesaplanan boyut ifadelerinin çalıştığı gibi davranacaktır; bu da hesaplanan değerlerin temel kaynak alan değerlerine geçici bir eşlemesidir. Tüm anında alan hesaplamaları, CalcDim() işlevi kullanılarak hesaplanan boyutlara aktarılabilir, çünkü hesaplanan boyut, veri modeline dayalı olarak ilgili anında alan hesaplamasından daha az gereksinimi karşılamak zorundadır. Bu dönüşüm, veri modelinin bazı durumlarda anında alan hesaplamasının kullanımını engelleyebileceği, ancak diğerlerinde engellemeyebileceği tüm hesaplanan boyutlar için benzer bir davranışı garanti etmek amacıyla arzu edilebilir olabilir.

[Hesaplanan Alanlar](https://community.qlik.com/t5/Design/Calculated-Fields/ba-p/1694383)

Söz Dizimi:

CalcDim(expr)

Dönüş verileri türü: dual

Bağımsız Değişkenler

| Bağımsız Değişken | Açıklama |
| --- | --- |
| expr | Boyut olarak kullanılan bir ifade veya bir boyut ifadesi içinde bir segment olarak. |

## Ne zaman kullanılır?

CalcDim(), Qlik motorunun bir boyut ifadesinde çağırdığınız alanları nasıl işlediği üzerinde daha fazla kontrole ihtiyacınız olduğunda kullanışlıdır.

Varsayılan olarak, özel bir boyut ifadesi kullandığınızda Qlik Sense, veri modelinde dahili alanlar oluşturup oluşturmayacağına ve bunlara başvurup başvurmayacağına otomatik olarak karar verir. Qlik Sense mümkün olduğunda bu dahili alanları oluşturur ve kullanır. Mümkün olmadığında, ifade dayandığı mevcut veri modeli alanları referans alınarak ele alınır.

Kullanım durumunuza bağlı olarak, bu otomatik işleme her zaman istenmeyebilir. Örneğin, bir boyut ifadesinde bir değişken kullanıyorsanız, yeni alanların otomatik olarak oluşturulması sorunlu hale gelebilir. Bu durumda, ifadenin bu yöntem olmadan işlenmesini zorlamak için CalcDim() kullanın.

İşte bazı yaygın kullanım durumları:

* QlikView içeriğini Qlik Sense içine taşıdınız ve hesaplanan boyutlar için QlikView işleme yöntemini korumak istiyorsunuz.

* Uygulamanızdaki seçim davranışını basitleştirmek istiyorsunuz. Örneğin, alan seçimlerini yeni alanlardaki seçimler yerine, orijinal veri modelindeki alanlardaki seçimler olarak göstermeyi tercih ediyorsunuz.

* Kullanım durumunuz tutarlılık ve performans için geçici bir ifade gerektiriyor. Örneğin, boyut ifadeniz, kontrol edilebilir biçimlendirme, kesme değerleri veya dönemler gibi kullanıcı tarafından kontrol edilebilir dinamik görselleştirme parametreleri içeriyorsa.

Fonksiyon örnekleri

| Örnek | Sonuç |
| --- | --- |
| `=CalcDim(if(Year < 2023, 'Older', Year))` | Bu boyutu kullanan bir görselleştirmede seçim yapmak, veri modelinden ilgili Year alan değerinde bir seçim olarak işlenecek ve görüntülenecektir.<br><br>Tersine, ifadeyi CalcDim() içine almadığınızı varsayalım. Bu durumda şöyle görünür:<br><br>`=if(Year < 2023, 'Older', Year)`<br><br>Yukarıdaki ifadede bir seçim yapmak, veri modelinde olmayan dahili alan =if(Year &lt; 2023, 'Older', Year) içinde bir seçim olarak işlenir ve görüntülenir. |

## Örnek 1 – Basit karşılaştırma

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

#### Grafik ifadeleri ve sonuçları

Genel bakış

Bu örnekte şunları yapacaksınız:

* Satır içi bir tablo ekleyin ve verileri bir uygulama içine yükleyin.

* Verileri görselleştirmek ve hesaplamalar yapmak için bir tablo oluşturun.

* Davranıştaki farkı gözlemlemek için tabloda seçimler yapın.

Veri yükleme düzenleyicisi bölümünü açın ve aşağıdaki yükleme kodunu yeni bir bölüme ekleyin.

Yükleme komut dosyası satır içi bir tablo yükler. Bu tablo iki alan içerir: kişinin ilk adı için bir alan ve kişinin soyadı için bir alan.

Komut dosyası

```
Names:

Load * inline [
FirstName,LastName
John,Doe
Amanda,Honda
Amalia,Craig
Cart,Lynch
];
```

Tablo oluşturma

Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanları boyut olarak ekleyin:

* FirstName

* LastName

Ardından, aşağıdaki ifadelerin her birini tabloya boyut olarak ekleyin:

* =FirstName & ' ' & LastName

* =CalcDim(FirstName & ' ' & LastName)

Tablo aşağıdaki gibi görünmelidir.

Qlik SenseQlik Sense örnek sonuçlar içeren tablo

| FirstName | LastName | =FirstName & ' ' & LastName | =CalcDim(FirstName & ' ' & LastName) |
| --- | --- | --- | --- |
| John | Doe | John Doe | John Doe |
| Amanda | Honda | Amanda Honda | Amanda Honda |
| Amalia | Craig | Amalia Craig | Amalia Craig |
| Cart | Lynch | Cart Lynch | Cart Lynch |

Karşılaştırma: Seçim Yapma

Tablonun =FirstName & ' ' & LastName sütununda, John Doe değerini seçin. Seçim araç çubuğunda, değerin =FirstName&' '&LastName adlı bir alandan bir değer olarak seçildiğine dikkat edin.

Seçimi temizle.

Tablonun =CalcDim(FirstName & ' ' & LastName) sütununda, John Doe değerini seçin. Seçim araç çubuğunda, değer iki farklı alandan değerler olarak seçilir: FirstName ve LastName.

Bu iki ifade aynı bilgiyi sunar: FirstName ve LastName alanlarının bir birleşimi. Fark şudur ki, CalcDim() olmadan, hesaplamayı depolamak için sentetik bir alan oluşturulur. CalcDim() ile, veri modelindeki orijinal alanlar hesaplanan boyut için temel olarak kullanılır.

## Örnek 2 – Varsayılan davranışı değiştirmek için pratik kullanım durumu

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

#### Grafik ifadeleri ve sonuçları

Genel bakış

Bu örnekte, statik değerlere referanslar yerine bir değişkeni referans alan dinamik boyut ifadeleri oluşturuyoruz.

Bu örnekte şunları yapacaksınız:

* Satır içi bir tablo ekleyin ve uygulamaya veri yükleyin.

* Bir değeri dinamik olarak depolamak için bir değişken oluşturun.

* Verileri görselleştirmek ve hesaplamalar yapmak için bir tablo oluşturun.

* Davranıştaki farkı gözlemlemek için tabloda seçimler yapın.

Veri yükleme düzenleyicisi bölümünü açın ve aşağıdaki yükleme kodunu yeni bir bölüme ekleyin.

Yükleme komut dosyası bir satır içi tablo yükler. Bu tablo bir tarih alanı ve bir hesaplanan alan içerirYear, ham tarihlerden türetilmiştir.

Komut dosyası

```
SET DateFormat='MM/DD/YYYY';
						
Transactions:

Load *,

RowNo() as ID,
Year(date) as Year
;

Load * Inline
[
date,amount
'1/19/2022',37.23
'2/28/2022',88.27
'3/16/2022',53.80
'4/1/2022',82.06
'5/16/2022',87.21
'6/26/2022',45.89
'7/9/2022',36.23
'8/2/2022',76.11
'9/26/2022',84.21
'10/29/2022',67.67
'1/1/2023',100.49
'2/24/2023',99.47
'3/6/2023',50.02
'4/10/2023',2.05
'5/20/2023',75.64
'6/25/2023',98.11
'7/19/2023',30.00
'9/27/2023',76.11
'10/26/2023',43.21
'11/12/2023',135.41
'1/15/2024',67.24
];
```

Değişken oluşturma

Verileri yükleyin ve bir sayfa açın. Adında bir değişken oluşturun vCutoffYear, ve ona aşağıdaki Tanımı verin: 2023

Tablo oluşturma

Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanları boyut olarak ekleyin:

* date

* Year

* amount

Ardından, aşağıdaki ifadelerin her birini tabloya boyut olarak ekleyin:

* =if(Year &lt; $(vCutoffYear), 'Older', Year)

* =CalcDim(if(Year &lt; $(vCutoffYear), 'Older', Year))

Tablo aşağıdaki gibi görünmelidir.

Qlik SenseQlik Sense örnek sonuçlar içeren tablo

| date | Year | amount | if(Year &lt; $(vCutoffYear), 'Older', Year) | =CalcDim(if(Year &lt; $(vCutoffYear), 'Older', Year)) |
| --- | --- | --- | --- | --- |
| 1/19/2022 | 2022 | 37.23 | Older | Older |
| 2/28/2022 | 2022 | 88.27 | Older | Older |
| 3/16/2022 | 2022 | 53.80 | Older | Older |
| 4/1/2022 | 2022 | 82.06 | Older | Older |
| 5/16/2022 | 2022 | 87.21 | Older | Older |
| 6/26/2022 | 2022 | 45.89 | Older | Older |
| 7/9/2022 | 2022 | 36.23 | Older | Older |
| 8/2/2022 | 2022 | 76.11 | Older | Older |
| 9/26/2022 | 2022 | 84.21 | Older | Older |
| 10/29/2022 | 2022 | 67.67 | Older | Older |
| 1/1/2023 | 2023 | 100.49 | 2023 | 2023 |
| 2/24/2023 | 2023 | 99.47 | 2023 | 2023 |
| 3/6/2023 | 2023 | 50.02 | 2023 | 2023 |
| 4/10/2023 | 2023 | 2.05 | 2023 | 2023 |
| 5/20/2023 | 2023 | 75.64 | 2023 | 2023 |
| 6/25/2023 | 2023 | 98.11 | 2023 | 2023 |
| 7/19/2023 | 2023 | 30.00 | 2023 | 2023 |
| 9/27/2023 | 2023 | 76.11 | 2023 | 2023 |
| 10/26/2023 | 2023 | 43.21 | 2023 | 2023 |
| 11/12/2023 | 2023 | 135.41 | 2023 | 2023 |
| 1/15/2024 | 2024 | 67.24 | 2024 | 2024 |

Karşılaştırmalar, bölüm 1: CalcDim() olmadan davranış

Yukarıdaki tabloda, iki hesaplanan boyut sütunu arasında fark yoktur.

Tablonun if(Year &lt; $(vCutoffYear), 'Older', Year) sütununda, 2023 değerini seçin. Seçim araç çubuğunda, değerin =if(Year&lt;2023,'Older',Year) adlı bir alandan bir değer olarak seçildiğini fark edin.

Ardından, vCutoffYear değişkeninin Tanımını 2024 olarak değiştirin. Seçim alanı =if(Year&lt;2023,'Older',Year) aynı kalıp seçilen değeri 2023 korurken, tablodaki verilerin değiştiğini fark edin. 2023 değeri, Older değerine değişti. if(Year &lt; $(vCutoffYear), 'Older', Year) sütununda Older seçerseniz, seçim Older yeni bir alanda yapılır: =if(Year&lt;2024,'Older',Year).

Esasen, vCutoffYear değişkeninin her değeri için dahili olarak yeni bir alan oluşturulur. Eşzamanlı ve değişen seçimlerle çalışırken, bu davranış istenmeyebilir ve veri yorumlamaya karmaşıklık katabilir.

Karşılaştırmalar, bölüm 2: CalcDim() ile davranış

CalcDim() içine sarılmadığında ifadenin davranışını gördüğünüz için, uygulamadaki tüm seçimleri temizleyin. vCutoffYear değişkenini 2023 değerine sıfırlayın.

Tablonun =CalcDim(if(Year &lt; $(vCutoffYear), 'Older', Year)) sütununda, 2023 değerini seçin. Seçim araç çubuğunda, değerin temel alınan alan olan Year içinden bir değer olarak seçildiğini fark edin.

Sonraki olarak, vCutoffYear değişkeninin Tanımını 2024 olarak değiştirin. Year seçim alanı aynıdır, seçilen 2023 değerini korur ve tablodaki veriler CalcDim() olmadan görüldüğü gibi değişmiştir. Ancak, şimdi =CalcDim(if(Year &lt; $(vCutoffYear), 'Older', Year)) sütununda Older öğesini seçerseniz, Year içinde 2024 değeri seçilir.

CalcDim() ile sarılmış hesaplanan bir boyutta yaptığınız tüm seçimler, orijinal veri modelinden referans alınan temel alanlarda seçim olarak yansıtılacaktır. Bu, veri yorumlamayı basitleştirebilir ve kullanıcılar analitik içeriği tükettiğinde, dağınık, karmaşık ifadelerin seçim araç çubuğunda görünmesini engeller.

## Daha fazla bilgi

* [Hesaplanan Alanlar](https://community.qlik.com/t5/Design/Calculated-Fields/ba-p/1694383)

* [Hesaplamalı boyutlar](https://help.qlik.com/tr-TR/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Dimensions/calculated-dimensions.htm)