Pesanan (MDX)
Mengatur anggota set tertentu, secara opsional mempertahankan atau melanggar hierarki.
Sintaks
Numeric expression syntax
Order(Set_Expression, Numeric_Expression
[ , { ASC | DESC | BASC | BDESC } ] )
String expression syntax
Order(Set_Expression, String_Expression
[ , { ASC | DESC | BASC | BDESC } ] )
Argumen
Set_Expression
Ekspresi Ekspresi Multidminsional (MDX) yang valid yang mengembalikan satu set.
Numeric_Expression
Ekspresi numerik valid yang biasanya merupakan ekspresi Ekspresi Multidmensional (MDX) koordinat sel yang mengembalikan angka.
String_Expression
Ekspresi string valid yang biasanya merupakan ekspresi Ekspresi Multidmensional (MDX) koordinat sel yang valid yang mengembalikan angka yang dinyatakan sebagai string.
Keterangan
Fungsi Order dapat berupa hierarkis (seperti yang ditentukan dengan menggunakan bendera ASC atau DESC ) atau nonhierarkis (seperti yang ditentukan dengan menggunakan bendera BASC atau BDESC ; B adalah singkatan dari "break hierarchy"). Jika ASC atau DESC ditentukan, fungsi Order pertama-tama mengatur anggota sesuai dengan posisi mereka dalam hierarki, lalu mengurutkan setiap tingkat. Jika BASC atau BDESC ditentukan, fungsi Order mengatur anggota dalam set tanpa memperhatikan hierarki. Dalam tidak ada bendera yang ditentukan, ASC adalah default.
Jika fungsi Order digunakan dengan set di mana dua hierarki atau lebih digabungkan silang, dan bendera DESC digunakan, hanya anggota hierarki terakhir dalam set yang diurutkan. Ini adalah perubahan dari Analysis Services 2000 di mana semua hierarki dalam set diurutkan.
Contoh
Contoh berikut mengembalikan, dari kubus Adventure Works , jumlah pesanan penjual untuk semua Kuartal Kalender dari hierarki Kalender pada dimensi Tanggal. Fungsi Order mengurutkan ulang set untuk sumbu ROWS. Fungsi Order mengurutkan yang ditetapkan oleh [Reseller Order Count]
dalam urutan hierarkis turun seperti yang ditentukan oleh [Calendar]
hierarki.
SELECT
Measures.[Reseller Order Count] ON COLUMNS,
Order(
[Date].[Calendar].[Calendar Quarter].MEMBERS,
Measures.[Reseller Order Count],
DESC
) ON ROWS
FROM [Adventure Works]
Perhatikan bagaimana dalam contoh ini, ketika bendera DESC diubah menjadi BDESC, hierarki rusak dan daftar Kuartal Kalender dikembalikan tanpa memperhatikan hierarki:
SELECT
Measures.[Reseller Order Count] ON COLUMNS,
Order (
[Date].[Calendar].[Calendar Quarter].MEMBERS,
Measures.[Reseller Order Count],
BDESC
) ON ROWS
FROM [Adventure Works]
Contoh berikut mengembalikan Reseller Sales Measure untuk lima subkategori penjualan teratas produk, terlepas dari hierarki, berdasarkan Reseller Gross Profit. Fungsi Subset digunakan untuk mengembalikan hanya 5 tuple pertama dalam set setelah hasil diurutkan menggunakan fungsi Order .
SELECT Subset
(
Order
(
[Product].[Product Categories].[SubCategory].members,
[Measures].[Reseller Gross Profit],
BDESC
), 0, 5
) ON 0
FROM [Adventure Works]
Contoh berikut menggunakan fungsi Peringkat untuk memberi peringkat anggota hierarki Kota, berdasarkan ukuran Jumlah Penjualan Penjual, lalu menampilkannya dalam urutan peringkat. Dengan menggunakan fungsi Pesanan untuk terlebih dahulu mengurutkan sekumpulan anggota hierarki Kota, pengurutan dilakukan hanya sekali dan kemudian diikuti oleh pemindaian linier sebelum disajikan dalam urutan diurutkan.
WITH
SET OrderedCities AS Order
([Geography].[City].[City].members
, [Measures].[Reseller Sales Amount], BDESC
)
MEMBER [Measures].[City Rank] AS Rank
([Geography].[City].CurrentMember, OrderedCities)
SELECT {[Measures].[City Rank],[Measures].[Reseller Sales Amount]} ON 0
,Order
([Geography].[City].[City].MEMBERS
,[City Rank], ASC)
ON 1
FROM [Adventure Works]
Contoh berikut mengembalikan jumlah produk dalam set yang unik, menggunakan fungsi Pesanan untuk memesan tuple yang tidak kosong sebelum menggunakan fungsi Filter . Fungsi CurrentOrdinal digunakan untuk membandingkan dan menghilangkan ikatan.
WITH MEMBER [Measures].[PrdTies] AS Count
(Filter
(Order
(NonEmpty
([Product].[Product].[Product].Members
, {[Measures].[Reseller Order Quantity]}
)
, [Measures].[Reseller Order Quantity]
, BDESC
) AS OrdPrds
, (OrdPrds.CurrentOrdinal < OrdPrds.Count
AND [Measures].[Reseller Order Quantity] =
( [Measures].[Reseller Order Quantity]
, OrdPrds.Item
(OrdPrds.CurrentOrdinal
)
)
)
OR (OrdPrds.CurrentOrdinal > 1
AND [Measures].[Reseller Order Quantity] =
([Measures].[Reseller Order Quantity]
, OrdPrds.Item
(OrdPrds.CurrentOrdinal-2)
)
)
)
)
SELECT {[Measures].[PrdTies]} ON 0
FROM [Adventure Works]
Untuk memahami cara kerja bendera DESC dengan set tuple, pertama-tama pertimbangkan hasil kueri berikut:
SELECT
{[Measures].[Tax Amount]} ON 0,
ORDER(
[Sales Territory].[Sales Territory].[Group].MEMBERS
,[Measures].[Tax Amount], DESC)
ON 1
FROM [Adventure Works]
Pada sumbu Baris Anda dapat melihat bahwa Grup Wilayah Penjualan telah dipesan dalam urutan menurun berdasarkan Jumlah Pajak, sebagai berikut: Amerika Utara, Eropa, Pasifik, NA. Sekarang lihat apa yang terjadi jika kita melakukan crossjoin kumpulan Grup Wilayah Penjualan dengan sekumpulan Subkatoner Produk dan menerapkan fungsi Pesanan dengan cara yang sama, sebagai berikut:
SELECT
{[Measures].[Tax Amount]} ON 0,
ORDER(
[Sales Territory].[Sales Territory].[Group].MEMBERS
*
{[Product].[Product Categories].[subCategory].Members}
,[Measures].[Tax Amount], DESC)
ON 1
FROM [Adventure Works]
Sementara kumpulan Subkategori Produk telah diurutkan dalam urutan turun, hierarkis, Grup Wilayah Penjualan sekarang tidak diurutkan dan muncul dalam urutan yang muncul pada hierarki: Eropa, NA, Amerika Utara dan Pasifik. Ini karena hanya hierarki terakhir dalam set tuple, Subkategori Produk, yang diurutkan. Untuk mereproduksi perilaku Analysis Services 2000, gunakan serangkaian fungsi Hasilkan berlapis untuk mengurutkan setiap set sebelum di-crossjoin, misalnya:
SELECT
{[Measures].[Tax Amount]} ON 0,
GENERATE(
ORDER(
[Sales Territory].[Sales Territory].[Group].MEMBERS
,[Measures].[Tax Amount], DESC)
,
ORDER(
[Sales Territory].[Sales Territory].CURRENTMEMBER
*
{[Product].[Product Categories].[subCategory].Members}
,[Measures].[Tax Amount], DESC))
ON 1
FROM [Adventure Works]