LAMPIRAN
Langkah-langkah pembuatan data warehouse : 1)
Membuat database baru untuk menampung data warehouse, yang bernama ‘OtoBITzOLAP’.
2)
Membuat tabel-tabel dimensi dan fakta yang sesuai dengan skema bintang yang telah dirancang, meliputi :
Nama Tabel : DimAccessories Primary Key : AccessoriesID (identity) Keterangan : Tabel Dimensi Aksesoris SQL Query : create table DimAccessories ( AccessoriesID int not null primary key identity, Kode nvarchar(20) not null, Nama nvarchar(50) not null, ExpDate datetime )
Nama Tabel : DimCustomer Primary Key : CustomerID (identity) Keterangan : Tabel Dimensi Customer SQL Query : create table DimCustomer ( CustomerID int not null primary key identity, Nomor nvarchar(50) not null, Nama nvarchar(50) not null, Alamat nvarchar(50) not null, Kota nvarchar(50) not null, NilaiTransaksi numeric(18), NilaiUangMuka numeric(18), ExpDate datetime )
L1
Nama Tabel : DimKendaraan Primary Key : KendaraanID (identity) Keterangan : Tabel Dimensi Kendaraan SQL Query : create table DimKendaraan ( KendaraanID int not null primary key identity, NoRangka nvarchar(20) not null, Kelas nvarchar(50) not null, Jenis nvarchar(50) not null, Warna nvarchar(50) not null, Model nvarchar(50) not null, Tipe nvarchar(50) not null, ExpDate datetime )
Nama Tabel : DimSalesman Primary Key : SalesmanID (identity) Keterangan : Tabel Dimensi Salesman SQL Query : create table DimSalesman ( SalesmanID int not null primary key identity, Kode nvarchar(5) not null, Nama nvarchar(50) not null, Supervisor nvarchar(50) not null, Aktif bit, Expdate datetime )
Nama Tabel : DimWaktu Primary Key : WaktuID (identity) Keterangan : Tabel Dimensi Waktu SQL Query : create table DimWaktu ( WaktuID int not null primary key identity, Tahun int not null, Bulan int not null, Hari int not null )
L2
Nama Tabel Primary Key Surrogate Key Keterangan
: FactPenjualanKend :: WaktuID, KendaraanID, SalesmanID, CustomerID : Tabel Fakta Penjualan Kendaraan
SQL Query : create table FactPenjualanKend ( WaktuID int not null, KendaraanID int not null, SalesmanID int not null, CustomerID int not null, TotalUnitKendTerjual int, TotalRpKendTerjual numeric(18) )
Nama Tabel : FactPenjualanKendAcc Primary Key : Surrogate Key : WaktuID, KendaraanID, SalesmanID, CustomerID, AccessoriesID Keterangan : Tabel Fakta Penjualan Aksesoris Kendaraan SQL Query : create table FactPenjualanKendAcc ( WaktuID int not null, KendaraanID int not null, SalesmanID int not null, CustomerID int not null, AccessoriesID int not null, TotalUnitAccTerjual int, TotalRpAccTerjual numeric(18) )
Nama Tabel Primary Key Surrogate Key Keterangan
: FactAccessoriesPurnaJual :: WaktuID, SalesmanID, CustomerID, AccessoriesID : Tabel Fakta Aksesoris Purna Jual
SQL Query : create table FactAccessoriesPurnaJual ( WaktuID int not null, SalesmanID int not null, CustomerID int not null, L3
AccessoriesID int not null, TotalUnitAccPurnaJual int, TotalRpAccPurnaJual numeric(18), TotalRpLaba numeric(18) )
3)
Membuat tabel-tabel staging untuk menampung data yang berasal dari database operasional ‘OtoBITz’ ke database ‘OtoBITzOLAP’ tetapi atribut diambil seperlunya saja, meliputi :
Nama Tabel Primary Key Keterangan
: TblStg_Accessories : kode : Tabel Staging Aksesoris
SQL Query : create table TblStg_Accessories ( kode nvarchar(20) not null primary key, nama nvarchar(50), hargapokok numeric(18), hargajual numeric(18), tglsimpan datetime )
Nama Tabel Primary Key Keterangan
: TblStg_Customer : nomor : Tabel Staging Customer
SQL Query : create table TblStg_Customer ( nomor nvarchar(10) not null primary key, nama nvarchar(50), alamat nvarchar(50), kota nvarchar(50), nilaitransaksi numeric(18), nilaiuangmuka numeric(18), tglsimpan datetime )
L4
Nama Tabel Primary Key Keterangan
: TblStg_Kendaraan : norangka : Tabel Staging Kendaraan
SQL Query : create table TblStg_Kendaraan ( norangka nvarchar(20) not null primary key, kode_tipe nvarchar(30), kode_warna nvarchar(10), tglsimpan datetime )
Nama Tabel Primary Key Keterangan
: TblStg_KelasKend : kode : Tabel Staging Kelas Kendaraan
SQL Query : create table TblStg_KelasKend ( kode nvarchar(5) not null primary key, nama nvarchar(50), tglsimpan datetime )
Nama Tabel Primary Key Keterangan
: TblStg_JenisKend : kode : Tabel Staging Jenis Kendaraan
SQL Query : create table TblStg_JenisKend ( kode nvarchar(5) not null primary key, nama nvarchar(50), kode_kelas nvarchar(5), tglsimpan datetime )
L5
Nama Tabel Primary Key Keterangan
: TblStg_WarnaKend : kode : Tabel Staging Warna Kendaraan
SQL Query : create table TblStg_WarnaKend ( kode nvarchar(10) not null primary key, nama nvarchar(50), tglsimpan datetime )
Nama Tabel Primary Key Keterangan
: TblStg_ModelKend : kode : Tabel Staging Model Kendaraan
SQL Query : create table TblStg_ModelKend ( kode nvarchar(30) not null primary key, nama nvarchar(50), tglsimpan datetime )
Nama Tabel Primary Key Keterangan
: TblStg_TipeKend : kode : Tabel Staging Tipe Kendaraan
SQL Query : create table TblStg_TipeKend ( kode nvarchar(30) not null primary key, nama nvarchar(50), kode_model nvarchar(30), kode_jenis nvarchar(5), tglsimpan datetime )
L6
Nama Tabel Primary Key Keterangan
: TblStg_Salesman : kode : Tabel Staging Salesman
SQL Query : create table TblStg_Salesman ( kode nvarchar(5) not null primary key, nama nvarchar(50), kode_supervisor nvarchar(5), aktif bit, tglsimpan datetime )
Nama Tabel Primary Key Keterangan
: TblStg_Supervisor : kode : Tabel Staging Supervisor
SQL Query : create table TblStg_Supervisor ( kode nvarchar(5) not null primary key, nama nvarchar(50), tglsimpan datetime )
Nama Tabel Primary Key Keterangan
: TblStg_Penjualan : nomor : Tabel Staging Penjualan
SQL Query : create table TblStg_Penjualan ( nomor nvarchar(10) not null primary key, nomor_matching nvarchar(10), norangka nvarchar(20), tanggal datetime, nomor_pesanan nvarchar(10), hjaccessories numeric(18), hjakhir numeric(18), tglsimpan datetime, batal bit )
L7
Nama Tabel Primary Key Keterangan
: TblStg_Matching : nomor : Tabel Staging Matching
SQL Query : create table TblStg_Matching ( nomor nvarchar(10) not null primary key, tanggal datetime, norangka nvarchar(20), nomor_pesanan nvarchar(10), tglsimpan datetime )
Nama Tabel Primary Key Keterangan
: TblStg_PesananKend : nomor : Tabel Staging Pesanan Kendaraan
SQL Query : create table TblStg_PesananKend ( nomor nvarchar(10) not null primary key, tanggal datetime, nomor_customer nvarchar(10), kode_salesman nvarchar(5), tglsimpan datetime )
Nama Tabel Primary Key Keterangan
: TblStg_MatchingAcc : nomor : Tabel Staging Matching Aksesoris
SQL Query : create table TblStg_MatchingAcc ( nomor nvarchar(10), nomor_pesanan nvarchar(10), kode_accessories nvarchar(20), totaldpphargajual numeric(18), jumlahpasang smallint, batal bit )
L8
Nama Tabel Primary Key Keterangan
: TblStg_AccPurnaJual : nomor : Tabel Staging Aksesoris Purna Jual
SQL Query : create table TblStg_AccPurnaJual ( nomor nvarchar(10), norangka nvarchar(20), kode_accessories nvarchar(20), nomor_customer nvarchar(10), tanggal datetime, jumlah smallint, hargajualakhir numeric(18), hargapokok numeric(18), kode_salesman nvarchar(5), tglsimpan datetime, batal bit )
4)
Membuat Tabel FilterTimeStamp dan Stored Procedure ‘UpdateFilterTimeStamp’ di database ‘OtoBITzOLAP’. create table FilterTimeStamp ( TableName varchar(50) not null primary key, LastETLDate datetime not null )
create proc ProcUpdateFilterTimeStamp @TableName varchar(50) as begin if exists (select * from FilterTimeStamp where TableName=@TableName) update FilterTimeStamp set LastETLDate=getdate() where TableName=@TableName else insert into FilterTimeStamp(TableName,LastETLDate) values (@TableName,getdate()) end go
L9
5)
Melakukan Transformasi Data menggunakan Data Transformation Services di SQL Server 2000 Enterprise Manager.
DTS Dimensi Aksesoris 1. Truncate TblStg_Accessories, berisi query : truncate table TblStg_Accessories 2. Staging Accessories, berisi query : select kode,nama,hargapokok,hargajual,tglsimpan from UntM_Accessories Kemudian mentransformasikan ke TblStg_Accessories sesuai dengan kolom yang telah ditentukan. 3. Update ExpDate terhadap DimAccessories, berisi query : update DimAccessories set ExpDate=getdate() from TblStg_Accessories as Acc,DimAccessories as DimAcc where DimAcc.Kode=Acc.kode and ( DimAcc.Nama<>Acc.nama ) and DimAcc.ExpDate is null 4. DWH DimAccesories, berisi query : if exists (select * from FilterTimeStamp as FTS where FTS.TableName='DimAccessories') select Acc.kode,Acc.nama from TblStg_Accessories as Acc where Acc.tglsimpan>(select LastETLDate from FilterTimeStamp where TableName='DimAccessories') else select Acc.kode,Acc.nama from TblStg_Accessories as Acc
Kemudian mentransformasikan ke DimAccessories sesuai dengan kolom yang telah ditentukan. L10
5. Update FilterTimeStamp, berisi query : exec ProcUpdateFilterTimeStamp ? dan Parameter : DimAccessories
DTS Dimensi Customer 1. Truncate TblStg_Customer, berisi query : truncate table TblStg_Customer 2. Staging Customer, berisi query : select nomor,nama,alamat,kota,nilaitransaksi,nilaiuangmuka,tglsimpan from GlbM_Customer Kemudian mentransformasikan ke TblStg_Customer sesuai dengan kolom yang telah ditentukan. 3. Update ExpDate terhadap DimCustomer, berisi query : update DimCustomer set ExpDate=getdate() from TblStg_Customer as Cust,DimCustomer as DimCust where DimCust.Nomor=Cust.nomor and ( DimCust.Nama<>Cust.nama or DimCust.Alamat<>Cust.alamat or DimCust.Kota<>Cust.kota or DimCust.NilaiTransaksi<>Cust.nilaitransaksi or DimCust.NilaiUangMuka<>Cust.nilaiuangmuka ) and DimCust.ExpDate is null 4. DWH DimCustomer, berisi query : if exists (select * from FilterTimeStamp as FTS where FTS.TableName='DimCustomer') select Cust.nomor,Cust.nama,Cust.alamat,Cust.kota,Cust.nilaitransaksi,Cust.nilaiua ngmuka from TblStg_Customer as Cust where Cust.tglsimpan>(select LastETLDate from FilterTimeStamp where TableName='DimCustomer') else
L11
select Cust.nomor,Cust.nama,Cust.alamat,Cust.kota,Cust.nilaitransaksi,Cust.nilaiua ngmuka from TblStg_Customer as Cust Kemudian mentransformasikan ke DimCustomer sesuai dengan kolom yang telah ditentukan. 5. Update FilterTimeStamp, berisi query : exec ProcUpdateFilterTimeStamp ? dan Parameter : DimCustomer
DTS Dimensi Kendaraan 1. Truncate TblStg_KelasKend, berisi query : truncate table TblStg_KelasKend 2. Staging Kelas, berisi query : select kode,nama,tglsimpan from UntM_Kelas Kemudian mentransformasikan ke TblStg_KelasKend sesuai dengan kolom yang telah ditentukan. 3. Truncate TblStg_JenisKend, berisi query : truncate table TblStg_JenisKend 4. Staging Jenis, berisi query : select kode,nama,kode_kelas,tglsimpan from UntM_Jenis Kemudian mentransformasikan ke TblStg_JenisKend sesuai dengan kolom yang telah ditentukan. 5. Truncate TblStg_WarnaKend, berisi query : truncate table TblStg_WarnaKend
L12
6. Staging Warna, berisi query : select kode,nama,tglsimpan from UntM_Warna Kemudian mentransformasikan ke TblStg_WarnaKend sesuai dengan kolom yang telah ditentukan. 7. Truncate TblStg_ModelKend, berisi query : truncate table TblStg_ModelKend 8. Staging Model, berisi query : select kode,nama,tglsimpan from UntM_Model Kemudian mentransformasikan ke TblStg_ModelKend sesuai dengan kolom yang telah ditentukan. 9. Truncate TblStg_TipeKend, berisi query : truncate table TblStg_TipeKend 10. Staging Tipe, berisi query : select kode,nama,kode_model,kode_jenis,tglsimpan from UntM_Tipe Kemudian mentransformasikan ke TblStg_TipeKend sesuai dengan kolom yang telah ditentukan. 11. Truncate TblStg_Kendaraan, berisi query : truncate table TblStg_Kendaraan 12. Staging Kendaraan, berisi query : select norangka,kode_tipe,kode_warna,tglsimpan from UntT_DataKendaraan Kemudian mentransformasikan ke TblStg_Kendaraan sesuai dengan kolom yang telah ditentukan. L13
13. Update ExpDate terhadap DimKendaraan, berisi query : update DimKendaraan set ExpDate=getdate() from TblStg_KelasKend as Kls, TblStg_JenisKend as Jns, TblStg_WarnaKend as Wrn, TblStg_ModelKend as Mdl, TblStg_TipeKend as Tp, TblStg_Kendaraan as Kend, DimKendaraan as DimKend where DimKend.NoRangka=Kend.norangka and Kend.kode_warna=Wrn.kode and Kend.kode_tipe=Tp.kode and Tp.kode_model=Mdl.kode and Tp.kode_jenis=Jns.kode and Jns.kode_kelas=Kls.kode and ( DimKend.Warna<>Wrn.nama or DimKend.Tipe<>Tp.nama or DimKend.Model<>Mdl.nama or DimKend.Jenis<>Jns.nama or DimKend.Kelas<>Kls.nama ) and DimKend.ExpDate is null 14. DWH DimKendaraan, berisi query : if exists (select * from FilterTimeStamp as FTS where FTS.TableName='DimKendaraan') select Kend.norangka,Tp.nama as Tipe,Mdl.nama as Model,Jns.nama as Jenis,Kls.nama as Kelas,Wrn.nama as Warna from TblStg_KelasKend as Kls, TblStg_JenisKend as Jns, TblStg_WarnaKend as Wrn, TblStg_ModelKend as Mdl, TblStg_TipeKend as Tp, TblStg_Kendaraan as Kend where Kend.kode_tipe=Tp.kode and Tp.kode_model=Mdl.kode and Tp.kode_jenis=Jns.kode and Jns.kode_kelas=Kls.kode and Kend.kode_warna=Wrn.kode and Kend.tglsimpan>(select LastETLDate from FilterTimeStamp where TableName='DimKendaraan') L14
else select Kend.norangka,Tp.nama as Tipe,Mdl.nama as Model,Jns.nama as Jenis,Kls.nama as Kelas,Wrn.nama as Warna from TblStg_KelasKend as Kls, TblStg_JenisKend as Jns, TblStg_WarnaKend as Wrn, TblStg_ModelKend as Mdl, TblStg_TipeKend as Tp, TblStg_Kendaraan as Kend where Kend.kode_tipe=Tp.kode and Tp.kode_model=Mdl.kode and Tp.kode_jenis=Jns.kode and Jns.kode_kelas=Kls.kode and Kend.kode_warna=Wrn.kode Kemudian mentransformasikan ke DimKendaraan sesuai dengan kolom yang telah ditentukan. 15. Update FilterTimeStamp, berisi query : exec ProcUpdateFilterTimeStamp ? dan Parameter : DimKendaraan
DTS Dimensi Salesman 1. Truncate TblStg_Supervisor, berisi query : truncate table TblStg_Supervisor 2. Staging Supervisor, berisi query : select kode,nama,tglsimpan from UntM_Supervisor Kemudian mentransformasikan ke TblStg_Supervisor sesuai dengan kolom yang telah ditentukan. 3. Truncate TblStg_Salesman, berisi query : truncate table TblStg_Salesman 4. Staging Salesman, berisi query : L15
select kode,nama,kode_Supervisor,aktif,tglsimpan from UntM_Salesman Kemudian mentransformasikan ke TblStg_Salesman sesuai dengan kolom yang telah ditentukan. 5. Update ExpDate terhadap DimSalesman, berisi query : update DimSalesman set ExpDate=getdate() from TblStg_Salesman as Sales,DimSalesman as DimSales, TblStg_Supervisor as Super where DimSales.Kode=Sales.kode and Sales.kode_supervisor=Super.kode and ( DimSales.Nama<>Sales.nama or DimSales.Supervisor<>Super.nama ) and DimSales.ExpDate is null 6. DWH DimSalesman, berisi query : if exists (select * from FilterTimeStamp as FTS FTS.TableName='DimSalesman') select Sales.kode,Sales.nama,Super.nama as Supervisor,Sales.aktif from TblStg_Salesman as Sales, TblStg_Supervisor as Super where Sales.kode_supervisor=Super.kode and Sales.tglsimpan>(select LastETLDate from FilterTimeStamp TableName='DimSalesman') else select Sales.kode,Sales.nama,Super.nama as Supervisor,Sales.aktif from TblStg_Salesman as Sales, TblStg_Supervisor as Super where Sales.kode_supervisor=Super.kode
where
where
Kemudian mentransformasikan ke DimSalesman sesuai dengan kolom yang telah ditentukan. 7. Update FilterTimeStamp, berisi query : exec ProcUpdateFilterTimeStamp ? dan Parameter : DimSalesman
L16
DTS Dimensi Waktu 1. Waktu 5 Tahunan, berisi query : declare @tahun int declare @bulan int declare @hari int declare @maxtgl int declare @maxthn int if exists (select * from FilterTimeStamp FTS.TableName='DimWaktu') begin set @tahun=(select max(Tahun) from DimWaktu)+1 set @maxthn=@tahun+4 while @tahun<=@maxthn begin set @bulan=1 while @bulan<=12 begin if @bulan=1 set @maxtgl=31 if @bulan=2 begin if @tahun%4=0 --kabisat set @maxtgl=29 else --tidak kabisat set @maxtgl=28 end if @bulan=3 set @maxtgl=31 if @bulan=4 set @maxtgl=30 if @bulan=5 set @maxtgl=31 if @bulan=6 set @maxtgl=30 if @bulan=7 set @maxtgl=31 if @bulan=8 set @maxtgl=31 if @bulan=9 set @maxtgl=30 if @bulan=10 set @maxtgl=31 if @bulan=11 set @maxtgl=30 if @bulan=12 set @maxtgl=31 set @hari=1 while @hari<=@maxtgl begin insert into (@Tahun,@Bulan,@Hari) set @hari=@hari+1 end set @bulan=@bulan+1
as
DimWaktu(Tahun,Bulan,Hari)
L17
FTS
where
values
end set @tahun=@tahun+1 end end else begin set @tahun=2005 while @tahun<=2009 begin set @bulan=1 while @bulan<=12 begin if @bulan=1 set @maxtgl=31 if @bulan=2 begin if @tahun%4=0 --kabisat set @maxtgl=29 else --tidak kabisat set @maxtgl=28 end if @bulan=3 set @maxtgl=31 if @bulan=4 set @maxtgl=30 if @bulan=5 set @maxtgl=31 if @bulan=6 set @maxtgl=30 if @bulan=7 set @maxtgl=31 if @bulan=8 set @maxtgl=31 if @bulan=9 set @maxtgl=30 if @bulan=10 set @maxtgl=31 if @bulan=11 set @maxtgl=30 if @bulan=12 set @maxtgl=31 set @hari=1 while @hari<=@maxtgl begin insert into (@Tahun,@Bulan,@Hari) set @hari=@hari+1 end set @bulan=@bulan+1 end set @tahun=@tahun+1 end end
DimWaktu(Tahun,Bulan,Hari)
L18
values
2. Update FilterTimeStamp, berisi query : exec ProcUpdateFilterTimeStamp ? dan Parameter : DimWaktu
DTS Fakta Penjualan Kendaraan dan Fakta Aksesoris Kendaraan 1. Truncate TblStg_Penjualan, berisi query : truncate table TblStg_Penjualan 2. Staging Penjualan, berisi query : select nomor,nomor_matching,norangka,tanggal, nomor_pesanan,hjaccessories,hjakhir,tglsimpan,batal from UntT_Penjualan Kemudian mentransformasikan ke TblStg_Penjualan sesuai dengan kolom yang telah ditentukan. 3. Truncate TblStg_Matching, berisi query : truncate table TblStg_Matching 4. Staging Penjualan, berisi query : select nomor,tanggal,norangka,nomor_pesanan,tglsimpan from UntT_Matching Kemudian mentransformasikan ke TblStg_Matching sesuai dengan kolom yang telah ditentukan. 5. Truncate TblStg_PesananKend, berisi query : truncate table TblStg_PesananKend 6. Staging PesananKend, berisi query : select nomor,tanggal,nomor_customer,kode_salesman,tglsimpan from UntT_PesananKendaraan
L19
Kemudian mentransformasikan ke TblStg_PesananKend sesuai dengan kolom yang telah ditentukan. 7. Truncate TblStg_MatchingAcc, berisi query : truncate table TblStg_MatchingAcc 8. Staging MatchingAcc, berisi query : select nomor,nomor_pesanan,kode_accessories, totaldpphargajual,jumlahpasang,batal from UntT_MatchingAccessories Kemudian mentransformasikan ke TblStg_MatchingAcc sesuai dengan kolom yang telah ditentukan. 9. Update Batal, berisi query : declare @WaktuID int declare @KendaraanID int declare @SalesmanID int declare @CustomerID int declare cursor1 cursor forward_only for select FactPenjualanKend.WaktuID, FactPenjualanKend.KendaraanID, FactPenjualanKend.SalesmanID, FactPenjualanKend.CustomerID from TblStg_Penjualan, FactPenjualanKend, DimWaktu, DimKendaraan, DimSalesman, DimCustomer, TblStg_Matching, TblStg_PesananKend where TblStg_Penjualan.batal=1 and FactPenjualanKend.WaktuID=DimWaktu.WaktuID and year(TblStg_Penjualan.tanggal)=DimWaktu.Tahun and month(TblStg_Penjualan.tanggal)=DimWaktu.Bulan and L20
day(TblStg_Penjualan.tanggal)=DimWaktu.Hari and FactPenjualanKend.KendaraanID=DimKendaraan.KendaraanID and TblStg_Penjualan.norangka=DimKendaraan.NoRangka and FactPenjualanKend.SalesmanID=DimSalesman.SalesmanID and TblStg_Penjualan.nomor_matching=TblStg_Matching.nomor and TblStg_Matching.nomor_pesanan=TblStg_PesananKend.nomor and TblStg_PesananKend.kode_salesman=DimSalesman.Kode and FactPenjualanKend.CustomerID=DimCustomer.CustomerID and TblStg_PesananKend.nomor_customer=DimCustomer.Nomor open cursor1 fetch next from cursor1 into @WaktuID,@KendaraanID,@SalesmanID,@CustomerID while @@fetch_status=0 begin delete from FactPenjualanKend where WaktuID=@WaktuID and KendaraanID=@KendaraanID and SalesmanID=@SalesmanID and CustomerID=@CustomerID fetch next from cursor1 into @WaktuID,@KendaraanID,@SalesmanID,@CustomerID end close cursor1 deallocate cursor1 10. DWH PenjualanKend, berisi query : if exists (select * from FilterTimeStamp FTS.TableName='FactPenjualanKend') select WaktuID,KendaraanID,SalesmanID,CustomerID, count(Penj.nomor) as TotalUnitKendTerjual, sum(Penj.hjakhir) as TotalRpKendTerjual from DimWaktu as DimWkt, DimSalesman as DimSales, DimKendaraan as DimKend, DimCustomer as DimCust, TblStg_Penjualan as Penj, TblStg_Matching as Mtch, TblStg_PesananKend as PesananKend where year(Penj.tanggal)=DimWkt.Tahun and month(Penj.tanggal)=DimWkt.Bulan and day(Penj.tanggal)=DimWkt.Hari and Penj.nomor_matching=Mtch.nomor and Mtch.nomor_pesanan=PesananKend.nomor and L21
as
FTS
where
PesananKend.kode_salesman=DimSales.Kode and DimSales.ExpDate is null and Mtch.norangka=DimKend.NoRangka and DimKend.ExpDate is null and PesananKend.nomor_customer=DimCust.Nomor and DimCust.ExpDate is null and Penj.batal=0 and Penj.tglsimpan>(select LastETLDate from FilterTimeStamp TableName='FactPenjualanKend') group by WaktuID,KendaraanID,SalesmanID,CustomerID order by WaktuID,KendaraanID,SalesmanID,CustomerID else select WaktuID,KendaraanID,SalesmanID,CustomerID, count(Penj.nomor) as TotalUnitKendTerjual, sum(Penj.hjakhir) as TotalRpKendTerjual from DimWaktu as DimWkt, DimSalesman as DimSales, DimKendaraan as DimKend, DimCustomer as DimCust, TblStg_Penjualan as Penj, TblStg_Matching as Mtch, TblStg_PesananKend as PesananKend where year(Penj.tanggal)=DimWkt.Tahun and month(Penj.tanggal)=DimWkt.Bulan and day(Penj.tanggal)=DimWkt.Hari and Penj.nomor_matching=Mtch.nomor and Mtch.nomor_pesanan=PesananKend.nomor and PesananKend.kode_salesman=DimSales.Kode and DimSales.ExpDate is null and Mtch.norangka=DimKend.NoRangka and DimKend.ExpDate is null and PesananKend.nomor_customer=DimCust.Nomor and DimCust.ExpDate is null and Penj.batal=0 group by WaktuID,KendaraanID,SalesmanID,CustomerID order by WaktuID,KendaraanID,SalesmanID,CustomerID
where
Kemudian mentransformasikan ke FactPenjualanKend sesuai dengan kolom yang telah ditentukan. 11. Update FilterTimeStamp, berisi query : exec ProcUpdateFilterTimeStamp ? dan Parameter : FactPenjualanKend L22
12. Update Batal (paling bawah), berisi query : declare @WaktuID int declare @KendaraanID int declare @SalesmanID int declare @CustomerID int declare @AccessoriesID int declare cursor1 cursor forward_only for select FactPenjualanKendAcc.WaktuID, FactPenjualanKendAcc.KendaraanID, FactPenjualanKendAcc.SalesmanID, FactPenjualanKendAcc.CustomerID, FactPenjualanKendAcc.AccessoriesID from TblStg_Penjualan, FactPenjualanKendAcc, DimWaktu, DimKendaraan, DimSalesman, DimCustomer, DimAccessories, TblStg_Matching, TblStg_PesananKend, TblStg_MatchingAcc where TblStg_Penjualan.batal=1 and FactPenjualanKendAcc.WaktuID=DimWaktu.WaktuID and year(TblStg_Penjualan.tanggal)=DimWaktu.Tahun and month(TblStg_Penjualan.tanggal)=DimWaktu.Bulan and day(TblStg_Penjualan.tanggal)=DimWaktu.Hari and FactPenjualanKendAcc.KendaraanID=DimKendaraan.KendaraanID and TblStg_Penjualan.norangka=DimKendaraan.NoRangka and FactPenjualanKendAcc.SalesmanID=DimSalesman.SalesmanID and TblStg_Penjualan.nomor_matching=TblStg_Matching.nomor and TblStg_Matching.nomor_pesanan=TblStg_PesananKend.nomor and TblStg_PesananKend.kode_salesman=DimSalesman.Kode and FactPenjualanKendAcc.CustomerID=DimCustomer.CustomerID and TblStg_PesananKend.nomor_customer=DimCustomer.Nomor and FactPenjualanKendAcc.AccessoriesID=DimAccessories.AccessoriesID and TblStg_Matching.nomor_pesanan=TblStg_MatchingAcc.nomor_pesanan and TblStg_MatchingAcc.kode_accessories=DimAccessories.Kode open cursor1 L23
fetch next from cursor1 into @WaktuID,@KendaraanID,@SalesmanID,@CustomerID,@AccessoriesID while @@fetch_status=0 begin delete from FactPenjualanKendAcc where WaktuID=@WaktuID and KendaraanID=@KendaraanID and SalesmanID=@SalesmanID and CustomerID=@CustomerID and AccessoriesID=@AccessoriesID fetch next from cursor1 into @WaktuID,@KendaraanID,@SalesmanID,@CustomerID,@AccessoriesID end close cursor1 deallocate cursor1 13. DWH PenjualanKendAcc, berisi query : if exists (select * from FilterTimeStamp as FTS FTS.TableName='FactPenjualanKendAcc') select WaktuID,KendaraanID,SalesmanID,CustomerID,AccessoriesID, sum(MtchAcc.jumlahpasang) as TotalUnitAccTerjual, sum(MtchAcc.totaldpphargajual) as TotalRpAccTerjual from DimWaktu as DimWkt, DimSalesman as DimSales, DimKendaraan as DimKend, DimCustomer as DimCust, DimAccessories as DimAcc, TblStg_Penjualan as Penj, TblStg_Matching as Mtch, TblStg_PesananKend as PesananKend, TblStg_MatchingAcc as MtchAcc where year(Penj.tanggal)=DimWkt.Tahun and month(Penj.tanggal)=DimWkt.Bulan and day(Penj.tanggal)=DimWkt.Hari and Penj.nomor_matching=Mtch.nomor and Mtch.nomor_pesanan=PesananKend.nomor and PesananKend.kode_salesman=DimSales.Kode and DimSales.ExpDate is null and Mtch.norangka=DimKend.NoRangka and DimKend.ExpDate is null and PesananKend.nomor_customer=DimCust.Nomor and L24
where
DimCust.ExpDate is null and Mtch.nomor_pesanan=MtchAcc.nomor_pesanan and MtchAcc.jumlahpasang<>0 and MtchAcc.kode_accessories=DimAcc.Kode and DimAcc.ExpDate is null and Penj.batal=0 and Penj.tglsimpan>(select LastETLDate from FilterTimeStamp where TableName='FactPenjualanKendAcc') group by WaktuID,KendaraanID,SalesmanID,CustomerID,AccessoriesID order by WaktuID,KendaraanID,SalesmanID,CustomerID,AccessoriesID else select WaktuID,KendaraanID,SalesmanID,CustomerID,AccessoriesID, sum(MtchAcc.jumlahpasang) as TotalUnitAccTerjual, sum(MtchAcc.totaldpphargajual) as TotalRpAccTerjual from DimWaktu as DimWkt, DimSalesman as DimSales, DimKendaraan as DimKend, DimCustomer as DimCust, DimAccessories as DimAcc, TblStg_Penjualan as Penj, TblStg_Matching as Mtch, TblStg_PesananKend as PesananKend, TblStg_MatchingAcc as MtchAcc where year(Penj.tanggal)=DimWkt.Tahun and month(Penj.tanggal)=DimWkt.Bulan and day(Penj.tanggal)=DimWkt.Hari and Penj.nomor_matching=Mtch.nomor and Mtch.nomor_pesanan=PesananKend.nomor and PesananKend.kode_salesman=DimSales.Kode and DimSales.ExpDate is null and Mtch.norangka=DimKend.NoRangka and DimKend.ExpDate is null and PesananKend.nomor_customer=DimCust.Nomor and DimCust.ExpDate is null and Mtch.nomor_pesanan=MtchAcc.nomor_pesanan and MtchAcc.jumlahpasang<>0 and MtchAcc.kode_accessories=DimAcc.Kode and DimAcc.ExpDate is null and Penj.batal=0 group by WaktuID,KendaraanID,SalesmanID,CustomerID,AccessoriesID order by WaktuID,KendaraanID,SalesmanID,CustomerID,AccessoriesID
L25
Kemudian mentransformasikan ke FactPenjualanKendAcc sesuai dengan kolom yang telah ditentukan. 14. Update FilterTimeStamp, berisi query : exec ProcUpdateFilterTimeStamp ? dan Parameter : FactPenjualanKendAcc
DTS Fakta Aksesoris Purna Jual 1. Truncate TblStg_AccPurnaJual, berisi query : truncate table TblStg_AccPurnaJual 2. Staging AccPurnaJual, berisi query : select nomor,norangka,kode_accessories,nomor_customer,tanggal, jumlah,hargajualakhir,hargapokok,kode_salesman,tglsimpan,batal from UntT_AccessoriesPurnaJual Kemudian mentransformasikan ke TblStg_AccPurnaJual sesuai dengan kolom yang telah ditentukan. 3. Update Batal, berisi query : declare @WaktuID int declare @SalesmanID int declare @CustomerID int declare @AccessoriesID int declare cursor1 cursor forward_only for select FactAccessoriesPurnaJual.WaktuID, FactAccessoriesPurnaJual.SalesmanID, FactAccessoriesPurnaJual.CustomerID, FactAccessoriesPurnaJual.AccessoriesID from TblStg_AccPurnaJual, FactAccessoriesPurnaJual, DimWaktu, DimSalesman, DimCustomer, L26
DimAccessories where TblStg_AccPurnaJual.batal=1 and FactAccessoriesPurnaJual.WaktuID=DimWaktu.WaktuID and year(TblStg_AccPurnaJual.tanggal)=DimWaktu.Tahun and month(TblStg_AccPurnaJual.tanggal)=DimWaktu.Bulan and day(TblStg_AccPurnaJual.tanggal)=DimWaktu.Hari and FactAccessoriesPurnaJual.SalesmanID=DimSalesman.SalesmanID and TblStg_AccPurnaJual.kode_salesman=DimSalesman.kode and FactAccessoriesPurnaJual.CustomerID=DimCustomer.CustomerID and TblStg_AccPurnaJual.nomor_customer=DimCustomer.nomor and FactAccessoriesPurnaJual.AccessoriesID=DimAccessories.AccessoriesID and TblStg_AccPurnaJual.kode_accessories=DimAccessories.kode open cursor1 fetch next from cursor1 into @WaktuID,@SalesmanID,@CustomerID,@AccessoriesID while @@fetch_status=0 begin delete from FactAccessoriesPurnaJual where WaktuID=@WaktuID and SalesmanID=@SalesmanID and CustomerID=@CustomerID and AccessoriesID=@AccessoriesID fetch next from cursor1 into @WaktuID,@SalesmanID,@CustomerID,@AccessoriesID end close cursor1 deallocate cursor1 4. DWH AccessoriesPUrnaJual, berisi query : if exists (select * from FilterTimeStamp as FTS FTS.TableName='FactAccPurnaJual') select WaktuID,SalesmanID,CustomerID,AccessoriesID, sum(APJ.jumlah) as TotalUnitAccPurnaJual, sum(APJ.hargajualakhir) as TotalRpAccPurnaJual, sum(APJ.hargajualakhir-APJ.hargapokok) as TotalRpLaba from DimWaktu as DimWkt, DimSalesman as DimSales, DimCustomer as DimCust, DimAccessories as DimAcc, TblStg_AccPurnaJual as APJ where year(APJ.tanggal)=DimWkt.Tahun and L27
where
month(APJ.tanggal)=DimWkt.Bulan and day(APJ.tanggal)=DimWkt.Hari and APJ.nomor_customer=DimCust.nomor and APJ.kode_salesman=DimSales.kode and APJ.kode_accessories=DimAcc.kode and DimSales.ExpDate is null and DimCust.ExpDate is null and DimAcc.ExpDate is null and APJ.batal=0 and APJ.tglsimpan>(select LastETLDate from FilterTimeStamp TableName='FactAccPurnaJual') group by WaktuID,SalesmanID,CustomerID,AccessoriesID order by WaktuID,SalesmanID,CustomerID,AccessoriesID else select WaktuID,SalesmanID,CustomerID,AccessoriesID, sum(APJ.jumlah) as TotalUnitAccPurnaJual, sum(APJ.hargajualakhir) as TotalRpAccPurnaJual, sum(APJ.hargajualakhir-APJ.hargapokok) as TotalRpLaba from DimWaktu as DimWkt, DimSalesman as DimSales, DimCustomer as DimCust, DimAccessories as DimAcc, TblStg_AccPurnaJual as APJ where year(APJ.tanggal)=DimWkt.Tahun and month(APJ.tanggal)=DimWkt.Bulan and day(APJ.tanggal)=DimWkt.Hari and APJ.nomor_customer=DimCust.nomor and APJ.kode_salesman=DimSales.kode and APJ.kode_accessories=DimAcc.kode and DimSales.ExpDate is null and DimCust.ExpDate is null and DimAcc.ExpDate is null and APJ.batal=0 group by WaktuID,SalesmanID,CustomerID,AccessoriesID order by WaktuID,SalesmanID,CustomerID,AccessoriesID
where
Kemudian mentransformasikan ke FactAccessoriesPurnaJual sesuai dengan kolom yang telah ditentukan. 5. Update FilterTimeStamp, berisi query : exec ProcUpdateFilterTimeStamp ? dan Parameter : FactAccPurnaJual
L28
6)
Membuat cube menggunakan SQL Server 2000 Analysis Manager, sehingga dihasilkan tiga cube : 1. Cube Penjualan Aksesoris 2. Cube Penjualan Aksesoris Purna Jual 3. Cube Penjualan Kendaraan
7)
Membuat login security terhadap user-user yang diperbolehkan mengakses database ‘OtoBITzOLAP’, yang merupakan hasil implementasi data warehouse di komputer server. Dengan demikian, user yang berhak dapat mengakses cube yang telah dibentuk.
8)
Melatih user cara mengakses cube yang telah dibentuk menggunakan Microsoft Excel 2003. Langkah-langkahnya : 1. Membuka ‘Microsoft Excel 2003’. 2. Pilih ‘Data’ | ‘Pivot Table and Pivot Chart Report’. 3. Pilih ‘External Data Source’. 4. Pilih ‘Pivot Table’ atau ‘Pivot Chart report’ sesuai keinginan dan ‘Next’. 5. Pilih ‘Get Data’. 6. Pilih ‘OLAP Cubes’. 7. Double click ‘
’. 8. Isi nama data source sesuai keinginan, pilih OLAP Provider ‘Microsoft OLE DB Provider for Analysis Service 9.0’, pilih ‘Connect’ dan isi nama server serta user dan password yang telah diberikan oleh administrator dan ‘Next’. 9. Pilih database yang ingin diakses ‘OtoBITzOLAP’ dan ‘Finish’. L29
10. Pilih Cube apa yang ingin diakses. 11. Lakukan langkah 6 sampai 10 untuk membuat dua data source lainnya ‘Cube Penjualan Aksesoris’ dan ‘Cube Penjualan Aksesoris Purna Jual’. 12. Langkah 6 sampai 11 hanya dilakukan sekali saja. Untuk selanjutnya user hanya perlu melakukan langkah 1 sampai 5 kemudian langsung ke langkah 13 dan seterusnya. 13. Double salah satu dari tiga data source yang telah dibuat untuk diakses dan pilih ‘Next’ kemudian pilih ‘Layout’ 14. Sesuaikan layout dengan kebutuhan. 15. Pilih ‘Ok’ kemudian ‘Finish’. 16. Tabel atau Chart sudah terbentuk, dapat pula mengubah tipe chart sesuai keinginan dan data juga dapat dipilih dan didrill-down sesuai kriteria tertentu.
Gambar L1 – Langkah 1 dan 2
L30
Gambar L2 – Langkah 3 dan 4
Gambar L3 – Langkah 5
L31
Gambar L4 – Langkah 6, 7, dan 8
Gambar L5 – Langkah 9
L32
Gambar L6 – Langkah 10
Gambar L7 – Langkah 11
L33
Gambar L8 – Langkah 14
Gambar L9 – Langkah 16 (Tampilan Berbentuk Chart)
L34
Gambar L10 – Langkah 16 (Tampilan Berbentuk Tabel)
L35
Bentuk-Bentuk Tampilan
Gambar L11 – Unit Kendaraan Terjual Berdasarkan Supervisor (Diagram Batang)
Gambar L12 – Unit Kendaraan Terjual Berdasarkan Supervisor (Tabel)
L36
Gambar L13 – Unit Kendaraan Terjual Berdasarkan Customer (Grafik Lingkaran)
Gambar L14 – Unit Kendaraan Terjual Berdasarkan Customer (Tabel) L37
Gambar L15 – Unit Aksesoris Terjual Berdasarkan Tahun (Diagram Garis)
Gambar L16 – Unit Aksesoris Terjual Berdasarkan Tahun (Tabel) L38
Gambar L17 – Unit Aksesoris Terjual vs Supervisor, Tahun (Diagram Batang)
Gambar L18 – Unit Aksesoris Terjual vs Supervisor, Tahun (Tabel)
L39