Consultar dados em colunas

Esta página descreve como executar consultas em dados colunares.

Consultar dados em colunas

O mecanismo de consultas do Spanner analisa as consultas e seleciona automaticamente o formato colunar se ele for benéfico. No entanto, várias classes de consultas ainda podem precisar da dica para usar o formato colunar. Confira a seguir exemplos de como usar a dica de consulta @{scan_method=columnar}:

  • @{scan_method=columnar} SELECT COUNT(*) FROM Singers;
  • SELECT COUNT(*) FROM Singers @{scan_method=columnar};
  • @{scan_method=columnar} SELECT m.MsgBlob FROM Messages WHERE m.id='1234';

Além disso, é possível desativar explicitamente a seleção automática de colunas usando a dica de consulta @{scan_method=no_columnar}.

Consultar dados colunares do Spanner usando consultas federadas do BigQuery

Para ler dados colunares do Spanner no BigQuery, crie um conjunto de dados externo ou use a função EXTERNAL_QUERY.

Ao consultar conjuntos de dados externos, os dados em colunas são usados automaticamente se estiverem disponíveis e forem adequados para sua consulta.

Se você usar a função EXTERNAL_QUERY, o Spanner vai usar automaticamente os dados em colunas se eles estiverem disponíveis e forem adequados para a carga de trabalho. Também é possível incluir a dica @{scan_method=columnar} na consulta aninhada do Spanner.

No exemplo a seguir de uso da dica de consulta:

  • O primeiro argumento de EXTERNAL_QUERY especifica a conexão externa e o conjunto de dados, my-project.us.albums.
  • O segundo argumento é uma consulta SQL que seleciona MarketingBudget na tabela AlbumInfo em que MarketingBudget é menor que 500.000.
  • A dica @{scan_method=columnar} otimiza a consulta externa para a verificação colunar.
  • A instrução SELECT externa calcula a soma dos valores MarketingBudget retornados pela consulta externa.
  • A cláusula AS total_marketing_spend atribui um alias à soma calculada.
SELECT SUM(MarketingBudget) AS total_marketing_spend
FROM
  EXTERNAL_QUERY(
    'my-project.us.albums',
    '@{scan_method=columnar} SELECT AlbumInfo.MarketingBudget FROM AlbumInfo WHERE AlbumInfo.MarketingBudget < 500000;');

A seguir