Présentation de l'interface SQL de BI Engine

À propos de l'interface SQL de BI Engine

BigQuery BI Engine est un service d'analyse en mémoire rapide qui permet aux utilisateurs d'analyser des données stockées dans BigQuery avec des temps de réponse de requête inférieurs à une seconde et une simultanéité élevée.

L'interface SQL de BI Engine étend les capacités de BI Engine et permet l'intégration à d'autres outils d'informatique décisionnelle (BI) tels que Looker, Tableau, Power BI et des applications personnalisées afin d'accélérer l'exploration et l'analyse des données. Cette page présente l'interface SQL de BI Engine et les fonctionnalités étendues qu'elle apporte à BI Engine.

Architecture BI Engine

Le schéma suivant présente l'architecture de BI Engine :

Architecture BI Engine

BI Engine accepte les éléments suivants:

  1. API BigQuery : BI Engine s'intègre directement à l'API BigQuery. Toute solution d'informatique décisionnelle ou application personnalisée qui fonctionne avec l'API BigQuery via des mécanismes standards tels que REST ou les pilotes JDBC et ODBC peut utiliser BI Engine sans aucune modification.
  2. Environnement vectorisé : avec l'interface SQL de BI Engine, BI Engine introduit une technique plus moderne appelée traitement vectorisé. Le traitement vectorisé dans un moteur d'exécution permet d'utiliser plus efficacement les architectures de processeur modernes, en effectuant des opérations sur des lots de données à la fois. BI Engine utilise également des encodages de données avancés, en particulier l'encodage par plages de dictionnaire, pour compresser davantage les données stockées dans la couche en mémoire.
  3. Métadonnées : les métadonnées stockent les définitions de table et de vue, la définition de schéma et les autorisations précises.
  4. Réservations : les réservations BI Engine gèrent l'allocation de mémoire au niveau de la facturation du projet. BI Engine ne met en cache que les colonnes et les partitions interrogées ou analysées. Il ne met pas en cache l'intégralité de la table.
  5. Moteur en mémoire distribué : BI Engine est un moteur d'exécution en mémoire distribué, qui permet aux clients d'allouer des réservations de mémoire beaucoup plus importantes.

Optimisation et accélération des requêtes

BigQuery, et par extension BI Engine, décompose le plan de requête produit pour une requête SQL en sous-requêtes. Une sous-requête contient un certain nombre d'opérations, telles que l'analyse, le filtrage ou l'agrégation de données, et est souvent l'unité d'exécution sur un segment.

Bien que toutes les requêtes SQL compatibles avec BigQuery soient correctement exécutées par l'interface SQL de BI Engine, seules certaines sous-requêtes sont optimisées. En particulier, l'interface SQL de BI Engine est la plus optimisée pour les sous-requêtes au niveau des feuilles qui analysent les données de stockage et effectuent des opérations telles que le filtrage, le calcul, l'agrégation, l'ordre et certains types de jointures. Les autres sous-requêtes qui ne sont pas encore entièrement accélérées par BI Engine reviennent dans BigQuery pour leur exécution.

En raison de cette optimisation sélective, les requêtes d'informatique décisionnelle ou de type tableau de bord simplifiées sont celles qui bénéficient le plus de BI Engine (ce qui réduit le nombre de sous-requêtes), car la majorité du temps d'exécution est consacré à des sous-requêtes au niveau de la feuille qui traitent les données brutes.

Si vous exécutez une requête dont la taille des résultats est supérieure à votre limite de capacité BI Engine, la fonctionnalité d'autoréglage de BI Engine se sert d'emplacements BigQuery pour exécuter cette requête. Lorsque vous utilisez des emplacements BigQuery pour exécuter une requête, vous êtes facturé selon la tarification à la demande ou forfaitaire de BigQuery pour la tâche de requête. Par ailleurs, tous les quotas et limites des tâches de requête de BigQuery s'appliquent.

Limites

La liste suivante explique comment et quand une requête est accélérée lorsque vous utilisez BI Engine:

  • Dans les sous-requêtes au niveau de la feuille, l'accélération est limitée aux fonctions et opérateurs SQL standard Google.
  • Les limites suivantes s'appliquent à la taille et au nombre de lignes :
    • Les requêtes simples qui ne font référence qu'à une seule table (par exemple, les requêtes GROUP-BY ou FILTER) sont principalement limitées par la taille de la réservation.
    • Pour les jointures, l'accélération est limitée aux sous-requêtes au niveau des feuilles avec les jointures INNER et LEFT OUTER, où une grande table (faits) est jointe à un maximum de quatre tables (dimensions) de petite taille et non partitionnées, chacune avec une taille maximale de 5 millions de lignes ou 5 Go pour les colonnes référencées.
  • Les requêtes faisant référence à des tables génériques ne sont pas acceptées.

