Menggunakan kalender kustom di Looker

Untuk dialek yang mendukungnya, fitur kalender kustom di Looker memungkinkan Anda menentukan kalender kustom di database, seperti kalender fiskal atau retail tertentu, lalu menerapkan kalender tersebut ke grup dimensi berbasis tanggal dalam model LookML. Pengguna Anda kemudian dapat membuat kueri Eksplorasi menggunakan rentang waktu kustom Anda, seperti custom_week, custom_period, seolah-olah itu adalah rentang waktu standar.

Prasyarat

Sebelum menggunakan kalender kustom, pastikan prasyarat berikut terpenuhi:

Membuat kalender kustom

Untuk menerapkan kalender kustom, Anda perlu melakukan langkah-langkah umum berikut yang dijelaskan di bagian berikut:

  1. Buat tabel kalender di database Anda
  2. Menentukan tampilan kalender kustom di LookML
  3. Membuat grup dimensi kalender kustom

Membuat tabel kalender di database Anda

Untuk menghitung tanggal kalender kustom, Looker memerlukan tabel kalender khusus di database Anda yang menentukan jangka waktu kustom. Tabel Anda harus memiliki kolom tanggal referensi yang menggunakan tanggal kalender standar. Looker menggabungkan tabel kalender ke tabel data Anda (seperti tabel orders) berdasarkan kolom tanggal referensi.

Nama kolom dalam tabel kalender bersifat fleksibel. Saat menentukan tampilan kalender kustom di LookML, Anda akan menggunakan blok calendar_definition untuk memetakan kolom dalam database ke nama jangka waktu kustom standar.

Berikut adalah contoh skema tabel untuk tabel kalender bernama fiscal_calendar_table.

Nama Kolom Jenis Data Deskripsi
reference_date DATE Tanggal kalender standar (seperti '2023-01-01'). Digunakan untuk bergabung. Harus berupa kunci utama atau unik.
fiscal_year VARCHAR Tahun fiskal (seperti 'FY2023').
fiscal_year_num INTEGER Tahun fiskal numerik (seperti 2023).
fiscal_quarter_of_year VARCHAR Kuartal fiskal (seperti 'FQ1').
fiscal_quarter_of_year_num INTEGER Kuartal fiskal numerik (seperti 1).
fiscal_week_of_year VARCHAR Minggu fiskal dalam setahun (seperti 'Week01', 'FW01').
fiscal_week_of_year_num INTEGER Minggu fiskal numerik dalam setahun (seperti 1).
fiscal_period_of_year VARCHAR Nama periode kustom (seperti 'P01').
fiscal_period_of_year_num INTEGER Periode kustom numerik (seperti 1).
season VARCHAR Nama musim kustom (seperti 'Musim Dingin').
season_num INTEGER Musim kustom numerik (seperti 1).

Untuk mengilustrasikannya, berikut beberapa contoh baris dari tabel fiscal_calendar_table:

reference_date fiscal_year fiscal_year_num fiscal_period fiscal_period_num
2023-12-25 FY2024 2024 P01 1
2023-12-26 FY2024 2024 P01 1
2024-01-01 FY2024 2024 P02 2
2024-01-02 FY2024 2024 P02 2

Menentukan tampilan kalender kustom di LookML

Setelah membuat tabel kalender di database, Anda perlu membuat tampilan LookML untuk memodelkan tabel kalender database.

File tampilan kalender kustom harus menyertakan hal berikut:

  • Parameter sql_table_name yang mengarah ke tabel kalender kustom dalam database Anda.
  • Blok calendar_definition untuk memetakan kolom tabel Anda ke jenis jangka waktu kustom Looker.
  • Parameter dimension untuk memodelkan kolom tabel kalender kustom di database Anda.

Berikut adalah contoh file tampilan bernama fiscal_calendar.view.lkml yang memodelkan contoh fiscal_calendar_table:

view: fiscal_calendar {
  sql_table_name: fiscal_calendar_table ;;
  calendar_definition: {
    reference_date: reference_date
    timeframe_mapping: {
      custom_year: fiscal_year
      custom_quarter: fiscal_quarter_of_year
      custom_date: fiscal_date
      custom_week: fiscal_week_of_year
      custom_period: fiscal_period_of_year
      custom_season: season
    }
    timeframe_ordinal_mapping: {
      custom_year: fiscal_year_num
      custom_quarter: fiscal_quarter_of_year_num
      custom_date: fiscal_date_num
      custom_week: fiscal_week_of_year_num
      custom_period: fiscal_period_of_year_num
      custom_season: season_num
    }
  }

  dimension: reference_date {
    type: date
    primary_key: yes
    sql: ${TABLE}.reference_date ;; # Assuming column name is reference_date
  }

  dimension: fiscal_date {
  type: string
  sql: FORMAT_TIMESTAMP('%Y-%m-%d', ${TABLE}.reference_date) ;;
}

  dimension: fiscal_year {
    type: string
    sql: ${TABLE}.fiscal_year ;;
  }

  dimension: fiscal_year_num {
    type: number
    sql: ${TABLE}.fiscal_year_num ;;
  }

  # ... other dimensions for quarters, weeks, periods, seasons, etc. ...

  # Example placeholder dimensions for unused timeframes
  dimension: season {
    type: string
    sql: 'N/A' ;;
    hidden: yes
  }
  dimension: season_num {
    type: number
    sql: 0 ;;
    hidden: yes
  }
}

