MAQL et SQL

Malgré des ressemblances dans la construction de la syntaxe et les références d’argument prédéfinies, MAQL est différent de SQL.

SQL est un langage de bases de données relationnelles général pour la lecture et l’écriture de données. MAQL est multidimensionnel (consultez MAQL et multidimensionnalité) et les données sont toujours évaluées en fonction du contexte.

La section suivante présente des différences élémentaires mais importantes entre les deux langages.

Au niveau technique, la plateforme GoodData sépare la façon dont les données sont stockées dans la base de données (modèle de données physique) de la façon dont les objets de données sont liés les uns aux autres (modèle de données logique). Les développeurs d’espace de travail créent le modèle de données logique sur une interface graphique intuitive et quand le modèle est publié dans un espace de travail, le modèle de données physique est créé ou modifié en conséquence.

MAQL et SQL

MAQL vous permet d’écrire des métriques de rapport complexes et performantes beaucoup plus rapidement qu’avec SQL. Voyez ci-dessous :

Comme vous allez le voir dans les exemples ci-dessous, l’utilisation de la syntaxe de MAQL est plus performante que SQL.

Différences lors de la requête de données

Dans cette section, vous allez explorer les différences d’approche entre MAQL et SQL en matière de requête de données.

Supposons que vous êtes intéressé par les données de ventes de votre base de données. Avec SQL, la requête pourrait être la suivante :

SELECT SUM(Amount) FROM sales_data;

Le résultat est :

1 000 000

Vous avez vendu 1 000 000 $ de produits. Supposons maintenant que vous voulez savoir quelle fraction de ces données est générée par des ventes de chaussures. Avec SQL :

SELECT SUM(amount) FROM sales_data JOIN product_data ON sales_data.product_type_id=product_data.product_type_id WHERE product_data.name = "shoes";

Le résultat est :

500 000

Pour comprendre comment construire cette deuxième requête, vous devez :

  • comprendre les concepts de tables et colonnes dans des bases de données,
  • connaître les bases de l’algèbre relationnelle,
  • comprendre comment et où vos données sont stockées dans la base de données pour effectuer une requête.

MAQL utilise une autre approche. Vous n’avez pas besoin de savoir où et comment vos données sont stockées. L’équivalent de la première requête plus haut est la suivante avec MAQL :

SELECT SUM(Amount)

Remarquez que FROM sales_data n’est pas nécessaire. Tous les montants concernés sont additionnés à partir de la table correspondante dans la banque de données. Avec le portail GoodData, vous pouvez effectuer des requêtes sans savoir exactement comment les données sont stockées dans la base de données.

L’équivalent de la deuxième requête avec MAQL est ce qui suit :

SELECT SUM(Amount) WHERE Product Type = shoes

Vous n’avez pas besoin de vous souvenir de noms de tables ni de jointures de tables.

Exemples

Les exemples suivants montrent la différence entre l’écriture d’une métrique de profit avec SQL et avec MAQL :

Exemple de réutilisation

SQLMAQL

Requête unique

SELECT (SELECT SUM(Cost_of_Shipping) FROM Shipping) + (SELECT SUM(Cost) FROM Campaigns) AS Cost_of_Sales

Métrique réutilisable

SELECT SUM(Cost of Shipping) + SUM(Cost)

Exemple de combinaison de plusieurs métriques

SQLMAQL

Requête unique

SELECT 100*(1 - ( (SELECT SUM(Cost_of_Shipping) FROM Shipping) + (SELECT SUM(Cost) FROM Campaigns) ) / (SELECT SUM(Amount) FROM Sales) ) AS Net_Profit_Margin

Métrique réutilisable

SELECT 1 - Cost of Sales/Revenue