distribution

Uso

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

- ou -

distribution
Valor padrão
Nenhum

Aceita
O nome de uma coluna em uma tabela derivada ou de agregação

Regras especiais
O distribution só é compatível com bancos de dados Redshift e Aster.

Definição

O parâmetro distribution permite especificar a coluna de uma tabela derivada persistente (PDT) ou uma tabela agregada em que uma chave de distribuição será aplicada. A chave de distribuição espalha os dados em um cluster. Quando duas tabelas são unidas pela coluna especificada no parâmetro distribution, o banco de dados pode encontrar os dados unidos no mesmo nó para minimizar a E/S entre nós. O parâmetro distribution funciona apenas com bancos de dados Redshift e Aster. Para outros dialetos SQL (como MySQL e Postgres), use indexes.

O parâmetro distribution funciona apenas com tabelas persistentes, como PDTs e tabelas agregadas. distribution não é compatível com tabelas derivadas sem uma estratégia de persistência.

Além disso, o parâmetro distribution não é compatível com tabelas derivadas definidas usando create_process ou sql_create.

Em geral, uma chave de distribuição precisa ser aplicada à coluna que vai atuar como uma chave externa (a coluna usada para unir sua tabela a outras). Consulte a documentação do seu dialeto para conhecer as práticas recomendadas.

Exemplos

Crie uma tabela derivada persistente customer_order_facts com uma chave de distribuição em 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"
  }
}

Crie uma tabela derivada customer_order_facts com base em uma consulta SQL com uma chave de distribuição em 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"
  }
}