Categorias:

Sintaxe de consulta

SEMANTIC_VIEW

Especifica a exibição semântica para a consulta. Você especifica SEMANTIC_VIEW(…) em uma cláusula FROM em uma instrução SELECT.

Nota

Não é possível consultar Fatos ou métricas privadas ou usá-los na condição WHERE.

Consulte também:

FROM, Consulta de exibições semânticas

Sintaxe

SEMANTIC_VIEW(
  [<namespace>.]<semantic_view_name>
  [
    {
      METRICS <metric> [ , ... ] |
      FACTS <fact_expr>  [ , ... ]
    }
  ]
  [ DIMENSIONS <dimension_expr>  [ , ... ] ]
  [ WHERE <predicate> ]
)
Copy

Parâmetros

[namespace.]semantic_view_name

Especifica o identificador da exibição semântica a ser consultada.

Se o identificador contiver espaços ou caracteres especiais, toda a cadeia de caracteres deverá ser delimitada por aspas duplas. Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.

Para obter mais informações, consulte Requisitos para identificadores.

METRICS metric [ , ... ]

Especifica as métricas que você deseja retornar nos resultados.

Nota

  • Não é possível especificar uma expressão que usa uma métrica. Por exemplo, não é possível especificar t1.metric_1 + 1.

  • Não é possível especificar métricas privadas.

Para os nomes das métricas:

  • Você pode qualificar o nome da métrica (por exemplo, my_logical_table.my_metric).

    O uso do nome não qualificado só funciona se não houver outros identificadores com o mesmo nome não qualificado na exibição semântica. Por exemplo, se uma métrica e uma dimensão usarem o mesmo nome não qualificado, você deverá qualificar o nome da métrica na consulta.

  • Para especificar todas as métricas em uma tabela lógica, use um asterisco como curinga, qualificado pelo nome da tabela lógica (por exemplo, my_logical_table.*).

    Não é possível especificar um asterisco sem qualificá-lo com um nome de tabela.

Especifique as métricas na ordem em que elas devem aparecer nos resultados.

FACTS fact_expr [ , ... ]

Especifica os fatos que você deseja retornar nos resultados. Também é possível especificar expressões escalares que se referem a fatos ou dimensões na exibição semântica. Se você especificar uma expressão escalar, as dimensões e fatos nessa expressão devem pertencer à mesma tabela lógica.

Nota

Não é possível especificar fatos particulares.

Ao contrário das dimensões especificadas na cláusula DIMENSIONS, a consulta não agrupa os fatos especificados na cláusula FACTS. Linhas diferentes podem incluir o mesmo valor para um fato.

Especifique os fatos na ordem em que devem aparecer nos resultados.

DIMENSIONS dimension_expr [ , ... ]

Especifica as dimensões que você deseja retornar nos resultados. Você também pode especificar expressões escalares que se referem a dimensões ou fatos na exibição semântica. Se você especificar uma expressão escalar, as dimensões e fatos nessa expressão devem pertencer à mesma tabela lógica.

A consulta agrupa os resultados pelas dimensões especificadas aqui. Por exemplo, se uma tabela lógica inclui cinco valores distintos para uma dimensão, especificar essa dimensão na cláusula DIMENSIONS retorna cinco linhas.

Para os nomes das dimensões:

  • Você pode qualificar o nome da dimensão (por exemplo, my_logical_table.my_dimension). O uso do nome não qualificado só funciona se não houver outros identificadores com o mesmo nome não qualificado na exibição semântica. Por exemplo, se uma métrica e uma dimensão usarem o mesmo nome não qualificado, você deverá qualificar o nome da dimensão na consulta.

  • Para especificar todas as dimensões em uma tabela lógica, use um asterisco como curinga, qualificado pelo nome da tabela lógica (por exemplo, my_logical_table.*).

    Não é possível especificar um asterisco sem qualificá-lo com um nome de tabela.

Se você especificar uma expressão escalar, não poderá se referir a dimensões em outras exibições semânticas ou métricas.

Especifique as dimensões na ordem em que elas devem aparecer nos resultados.

Nota

Se você estiver retornando uma métrica de função de janela, você também deve retornar as dimensões especificadas nas cláusulas PARTITION BY dimension, PARTITION BY EXCLUDING dimension e ORDER BY dimension na instrução CREATE SEMANTIC VIEW para essa exibição semântica.

Consulte Definição e consulta de métricas de função de janela.

WHERE predicate

Uma expressão booliana. A expressão pode incluir operadores lógicos, funções internas e funções definidas pelo usuário (UDFs).

Na condição, você só pode se referir a dimensões, fatos e expressões que utilizam dimensões e fatos.

Se você especificar fatos de diferentes entidades, a cláusula RELATIONSHIPS na definição da exibição semântica deve definir um relacionamento entre essas entidades.

