Coba anda perhatikan Kolom-kolom DimAccount dari AdventureWorksDW berikut:
[AccountKey] [int] IDENTITY(1,1) NOT NULL,
[ParentAccountKey] [int] NULL,
[AccountCodeAlternateKey] [int] NULL,
[ParentAccountCodeAlternateKey] [int] NULL,
[AccountDescription] [nvarchar](50) NULL,
[AccountType] [nvarchar](50) NULL,
[Operator] [nvarchar](50) NULL,
[CustomMembers] [nvarchar](300) NULL,
[ValueType] [nvarchar](50) NULL,
[CustomMemberOptions] [nvarchar](200) NULL,
Disana terdapat kolom valuetype yang menurut persepsi saya :D digunakan untuk menentukan format value pada suatu account.
Sudah beberapa minggu saya googling untuk mencari contoh implementasi/penggunaan kolom ini pada SSAS dan sialnya gak ketemu-ketemu :(. Alhamdullilah karena petunjuk dari yg di atas akhirnya saya menemukan sendiri cara menggunakannya :)
Masalahnya adalah dimensi account ini punya 3 macam value type dengan 3 format yang berbeda:
- Currency ("#,#.00")
- Unit ("#")
- Percent ("Percent")
Jadi ada account yang sifat datanya uang,unit dan percent. Jika kita tidak melakukan sesuatu untuk value type di SSAS pastilah ketika dibrowse datanya maka yang muncul adalah format sesuai dengan measure account tersebut.Jika format measurenya "Currency" ya semua account munculnya berformat "Currency".
Tentunya hal ini akan fatal untuk user karena jika melihat data percent akan muncul nilai nol koma sekian dan tidak ada tanda percent.
Untuk itulah kita memerlukan sedikit :) script untuk mengimplementasikan kolom value type ini
Berikut adalah langkah2 untuk peimplementasiannya:
- pastikan anda sudah menambahkan atribut value type pada DimAccount.dim pada solusi SSAS dan set property AttributeHierarchyVisible ke false supaya tidak kelihatan
- kita set properti visible dari measure yang akan diformat ke false. misal nama measurenya [measure].[real ori]
- membuat calculated measure pada cube. karena nama measure asli [measure].[real ori] kita bisa memberi nama calculated measure ini [measure].[real]. berikut script calculated measurenya:
CREATE MEMBER CURRENTCUBE.[MEASURES].[real]
AS [measure].[real ori],
FORMAT_STRING = case
when [Account Operating].[Account Operating].Properties( "Value Type" )="Percent" then "Percent"
when [Account Operating].[Account Operating].Properties( "Value Type" )="Unit" then "#"
else "#,#.00" --ini tipenya currency
end,
VISIBLE = 1 ;
![]()
![]()
![]()
![]()