Lihat halaman parameter calendar_definition untuk mengetahui detail parameter calendar_definition.

Membuat grup dimensi kalender kustom

Setelah membuat tabel kalender di database dan membuat model tabel kalender database di LookML, Anda dapat membuat grup dimensi type: custom_calendar yang didasarkan pada tampilan kalender kustom.

Misalnya, berikut adalah file tampilan bernama orders.view.lkml yang menentukan grup dimensi kalender kustom.

include: "/views/fiscal_calendar.view"

view: orders {
  sql_table_name: public.orders ;;

  dimension_group: created {
    type: custom_calendar

    # Optional list of allowed timeframes
    custom_timeframes: [
      custom_date,
      custom_week,
      custom_year
    ]
    sql: ${TABLE}.created_at ;;
    based_on_calendar: fiscal_calendar  # This links to your calendar view
  }
}

Dengan LookML ini, Looker akan otomatis membuat serangkaian jangka waktu kustom baru untuk grup dimensi created (seperti "Tahun Kustom Dibuat", "Minggu Kustom Dibuat"). Kemudian, pengguna dapat menggunakan kolom ini untuk penjelajahan, pelaporan, dan pemfilteran.

Lihat halaman dokumentasi dimension_group untuk mengetahui detail tentang cara membuat grup dimensi untuk kalender kustom.

Hal-hal yang perlu dipertimbangkan

Perhatikan batasan berikut pada kalender kustom:

  • Ukuran yang difilter: Kalender kustom tidak didukung untuk ukuran yang difilter: Anda tidak dapat mereferensikan dimensi kalender kustom dalam parameter filters dari ukuran.
  • Filter lanjutan: Kalender kustom tidak didukung dalam filter lanjutan: Anda tidak dapat mereferensikan dimensi kalender kustom dalam ekspresi filter Looker.
  • Gabungan simetris: Dalam beberapa skenario gabungan yang kompleks, gabungan simetris mungkin tidak sepenuhnya didukung untuk kueri yang melibatkan dimensi kalender kustom.
  • Pengisian dimensi: Looker tidak dapat mengisi dimensi tanggal yang tidak ada untuk dimensi kalender kustom.
  • Memfilter di luar batas kalender: Jika filter diterapkan ke jangka waktu kustom yang menghasilkan tanggal yang tidak ada dalam kalender, hasil yang tidak terduga dapat ditampilkan. Hal ini berkaitan dengan aritmetika ordinal yang digunakan untuk menghitung awal periode.
  • Perilaku konversi zona waktu: Looker mematuhi semantik konversi zona waktu yang ada. Artinya, jika zona waktu database dan kueri cocok, tidak ada konversi zona waktu yang diterapkan. Jika tidak setuju, Looker akan menerapkan konversi zona waktu. Anda dapat mengganti perilaku ini dengan menentukan convert_tz: no ke grup dimensi kalender kustom Anda.
  • Pengurutan default: Looker menerapkan pengurutan default ke kolom tanggal pertama saat kolom kalender kustom dipilih. Pengguna kemudian dapat menentukan pengurutan data yang berbeda.
  • Filter kalender kustom: Dimensi kalender kustom mendukung opsi filter tertentu, seperti is in the last 3 custom years atau is this custom period. Untuk mengetahui informasi selengkapnya, lihat bagian Filter kalender kustom di halaman dokumentasi Memfilter dan membatasi data.

Dialek database yang didukung untuk kalender kustom

Tabel berikut menunjukkan dialek yang mendukung kalender kustom dalam rilis Looker terbaru:

Dialek Didukung?
Actian Avalanche
Amazon Athena
Amazon Aurora MySQL
Amazon Redshift
Amazon Redshift 2.1+
Amazon Redshift Serverless 2.1+
Apache Druid
Apache Druid 0.13.x - 0.17.x
Apache Druid 0.18+
Apache Hive 2.3+
Apache Hive 3.1.2+
Apache Spark 3+
ClickHouse
Cloudera Impala 3.1+
Cloudera Impala 3.1+ with Native Driver
Cloudera Impala with Native Driver
DataVirtuality
Databricks
Denodo 7
Denodo 8 & 9
Dremio
Dremio 11+
Exasol
Google BigQuery Legacy SQL
Google BigQuery Standard SQL
Google Cloud AlloyDB for PostgreSQL
Google Cloud PostgreSQL
Google Cloud SQL
Google Spanner
Greenplum
HyperSQL
IBM Netezza
MariaDB
Microsoft Azure PostgreSQL
Microsoft Azure SQL Database
Microsoft Azure Synapse Analytics
Microsoft SQL Server 2008+
Microsoft SQL Server 2012+
Microsoft SQL Server 2016
Microsoft SQL Server 2017+
MongoBI
MySQL
MySQL 8.0.12+
Oracle
Oracle ADWC
PostgreSQL 9.5+
PostgreSQL pre-9.5
PrestoDB
PrestoSQL
SAP HANA
SAP HANA 2+
SingleStore
SingleStore 7+
Snowflake
Teradata
Trino
Vector
Vertica