# A. Dimensi Waktu

1. Buatlah sebuah database yang digunakan sebagai **OLAP** dengan nama **dw\_LegendVehicle**.

```sql
CREATE DATABASES dw_LegendVehicle;
use dw_LegendVehicle;
```

2. Buatlah table untuk menyimpan data master waktu atau yang disebut dengan **tabel dimensi.** Beri nama table tersebut dengan nama **dimDate**.

```sql
CREATE TABLE dimDate(
id_dimDate int not null AUTO_INCREMENT PRIMARY KEY
date date
year int
month int
day int
);
```

***

Pada tahapan selanjutnya, untuk membuat tabel dimensi dimDate , maka diperlukan generate data tanggal. Data tanggal yang disiapkan pada tabel dimDate menyesuaikan dengan proses bisnis yang berjalan.&#x20;

Proses bisnis pada LegendVehicle adalah 5 tahun. Sehingga data pada tabel dimdate yang harus tersedia adalah tanggal selama 5 tahun. Mulai dari 1 Januari 2023

1. Buka PDI Spoon. Buat Transformation baru -> **File - New - Transformation.**
2. Drag and Drop beberapa objek yaitu:&#x20;

* **Generate Rows:** digunakan untuk membuat baris data baru.
* **Add Sequence:** digunakan untuk membuat sequence, dalam hal ini membuat data di setiap harinya.
* **Calculator:** digunakan untuk menjumlahkan hari dan mengambil data tahun, bulan dan hari. &#x20;
* **Select Values:** digunakan untuk memilih field yang digunakan.
* **Database Lookup:** digunakan untuk melihat dan memastikan bahwa data yang akan dimasukkan kedalam tabel dimDate tidak kembar atau sama dengan data yang ada pada tabel dimDate itu sendiri.
* **Filter Rows:** digunakan untuk mengambil data yang belum ada pada table dimDate setelah dicek sebelumnya.
* **Table Output:** digunakan untuk menyimpan data pada tabel tujuan (dimDate).

<figure><img src="https://131666206-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8vWoXph4o7oGmof2eLze%2Fuploads%2FA1BYNxzJ0GXbMGkZE4BZ%2Fimage.png?alt=media&#x26;token=c5efffb8-39cf-4869-8227-913b23fec535" alt=""><figcaption></figcaption></figure>

3. Konfigurasi pada **Generate Rows** adalah merubah **limit** menjadi **1825** dimana memiliki arti bahwa data yang akan dibuat sebanyak 1825 data. 1825 merupakan jumlah hari dalam 5 tahun ( 365 hari x 5 tahun ).&#x20;
4. Membuat fields baru bernama **CurrentDate** dengan **type** data **Date** dan **format dd-MM-yyyy** serta **value** awal **01-01-2003**.

<figure><img src="https://131666206-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8vWoXph4o7oGmof2eLze%2Fuploads%2FHUnWuOxIwyK8owalYHqK%2Fimage.png?alt=media&#x26;token=c07279f5-c615-4674-b400-c1ddd2ca6911" alt=""><figcaption><p>Gambar konfigurasi generate rows</p></figcaption></figure>

5. Hubungkan output dari **Generate Rows** menuju **Add Sequence**.
6. Konfigurasi pada **Add Sequences** adalah merubah **Name of value** menjadi **incrementDay** dengan **start value** bernilai **0** dan **increment by** bernilai **1**&#x20;

<figure><img src="https://131666206-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8vWoXph4o7oGmof2eLze%2Fuploads%2FE6WpOHP0Tq4HTjjUSMAw%2Fimage.png?alt=media&#x26;token=df88408e-e366-4304-9ce1-ed946c52efc0" alt=""><figcaption><p>Gambar konfigurasi add sequences</p></figcaption></figure>

7. Hubungkan output dari **add sequences** menuju **calculator.**
8. Konfigurasi pada calculator dengan membuat fields baru sebagai berikut:

* **streamDate** merupakan kalkulasi dari **CurrentDate + incrementDay**
* **streamYear** merupakan **Year** dari **streamDate**
* **streamMonth** merupakan **Month** dari **streamDate**
* **streamDay** merupakan **Day of month** dari **streamDate**

<figure><img src="https://131666206-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8vWoXph4o7oGmof2eLze%2Fuploads%2FMx1nDxQF40qoh62cBJNs%2Fimage.png?alt=media&#x26;token=ccff29fa-a679-4484-a81c-a3d0780fd179" alt=""><figcaption><p>Gambar konfigurasi kalkulator</p></figcaption></figure>

9. Hubungkan output dari **calculator** menuju **Select values**
10. Konfigurasi pada **select values** adalah dengan menekan tombol **Get fields to select** pada tab **Select & Alter**. Secara otomatis semua fields dari data input akan muncul.
11. Dikarenakan tidak semua fields digunakan, maka pada tab **Remove** diisikan fields **CurrentDate** dan **incrementDay** dikarenakan kedua fields tersebut tidak digunakan.

<figure><img src="https://131666206-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8vWoXph4o7oGmof2eLze%2Fuploads%2F33SsKWLGM8dQiFO0n2Uk%2Fimage.png?alt=media&#x26;token=4a046599-042e-4643-b404-715f29a4b1dd" alt=""><figcaption><p>Gambar konfigurasi tab select &#x26; alter pada select values</p></figcaption></figure>

