lampiran langkah-langkah pembuatan data...
TRANSCRIPT
L1
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 )
L2
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 )
L3
Nama Tabel : FactPenjualanKend Primary Key : - Surrogate Key : WaktuID, KendaraanID, SalesmanID, CustomerID Keterangan : 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 : FactAccessoriesPurnaJual Primary Key : - Surrogate Key : WaktuID, SalesmanID, CustomerID, AccessoriesID Keterangan : Tabel Fakta Aksesoris Purna Jual
SQL Query :
create table FactAccessoriesPurnaJual ( WaktuID int not null, SalesmanID int not null, CustomerID int not null,
L4
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 : TblStg_Accessories Primary Key : kode Keterangan : 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 : TblStg_Customer Primary Key : nomor Keterangan : 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 )
L5
Nama Tabel : TblStg_Kendaraan Primary Key : norangka Keterangan : 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 : TblStg_KelasKend Primary Key : kode Keterangan : Tabel Staging Kelas Kendaraan
SQL Query :
create table TblStg_KelasKend ( kode nvarchar(5) not null primary key, nama nvarchar(50), tglsimpan datetime )
Nama Tabel : TblStg_JenisKend Primary Key : kode Keterangan : 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 )
L6
Nama Tabel : TblStg_WarnaKend Primary Key : kode Keterangan : Tabel Staging Warna Kendaraan
SQL Query :
create table TblStg_WarnaKend ( kode nvarchar(10) not null primary key, nama nvarchar(50), tglsimpan datetime )
Nama Tabel : TblStg_ModelKend Primary Key : kode Keterangan : Tabel Staging Model Kendaraan
SQL Query :
create table TblStg_ModelKend ( kode nvarchar(30) not null primary key, nama nvarchar(50), tglsimpan datetime )
Nama Tabel : TblStg_TipeKend Primary Key : kode Keterangan : 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 )
L7
Nama Tabel : TblStg_Salesman Primary Key : kode Keterangan : 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 : TblStg_Supervisor Primary Key : kode Keterangan : Tabel Staging Supervisor
SQL Query :
create table TblStg_Supervisor ( kode nvarchar(5) not null primary key, nama nvarchar(50), tglsimpan datetime )
Nama Tabel : TblStg_Penjualan Primary Key : nomor Keterangan : 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 )
L8
Nama Tabel : TblStg_Matching Primary Key : nomor Keterangan : 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 : TblStg_PesananKend Primary Key : nomor Keterangan : 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 : TblStg_MatchingAcc Primary Key : nomor Keterangan : 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 )
L9
Nama Tabel : TblStg_AccPurnaJual Primary Key : nomor Keterangan : 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
L10
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.
L11
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.nilaiuangmuka from TblStg_Customer as Cust where Cust.tglsimpan>(select LastETLDate from FilterTimeStamp where TableName='DimCustomer') else
L12
select Cust.nomor,Cust.nama,Cust.alamat,Cust.kota,Cust.nilaitransaksi,Cust.nilaiuangmuka 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
L13
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.
L14
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')
L15
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 :
L16
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 where 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 where 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
Kemudian mentransformasikan ke DimSalesman sesuai dengan kolom yang
telah ditentukan.
7. Update FilterTimeStamp, berisi query : exec ProcUpdateFilterTimeStamp ?
dan Parameter : DimSalesman
L17
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 as FTS where 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 DimWaktu(Tahun,Bulan,Hari) values (@Tahun,@Bulan,@Hari) set @hari=@hari+1 end set @bulan=@bulan+1
L18
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 DimWaktu(Tahun,Bulan,Hari) values (@Tahun,@Bulan,@Hari) set @hari=@hari+1 end set @bulan=@bulan+1 end set @tahun=@tahun+1 end end
L19
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
L20
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
L21
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 as FTS where 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
L22
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 where 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
Kemudian mentransformasikan ke FactPenjualanKend sesuai dengan kolom
yang telah ditentukan.
11. Update FilterTimeStamp, berisi query : exec ProcUpdateFilterTimeStamp ?
dan Parameter : FactPenjualanKend
L23
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
L24
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 where 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
L25
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
L26
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,
L27
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 where 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
L28
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 where 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
Kemudian mentransformasikan ke FactAccessoriesPurnaJual sesuai dengan
kolom yang telah ditentukan.
5. Update FilterTimeStamp, berisi query : exec ProcUpdateFilterTimeStamp ?
dan Parameter : FactAccPurnaJual
L29
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 ‘<New Data Source>’.
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’.
L30
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
L31
Gambar L2 – Langkah 3 dan 4
Gambar L3 – Langkah 5
L32
Gambar L4 – Langkah 6, 7, dan 8
Gambar L5 – Langkah 9
L33
Gambar L6 – Langkah 10
Gambar L7 – Langkah 11
L34
Gambar L8 – Langkah 14
Gambar L9 – Langkah 16 (Tampilan Berbentuk Chart)
L35
Gambar L10 – Langkah 16 (Tampilan Berbentuk Tabel)
L36
Bentuk-Bentuk Tampilan
Gambar L11 – Unit Kendaraan Terjual Berdasarkan Supervisor (Diagram Batang)
Gambar L12 – Unit Kendaraan Terjual Berdasarkan Supervisor (Tabel)
L37
Gambar L13 – Unit Kendaraan Terjual Berdasarkan Customer (Grafik Lingkaran)
Gambar L14 – Unit Kendaraan Terjual Berdasarkan Customer (Tabel)
L38
Gambar L15 – Unit Aksesoris Terjual Berdasarkan Tahun (Diagram Garis)
Gambar L16 – Unit Aksesoris Terjual Berdasarkan Tahun (Tabel)
L39
Gambar L17 – Unit Aksesoris Terjual vs Supervisor, Tahun (Diagram Batang)
Gambar L18 – Unit Aksesoris Terjual vs Supervisor, Tahun (Tabel)