Créez des jeux de données pour des logiques ou des modèles complexes en rédigeant des requêtes SQL personnalisées. Les requêtes ad hoc prennent également en charge le passage de paramètres pour les scénarios d'analyse dynamique.
Prérequis
Vous avez établi une connexion à une source de données. Pour plus d'informations, consultez la rubrique Connexion à une source de données.
Limites
Les sources de données API ne prennent pas en charge les requêtes ad hoc.
Saisir du code SQL
Plusieurs méthodes permettent de créer une requête ad hoc.
-
Accédez à la page des requêtes ad hoc.
Méthode 1 : Sur la page Data Sources, cliquez sur Create datasets in SQL dans le coin supérieur droit.

Méthode 2 : Dans le canevas du relational model de l'éditeur de jeux de données, sélectionnez une source de données. Si aucune table de données n'est présente sur le canevas, cliquez sur Click to use SQL code to create a dataset sur le canevas ou sur Create table with SQL code dans le panneau latéral gauche.

-
Méthode 3 : Dans le canevas du physical modeling de l'éditeur de jeux de données, cliquez sur Create table with SQL code dans le panneau latéral gauche.

-
Après avoir saisi le code SQL, cliquez sur Run.

L'exemple de code suivant illustre une instruction SQL type :
SELECT report_date, or*******el, shipping_type, area, price, order_number from company_sales_record where $expr{report_date :report_date} and $expr{order_level :order_level} and $expr{order_number :or********er}Une fois l'exécution de la requête terminée avec succès, vous pouvez prévisualiser les résultats dans l'onglet Result.

Cliquez sur Create Dataset pour enregistrer le jeu de données créé à partir de la requête ad hoc.
Modifier le code SQL
Vous pouvez modifier le code SQL de trois manières :
Cliquez sur l'icône
située à droite de la table cible.
Cliquez sur la table cible dans le canevas. Dans la section Table Details en bas de page, cliquez sur Edit SQL.

-
Cliquez sur l'icône
à droite de la table cible, puis sélectionnez Edit SQL.
Syntaxe SQL
Les requêtes ad hoc prennent principalement en charge les instructions
SELECT. Les instructionsINSERT,UPDATE,DELETEet les procédures stockées ne sont pas prises en charge.La syntaxe de la requête doit être conforme à celle de la base de données de votre source de données. Par exemple, les sources de données MySQL nécessitent une syntaxe de requête MySQL. Les syntaxes spécifiques à certaines bases de données, telles que
find()etfindone()dans MongoDB, ne sont pas prises en charge dans Quick BI. Utilisez des instructionsSELECTpour interroger les données via des requêtes ad hoc.-
Pour ajouter des commentaires à une requête ad hoc, utilisez le format
-- Commentaire. Un espace est requis après les deux tirets (--).
L'exemple de code suivant illustre une instruction SQL type :
SELECT area, -- Area price -- Price from company_sales_record Si vous joignez plusieurs tables dans une requête ad hoc, assurez-vous d'utiliser correctement les alias de table et les alias de colonne. La syntaxe des alias peut varier selon les bases de données.
Une requête ad hoc n'impose aucune limite de lignes, mais elle ne peut pas dépasser 65 536 caractères. Si nécessaire, divisez ou optimisez la requête, ou créez plusieurs jeux de données et joignez-les.
Quick BI envoie le SQL du jeu de données à la base de données pour exécution. Le délai d'expiration de la requête est de 5 minutes. Si aucune donnée n'est renvoyée dans ce délai, une erreur de temporisation se produit.
Si une requête expire en moins de 5 minutes, la cause peut résider dans un paramètre de temporisation configuré sur vos équipements réseau, tels qu'un SLB, ou dans une politique de pare-feu bloquant la demande de requête.
Espaces réservés
Quick BI prend en charge deux types d'espaces réservés pour le passage de paramètres en SQL : les espaces réservés de valeur et les espaces réservés d'expression.
|
Type |
Description |
Cas d'utilisation |
Format |
|
Espace réservé de valeur |
Transmet une valeur unique ou un ensemble de valeurs depuis un contrôle de requête sur un tableau de bord. Remarque
Pour les espaces réservés de date, vous devez sélectionner un format de date spécifique afin de contrôler le format de la valeur transmise. |
Convient à la plupart des scénarios de passage de paramètres. |
|
|
Espace réservé d'expression |
Transmet une condition depuis un contrôle de requête sur un tableau de bord. |
Permet aux utilisateurs de modifier la méthode de filtrage sur un tableau de bord en transmettant l'intégralité de la condition de filtre à l'instruction SQL. Par exemple, dans le tableau de bord illustré ci-dessous, un utilisateur peut définir la condition sur |
|
Configuration
Rédigez votre instruction SQL et ajoutez des espaces réservés en fonction de vos besoins métier.
-
Sur la page de l'éditeur SQL, cliquez sur Parameter Settings.