<figure><img src="https://131666206-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8vWoXph4o7oGmof2eLze%2Fuploads%2Fo4cIk6Qog92Ja3YNLA6I%2Fimage.png?alt=media&#x26;token=5f8ac2a2-a015-4bf6-ab5c-e76cf8967b10" alt=""><figcaption><p>Gambar konfigurasi tab remove pada select values</p></figcaption></figure>

12. Hubungkan output select values menuju database lookup.
13. Sebelum melakukan konfigurasi pada **database lookup**, buatlah koneksi terlebih dahulu pada database melalui **File - New - Database Connection**. Gunakan **Connection type MySQL** dengan **host name , database name, port number, username dan password** sesuai konfigurasi MySQL pada device masing-masing. beri nama **connection name** tersebut dengan nama **conn\_dw\_destination**.

<figure><img src="https://131666206-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8vWoXph4o7oGmof2eLze%2Fuploads%2Ff9JjyG7dq849kDNiFzJg%2Fimage.png?alt=media&#x26;token=17afb264-1b68-435e-8420-f09082721efc" alt=""><figcaption><p>Gambar konfigurasi database connection</p></figcaption></figure>

14. Konfigurasi pada **database lookup** adalah dengan memberikan **connection** dengan koneksi yang sudah dibuat pada step sebelumnya. dengan **schema** nama database yang digunakan dan **tabel dimdate** yang telah dibuat pada langkah pertama.
15. Field yang akan dicek untuk melihat kesamaan isi datanya agar tidak kembar adalah:

* field **date** pada table **dimdate** dengan field **streamDate**
* field **year** pada table **dimdate** dengan field **streamYear**
* field **month** pada table **dimdate** dengan field **streamMonth**
* field **day** pada table **dimdate** dengan field **streamDay**

16. Field yang akan di **retrive** adalah field yang ada pada table **dimDate** yaitu **date, year, month,** dan **day**.

<figure><img src="https://131666206-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8vWoXph4o7oGmof2eLze%2Fuploads%2FDUQnmVklYYqjZVKkScE7%2Fimage.png?alt=media&#x26;token=033114de-1e61-4ef5-99c3-75a42228e0f5" alt=""><figcaption><p>Gambar konfigurasi database lookup</p></figcaption></figure>

17. Hubungkan output dari **database lookup** dengan **filter rows**
18. Konfigurasi pada **filter rows** adalah dengan melakukan konfigurasi **output true data** pada **table output**. Pada bagian ini data yang tidak memiliki kesamaan pada tahapan sebelumnya akan dicek dimana jika **fields Stream** tidak memiliki kesamaan dengan **field dimDate**, maka **field dimDate** tersebut akan bernilai **null**. Pada pernyataan kondisi tuliskan ( **date is null and year is null and month is null and day is nu**ll)

<figure><img src="https://131666206-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8vWoXph4o7oGmof2eLze%2Fuploads%2FsM1EbkT9hQhYKNFUf1CN%2Fimage.png?alt=media&#x26;token=e0b5d951-81c1-4041-892c-e83be0f7a98a" alt=""><figcaption><p>Gambar konfigurasi filter rows</p></figcaption></figure>

19. Hubungkan output dari **filter rows** menuju **table output**.
20. &#x20;Konfigurasi pada **table output** adalah memberikan koneksi pada **conn\_dw\_destination** dengan **schema dw\_legendvehicle** dan table **dimdate**.
21. Aktifkan **specify database fields**.
22. Pada tab **Database fields**, mapping data input **streamDate, streamYear, streamMonth** dan **streamDay** dengan fields yang ada pada **dimDate**. Pada tahapan ini akan dilakukan insert data menuju tabel **dimDate**.

<figure><img src="https://131666206-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8vWoXph4o7oGmof2eLze%2Fuploads%2FyAP0JNHv9xdxrxcyefWn%2Fimage.png?alt=media&#x26;token=8580d32d-a4ad-49e2-8c54-aa6404694916" alt=""><figcaption><p>Gambar Konfiigurasi table output</p></figcaption></figure>

23. cek isi table dimdate pada database. Jika sukses maka pada table dimdate akan terisi 1825 data.&#x20;

<figure><img src="https://131666206-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8vWoXph4o7oGmof2eLze%2Fuploads%2FXV8hmLiQlkX6d3IUJLXD%2Fimage.png?alt=media&#x26;token=2602d736-4c25-4f38-b17a-3be6068d1fd6" alt=""><figcaption><p>Gambar isi tabel dimDate</p></figcaption></figure>

***

**TUGAS 1**

1. Buka preview tab pada execution result area di setiap proses object. amati input dan output data yang ada. bandingkan di setiap prosesnya. jelaskan perbedaan disetiap prosesnya.

| Proses Objek    | SS data input | SS data output | Keterangan |
| --------------- | ------------- | -------------- | ---------- |
| Generate rows   |               |                |            |
| Add Sequences   |               |                |            |
| Calculator      |               |                |            |
| Select values   |               |                |            |
| Database lookup |               |                |            |
| Filter rows     |               |                |            |
| Table Output    |               |                |            |
