Interroger des données en colonnes

Cette page explique comment exécuter des requêtes sur des données en colonnes.

Interroger les données en colonnes

Le moteur de requête Spanner analyse les requêtes et sélectionne automatiquement le format en colonnes si cela est avantageux. Toutefois, plusieurs classes de requêtes peuvent encore avoir besoin de l'indication de requête pour utiliser le format en colonnes. Voici des exemples d'utilisation de l'indication de requête @{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';

Vous pouvez également désactiver explicitement la sélection automatique de columnar en utilisant l'indication de requête @{scan_method=no_columnar}.

Interroger des données Spanner en colonnes à l'aide de requêtes fédérées BigQuery

Pour lire des données Spanner en colonnes depuis BigQuery, vous pouvez créer un ensemble de données externe ou utiliser la fonction EXTERNAL_QUERY.

Lorsque vous interrogez des ensembles de données externes, les données en colonnes sont automatiquement utilisées si elles sont disponibles et adaptées à votre requête.

Si vous utilisez la fonction EXTERNAL_QUERY, Spanner utilise automatiquement les données en colonnes si elles sont disponibles et adaptées à la charge de travail. Vous pouvez également inclure l'indice @{scan_method=columnar} dans la requête Spanner imbriquée.

Dans l'exemple suivant d'utilisation de l'indication de requête :

  • Le premier argument de EXTERNAL_QUERY spécifie la connexion et l'ensemble de données externes, my-project.us.albums.
  • Le deuxième argument est une requête SQL qui sélectionne MarketingBudget dans la table AlbumInfoMarketingBudget est inférieur à 500 000.
  • L'indice @{scan_method=columnar} optimise la requête externe pour l'analyse par colonnes.
  • L'instruction SELECT externe calcule la somme des valeurs MarketingBudget renvoyées par la requête externe.
  • La clause AS total_marketing_spend attribue un alias à la somme calculée.
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;');

Étapes suivantes