Essa condição de filtro é aplicada antes que as métricas sejam computadas.

Notas de uso

  • Na cláusula SEMANTIC_VIEW, você deve especificar pelo menos uma das seguintes cláusulas:

    • METRICS

    • DIMENSIONS

    • FACTS

    Não é possível omitir todas essas cláusulas da cláusula SEMANTIC_VIEW.

  • Ao especificar uma combinação dessas cláusulas, observe o seguinte:

    • Não é possível especificar FACTS e METRICS na mesma cláusula SEMANTIC_VIEW.

    • Embora você possa especificar FACTS e DIMENSIONS em uma consulta, você deve fazê-lo somente se as dimensões puderem determinar os fatos de forma única.

      A consulta agrupa os resultados por dimensões. se os fatos não dependerem das dimensões, os resultados podem ser não determinísticos.

    • Se você especificar FACTS e DIMENSIONS, todos os fatos e dimensões usados na consulta (incluindo aqueles especificados na cláusula WHERE) devem ser definidos na mesma tabela lógica.

    • Se você especificar uma dimensão e uma métrica, a tabela lógica para a dimensão deverá estar relacionada à tabela lógica para a métrica.

      Além disso, a tabela lógica para a dimensão deve ter um nível igual ou inferior de granularidade do que a tabela lógica para a métrica.

      Para determinar quais dimensões atendem a esses critérios, você pode executar o comando SHOW SEMANTIC DIMENSIONS FOR METRIC.

      Para obter mais detalhes, consulte Escolha das dimensões que você pode retornar para uma determinada métrica.

  • Na cláusula DIMENSIONS, você pode especificar uma expressão que se refere a um fato. Da mesma forma, na cláusula FACTS, você pode especificar uma expressão que se refere a uma dimensão. Por exemplo:

    -- Dimension expression that refers to a fact
    DIMENSIONS my_table.my_fact
    
    -- Fact expression that refers to a dimension
    FACTS my_table.my_dimension
    
    Copy

    Uma das principais diferenças entre o uso de DIMENSIONS e FACTS é que a consulta agrupa os resultados pelas dimensões e expressões especificadas na cláusula DIMENSIONS.

  • Especifique as cláusulas METRICS, DIMENSIONS e FACTS na ordem em que você deseja que apareçam nos resultados.

    Se você quiser que as dimensões apareçam primeiro nos resultados, especifique DIMENSIONS antes de METRICS. Caso contrário, especifique primeiro METRICS.

    Por exemplo, suponha que você especifique primeiro a cláusula METRICS:

    SELECT * FROM SEMANTIC_VIEW(
        tpch_analysis
        METRICS customer.customer_order_count
        DIMENSIONS customer.customer_name
      )
      ORDER BY customer_name
      LIMIT 5;
    
    Copy

    Na saída, a primeira coluna é a coluna de métrica (customer_order_count) e a segunda coluna é a coluna de dimensão (customer_name):

    +----------------------+--------------------+
    | CUSTOMER_ORDER_COUNT | CUSTOMER_NAME      |
    |----------------------+--------------------|
    |                    6 | Customer#000000001 |
    |                    7 | Customer#000000002 |
    |                    0 | Customer#000000003 |
    |                   20 | Customer#000000004 |
    |                    4 | Customer#000000005 |
    +----------------------+--------------------+
    

    Se, em vez disso, você especificar primeiro a cláusula DIMENSIONS:

    SELECT * FROM SEMANTIC_VIEW(
        tpch_analysis
        DIMENSIONS customer.customer_name
        METRICS customer.customer_order_count
      )
      ORDER BY customer_name
      LIMIT 5;
    
    Copy

    Na saída, a primeira coluna é a coluna de dimensão (customer_name) e a segunda coluna é a coluna de métrica (customer_order_count):

    +--------------------+----------------------+
    | CUSTOMER_NAME      | CUSTOMER_ORDER_COUNT |
    |--------------------+----------------------|
    | Customer#000000001 |                    6 |
    | Customer#000000002 |                    7 |
    | Customer#000000003 |                    0 |
    | Customer#000000004 |                   20 |
    | Customer#000000005 |                    4 |
    +--------------------+----------------------+
    
  • Você pode usar a relação definida por uma cláusula SEMANTIC_VIEW em outras construções SQL, incluindo JOIN, PIVOT, UNPIVOT, GROUP BY e expressões de tabela comuns (CTEs).

  • Os cabeçalhos das colunas de saída usam os nomes não qualificados das métricas e dimensões.

    Se você tiver várias métricas e dimensões com os mesmos nomes, use um alias de tabela para atribuir nomes diferentes aos cabeçalhos das colunas. Consulte Tratamento de nomes de colunas duplicados na saída.

Exemplos

Consulte Consulta de exibições semânticas.