Une fois que vous avez sélectionné une source de données, vous pouvez utiliser une requête RAQL pour analyser des données. Le langage RAQL est basé sur SQL et comporte des extensions fonctionnelles qui ne sont pas définies dans SQL. La documentation suivante porte essentiellement sur l'utilisation de RAQL et de ces extensions fonctionnelles. Pour une introduction détaillée à SQL, nous vous renvoyons aux ouvrages usuels sur SQL.
RAQL fournit les clauses SQL type de lecture et d'exploration des données. Certaines clauses SQL et une partie de la syntaxe ne sont pas présentes dans RAQL. Une requête RAQL est constituée de clauses :
Consultez Référence au langage pour un aperçu des expressions valides de chacune de ces clauses.
La forme la plus basique d'une requête RAQL inclut les clauses SELECT et FROM.
La clause SELECT détermine quelles colonnes intégrer au résultat et peut également servir à réaliser une analyse si elle est utilisée en combinaison avec la clause OVER ou la clause GROUP BY. La clause FROM détermine quel jeu de données interroger ou peut servir à définir une sous-requête à utiliser comme source des données.
Les clauses d'opération sur un jeu permettent à la requête de récupérer un jeu de données supplémentaire, à l'aide d'une autre requête, puis de joindre, combiner ou filtrer ces jeux de données pour obtenir un jeu de données plus complexe. L'opération sur un jeu JOIN, par exemple, met en correspondance les lignes des deux jeux de données en fonction d'une condition et ajoute des colonnes des deux jeux de données à la ligne jointe.
La clause WHERE filtre les lignes du jeu de données. ORDER BY trie les lignes du résultat. LIMIT détermine le nombre maximal de lignes de résultat que la requête peut renvoyer.
Les clauses OVER et GROUP BY regroupent les lignes des deux jeux de données dans différents jeux sur la base d'une expression. Ces groupes déterminent l'étendue des lignes qui sont utilisées dans les fonctions analytiques dans la clause SELECT. La clause HAVING filtre les ensembles de groupes qui sont renvoyés dans une clause GROUP BY.
OVER et GROUP BY sont mutuellement exclusives, car elles ont des effets différents sur les données renvoyées par la requête. La clause OVER procède à des calculs et ajoute ces calculs à chaque ligne sous forme de colonnes supplémentaires. Quant à la clause GROUP BY, elle procède à des calculs et renvoie juste ces calculs pour chaque groupe.
La plupart des clauses RAQL prennent également en charge l'utilisation de fonctions à l'intérieur de leurs expressions. Les fonctions RAQL sont de deux sortes :
Les fonctions simples qui réalisent certaines transformations simples sur les valeurs d'une colonne pour chaque ligne, comme UPPER qui réécrit le texte en majuscules.
Les fonctions analytiques, plus communément appelées fonction d'agrégation ou de fenêtre, procèdent à des calculs grâce à plusieurs lignes d'un groupe, d'une partition ou d'une fenêtre défini dans les clauses OVER ou GROUP BY.
Les fonctions analytiques d'agrégation utilisent toutes les lignes de l'étendue actuelle, comme SUM, alors que les fonctions analytiques de fenêtre utilisent des lignes spécifiques, comme ROW_NUMBER. Ces fonctions intègrent une arithmétique simple ainsi que des fonctions statistiques ou d'autres algorithmes d'analyse.
RAQL propose un ensemble d'extensions fonctionnelles (simples et analytiques) ainsi qu'un moyen de définir vos propres fonctions. Reportez-vous à Extensions RAQL pour plus d'informations.