Surveillance et diagnostics

Cette section explique comment trouver des statistiques sur BI Engine, et comment BI Engine s'intègre avec Cloud Monitoring.

Statistiques d'accélération

Des statistiques détaillées sur BI Engine sont disponibles via l'API de statistiques des tâches. Vous pouvez utiliser l'outil de ligne de commande bq pour récupérer les statistiques associées aux requêtes accélérées de BI Engine.

Lorsque l'accélération de BI Engine est activée, vous pouvez exécuter une requête dans l'un des trois modes suivants :


DISABLED
BI Engine a désactivé l'accélération. biEngineReasons spécifie un motif plus détaillé. La requête a été exécutée à l'aide du moteur d'exécution de BigQuery.

PARTIAL
Une partie de la requête a été accélérée à l'aide de BI Engine. Comme décrit sur la page Optimisation et accélération des requêtes, un plan de requête est généralement divisé en plusieurs sous-requêtes. BI Engine accepte les types de modèles de sous-requêtes courants, qui sont généralement utilisés dans les tableaux de bord. Si la requête comprend plusieurs sous-requêtes, dont seulement quelques-unes relèvent des cas d'utilisation acceptés, BI Engine exécute les sous-requêtes restantes à l'aide du moteur BigQuery normal. Les sous-requêtes restantes ne reçoivent pas l'accélération de BI Engine. Dans ce cas, BI Engine renvoie un code d'accélération PARTIAL et utilise biEngineReasons pour renseigner la raison de l'absence d'accélération des sous-requêtes.

 FULL
 
L'ensemble de la requête a été accéléré à l'aide de BI Engine.

Pour récupérer les statistiques associées aux requêtes accélérées BI Engine, exécutez la commande suivante de l'outil de ligne de commande bq :

bq show --format=prettyjson -j job_id

Si l'accélération BI Engine est activée pour le projet, la sortie génère un nouveau champ, biEngineStatistics. Voici un exemple de rapport de tâche :

 "statistics": {
    "creationTime": "1602175128902",
    "endTime": "1602175130700",
    "query": {
      "biEngineStatistics": {
        "biEngineMode": "DISABLED",
        "biEngineReasons": [
          {
            "code": "UNSUPPORTED_SQL_TEXT",
            "message": "Detected unsupported join type"
          }
        ]
      },

Pour en savoir plus sur le champ BiEngineStatistics, consultez la documentation de référence relative aux tâches.

Statistiques d'accélération dans INFORMATION_SCHEMA

Les statistiques d'accélération de BI Engine peuvent être interrogées dans le cadre des vues INFORMATION_SCHEMA.JOBS_BY_* via la colonne bi_engine_statistics. Par exemple, cette requête renvoie les bi_engine_statistics pour toutes les tâches de vos projets au cours des dernières 24 heures :

select creation_time, job_id, bi_engine_statistics
from `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
where creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY) AND CURRENT_TIMESTAMP()
  and job_type = "QUERY"

Utilisez le format suivant pour spécifier la régionalité de project-id, region et views dans la vue INFORMATION_SCHEMA :

`PROJECT_ID`.`region-REGION_NAME`.INFORMATION_SCHEMA.VIEW

Cloud Monitoring

BI Engine s'intègre à Cloud Monitoring pour afficher les métriques clés à des fins de surveillance et d'alerte. Voici les métriques surveillées :

Type de ressource Nom de la métrique Description
Projet Nombre total d'octets de réservation Capacité totale allouée dans un projet Cloud.
Projet Nombre d'octets utilisés pour la réservation Capacité totale utilisée dans un projet Cloud.

Tarifs

Les tarifs de BI Engine sont décrits sur la page des tarifs de BI Engine.

Régions où le service est disponible

Comme BigQuery, BI Engine est une ressource régionale et multirégionale. BI Engine traite vos données dans la même région que celle où elles se trouvent dans BigQuery. L'interface SQL de BigQuery BI Engine est compatible avec les mêmes régions que BigQuery. Pour en savoir plus sur les emplacements régionaux BigQuery, consultez la page Emplacements des ensembles de données BigQuery.