-
Dans le panneau Parameter Settings, configurez les espaces réservés et cliquez sur OK.

Pour plus d'informations sur les éléments de configuration, consultez la rubrique Création d'un jeu de données.
RemarqueSi un espace réservé est utilisé dans une clause
SELECT, vous devez lui attribuer une valeur par défaut globale.Par exemple, vous ajoutez un espace réservé nommé
profit_rangedans la clauseSELECTlors de la création d'un jeu de données, comme illustré dans le code suivant :SELECT report_date, order_level, shipping_type,price,order_number,area, case when profit_amt< ${profit_range} then 'Loss' when profit_amt> ${profit_range} then 'Profit' else 'Break-even' end as 'Or*er Level' from company_sales_record where $expr{report_date :report_date} and $expr{order_level :order_level} and $expr{or**********************er}Si vous ne définissez pas de valeur par défaut, l'exécution de la requête échoue.

Vous devez définir une valeur de requête par défaut pour
profit_rangedans les paramètres.
Une fois la valeur par défaut définie, la requête s'exécute avec succès. La figure suivante présente le résultat :

Cliquez sur Save pour enregistrer le jeu de données.

-
Dans la barre de menus supérieure, cliquez sur l'icône
ou sur l'icône
, puis sélectionnez Create Dashboard.
-
Sur la page de l'éditeur de tableau de bord, ajoutez une condition de requête et liez-la à un espace réservé.
Par exemple, lors de la définition d'une condition de requête, vous pouvez utiliser une liste déroulante à sélection unique pour filtrer area et la lier à un espace réservé de valeur afin de transmettre une valeur unique.

Utilisez un filtre textuel sur or********erer** et liez-le à un espace réservé d'expression afin de transmettre une condition.

-
Lorsque vous interrogez des données sur le tableau de bord, les valeurs issues des contrôles de requête sont transmises aux espaces réservés correspondants dans votre SQL.
Par exemple, la figure suivante illustre les conditions de requête sur un tableau de bord.

L'instruction SQL correspondante est la suivante :
SELECT * FROM company_sales_record WHERE area = 'North China' AND order_number > 100Exemple d'utilisation des espaces réservés :
SELECT * FROM tablename WHERE area in ('$val{area_ph}') -- Text type, multi-select AND name = '$val{name_ph}' -- Text type, single-select AND number = $val{number_ph} -- Numeric type AND report_date > '$val{report_date_ph.get(0)}' -- Date type, get the start date of the date range picker AND report_date < '$val{report_date_ph.get(1)}' -- Date type, get the end date of the date range picker
Pour plus d'informations sur les cas d'utilisation des espaces réservés, consultez la rubrique Espaces réservés.
Rétrocompatibilité :
Ancien format pour les espaces réservés de valeur (anciennement appelés espaces réservés) : ${nom_espace_reserve}
Ancien format pour les espaces réservés d'expression (anciennement appelés paramètres) : ${nom_champ_physique:nom_parametre}
