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
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 )
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,
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 )
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 )
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 )
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 )
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 )
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
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.
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')
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
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.
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')
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
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
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
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
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
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
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
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
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
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
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
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,
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
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
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’.
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 L2 – Langkah 3 dan 4
Gambar L4 – Langkah 6, 7, dan 8
Gambar L6 – Langkah 10
Gambar L8 – Langkah 14
Bentuk-Bentuk Tampilan
Gambar L11 – Unit Kendaraan Terjual Berdasarkan Supervisor (Diagram Batang)
Gambar L13 – Unit Kendaraan Terjual Berdasarkan Customer (Grafik Lingkaran)
Gambar L15 – Unit Aksesoris Terjual Berdasarkan Tahun (Diagram Garis)
Gambar L17 – Unit Aksesoris Terjual vs Supervisor, Tahun (Diagram Batang)