Bagikan melalui


IIf (MDX)

Mengevaluasi ekspresi cabang yang berbeda tergantung pada apakah kondisi Boolean benar atau salah.

Sintaks

  
IIf(Logical_Expression, Expression1 [HINT <hints>], Expression2 [HINT <hints>])  

Argumen

Fungsi IIf mengambil tiga argumen: iif(<condition>, <lalu branch>, <else branch>).

Logical_Expression
Kondisi yang mengevaluasi ke true (1) atau false (0). Ini harus berupa ekspresi logis Ekspresi Multidimensi (MDX) yang valid.

Ekspresi1 Petunjuk [Bersemangat|Ketat|Malas]]
Digunakan saat ekspresi logis mengevaluasi ke true. Ekspresi1 harus berupa ekspresi Ekspresi Multidmensional (MDX) yang valid.

Petunjuk Ekspresi2 [Bersemangat|Ketat|Malas]]
Digunakan saat ekspresi logis mengevaluasi ke false. Ekspresi2 harus berupa ekspresi Ekspresi Multidmensional (MDX) yang valid.

Keterangan

Kondisi yang ditentukan oleh ekspresi logis mengevaluasi ke false ketika nilai ekspresi ini adalah nol. Nilai lain mengevaluasi ke true.

Saat kondisi benar, fungsi IIf mengembalikan ekspresi pertama. Jika tidak, fungsi mengembalikan ekspresi kedua.

Ekspresi yang ditentukan dapat mengembalikan nilai atau objek MDX. Selain itu, ekspresi yang ditentukan tidak perlu cocok dalam jenis.

Fungsi IIf tidak disarankan untuk membuat sekumpulan anggota berdasarkan kriteria pencarian. Sebagai gantinya , gunakan fungsi Filter untuk mengevaluasi setiap anggota dalam set tertentu terhadap ekspresi logis dan mengembalikan subset anggota.

Catatan

Jika salah satu ekspresi mengevaluasi ke NULL, kumpulan hasil akan menjadi NULL ketika kondisi tersebut terpenuhi.

Petunjuk adalah pengubah opsional yang menentukan bagaimana dan kapan ekspresi dievaluasi. Ini memungkinkan Anda untuk mengambil alih rencana kueri default dengan menentukan bagaimana ekspresi dievaluasi.

  • EAGER mengevaluasi ekspresi melalui subspace IIF asli.

  • STRICT mengevaluasi ekspresi hanya di sub-ruang terbatas yang dibuat oleh ekspresi kondisi logis.

  • LAZY mengevaluasi ekspresi dalam mode sel demi sel.

Meskipun EAGER dan STRICT hanya berlaku untuk cabang IIF yang lain, LAZY berlaku untuk semua ekspresi MDX. Ekspresi MDX apa pun dapat diikuti oleh HINT LAZY yang akan mengevaluasi ekspresi tersebut dalam mode sel demi sel.

EAGER dan STRICT saling eksklusif dalam petunjuk; mereka dapat digunakan dalam IIF(,,) yang sama melalui ekspresi yang berbeda.

Untuk informasi selengkapnya, lihat Petunjuk Kueri Fungsi IIF di SQL Server Analysis Services 2008 dan Rencana Eksekusi dan Petunjuk Rencana untuk Fungsi IIF MDX dan Pernyataan KASUS.

Contoh

Kueri berikut menunjukkan penggunaan IIF sederhana di dalam pengukuran terhitung untuk mengembalikan salah satu dari dua nilai string yang berbeda saat ukuran Jumlah Penjualan Internet lebih besar atau kurang dari $10000:

WITH MEMBER MEASURES.IIFDEMO AS

IIF([Measures].[Internet Sales Amount]>10000

, "Sales Are High", "Sales Are Low")

SELECT {[Measures].[Internet Sales Amount],MEASURES.IIFDEMO} ON 0,

[Date].[Date].[Date].MEMBERS ON 1

FROM [Adventure Works]

Penggunaan IIF yang sangat umum adalah menangani kesalahan 'pembagian berdasarkan nol' dalam langkah-langkah terhitung, seperti dalam contoh berikut:

WITH

//Returns 1.#INF when the previous period contains no value

//but the current period does

MEMBER MEASURES.[Previous Period Growth With Errors] AS

([Measures].[Internet Sales Amount]-([Measures].[Internet Sales Amount], [Date].[Date].CURRENTMEMBER.PREVMEMBER))

/

([Measures].[Internet Sales Amount], [Date].[Date].CURRENTMEMBER.PREVMEMBER)

,FORMAT_STRING='PERCENT'

//Traps division by zero and returns null when the previous period contains

//no value but the current period does

MEMBER MEASURES.[Previous Period Growth] AS

IIF(([Measures].[Internet Sales Amount], [Date].[Date].CURRENTMEMBER.PREVMEMBER)=0,

NULL,

([Measures].[Internet Sales Amount]-([Measures].[Internet Sales Amount], [Date].[Date].CURRENTMEMBER.PREVMEMBER))

/

([Measures].[Internet Sales Amount], [Date].[Date].CURRENTMEMBER.PREVMEMBER)

),FORMAT_STRING='PERCENT'

SELECT {[Measures].[Internet Sales Amount],MEASURES.[Previous Period Growth With Errors], MEASURES.[Previous Period Growth]} ON 0,

DESCENDANTS(

[Date].[Calendar].[Calendar Year].&[2004],

[Date].[Calendar].[Date])

ON 1

FROM [Adventure Works]

WHERE([Product].[Product Categories].[Subcategory].&[26])

Berikut ini adalah contoh IIF yang mengembalikan salah satu dari dua set di dalam fungsi Hasilkan untuk membuat sekumpulan tuple yang kompleks pada Baris:

SELECT {[Measures].[Internet Sales Amount]} ON 0,

//If Internet Sales Amount is zero or null

//returns the current year and the All Customers member

//else returns the current year broken down by Country

GENERATE(

[Date].[Calendar Year].[Calendar Year].MEMBERS

, IIF([Measures].[Internet Sales Amount]=0,

{([Date].[Calendar Year].CURRENTMEMBER, [Customer].[Country].[All Customers])}

, {{[Date].[Calendar Year].CURRENTMEMBER} * [Customer].[Country].[Country].MEMBERS}

))

ON 1

FROM [Adventure Works]

WHERE([Product].[Product Categories].[Subcategory].&[26])

Terakhir, contoh ini menunjukkan cara menggunakan Petunjuk Rencana:

WITH MEMBER MEASURES.X AS

IIF(

[Measures].[Internet Sales Amount]=0

, NULL

, (1/[Measures].[Internet Sales Amount]) HINT EAGER)

SELECT {[Measures].x} ON 0,

[Customer].[Customer Geography].[Country].MEMBERS ON 1

FROM [Adventure Works]

Lihat Juga

Referensi Fungsi MDX (MDX)