distribution

Penggunaan

view: my_view {
  derived_table: {
    distribution: "customer_id"
    ...
  }
}
Hierarki
distribution

- atau -

distribution
Nilai Default
Tidak ada

Menerima
Nama kolom dalam tabel turunan atau tabel gabungan

Aturan Khusus
distribution hanya didukung untuk database Redshift dan Aster.

Definisi

Parameter distribution memungkinkan Anda menentukan kolom dari tabel turunan persisten (PDT) atau tabel gabungan yang akan diterapkan kunci distribusinya. Kunci distribusi menyebarkan data di sekitar cluster. Saat dua tabel digabungkan oleh kolom yang ditentukan dalam parameter distribution, database dapat menemukan data gabungan pada node yang sama untuk meminimalkan I/O antar-node. Parameter distribution hanya berfungsi dengan database Redshift dan Aster. Untuk dialek SQL lainnya (seperti MySQL dan Postgres), gunakan indexes.

Parameter distribution hanya berfungsi dengan tabel yang persisten, seperti PDT dan tabel gabungan. distribution tidak didukung untuk tabel turunan tanpa strategi persistensi.

Selain itu, parameter distribution tidak didukung untuk tabel turunan yang ditentukan menggunakan create_process atau sql_create.

Secara umum, kunci distribusi harus diterapkan ke kolom yang akan bertindak sebagai kunci asing (kolom yang Anda gunakan untuk menggabungkan tabel Anda dengan tabel lain). Lihat dokumentasi dialek Anda untuk mengetahui praktik terbaik.

Contoh

Buat tabel turunan persisten customer_order_facts dengan kunci distribusi di customer_id:

view: customer_order_facts {
  derived_table: {
    explore_source: order {
      column: customer_id { field: order.customer_id }
      column: lifetime_orders { field: order.lifetime_orders }
    }
    datagroup_trigger: order_datagroup
    distribution: "customer_id"
  }
}

Buat tabel turunan customer_order_facts berdasarkan kueri SQL dengan kunci distribusi pada customer_id:

view: customer_order_facts {
  derived_table: {
    sql:
      SELECT
        customer_id,
        COUNT(*) AS lifetime_orders
      FROM
        order ;;
    persist_for: "24 hours"
    distribution: "customer_id"
  }
}