Vous êtes ici :
Règles SQL pour les connaissances
Lorsque vous écrivez SQL pour des connaissances calculées ou en continu dans Data 360, les règles régissent l'interprétation de chaque clause et les contraintes qui s'appliquent. Vous pouvez également incorporer une sous-requête imbriquée dans une clause WHERE ou JOIN afin de restreindre les lignes que la requête externe renvoie.
Éditions requises
| Disponible avec : Toutes les éditions prises en charge par Data 360. Consultez Disponibilité de Data 360 Edition. |
Règles de requête par clause
| Clause | Règle |
|---|---|
| Général | Les noms d'objet modèle de données sont sensibles à la casse. Vérifiez que les références d'objet modèle de données dans votre SQL correspondent à la casse affichée dans la colonne Nom d'API de l'objet sous l'onglet Modèle de données. |
| Une requête doit contenir au moins une mesure. Une mesure est n'importe quel champ inclus dans une fonction d'agrégation. | |
| Tout attribut de la clause SELECT qui n'est pas inclus dans une fonction d'agrégation est traité en tant que dimension et doit être affiché dans la clause GROUP BY. | |
| Vous ne pouvez pas agréger dans une agrégation. | |
| Vous ne pouvez pas utiliser DISTINCT dans une requête de niveau supérieur. | |
Vous pouvez utiliser des commentaires multilignes (/* */). |
|
SELECT |
L'alias d'une dimension ne peut pas correspondre au nom d'origine du champ. Par exemple, UnifiedIndividual__dlm.Id__c as customer_id__c est valide, mais UnifiedIndividual__dlm.Id__c as Id__c entraîne une erreur. |
Vous devez utiliser TRY_CONVERT_CURRENCY dans la clause SELECT lorsque votre connaissance inclut un champ de devise. |
|
WHERE |
La clause WHERE ne peut pas contenir une expression d'agrégation. |
| La clause WHERE ne peut pas référencer une dimension ou un alias de mesure. | |
GROUP BY |
La clause GROUP BY doit être une expression non agrégée qui utilise des non-alias. |
| La clause GROUP BY peut référencer un alias de dimension, mais l'alias ne peut pas faire partie d'une expression. | |
| La clause GROUP BY ne peut pas inclure un alias de mesure ou une fonction d'agrégation. | |
ORDER BY |
ORDER BY n'est pas autorisé dans une instruction SELECT de niveau supérieur. |
RANK |
PARTITION BY et ORDER BY dans une fonction RANK peuvent être des expressions agrégées ou non agrégées. |
| Une clause RANK qui contient une expression agrégée est traitée en tant que mesure. | |
| Les mesures produites par RANK ne peuvent pas être agrégées. Vous devez fournir toutes les dimensions définies lors de leur interrogation. | |
CASE |
Une expression CASE qui contient une fonction d'agrégation est traitée en tant que mesure. |
Les mesures produites par les CASE(WHEN <aggregate>) ne peuvent pas être agrégées. Vous devez fournir toutes les dimensions définies lors de leur interrogation. |
|
Pour comparer les résultats des fonctions d'agrégation, utilisez une instruction CASE WHEN. La comparaison booléenne ne prend pas en charge les fonctions d'agrégation. Par exemple, au lieu de WHEN SUM(amount) > 100, utilisez CASE WHEN SUM(amount) >
100 THEN ... END. |
|
| Champs de date | Lors du filtrage d'une chaîne vide dans un champ de date, utilisez à la place une valeur nulle. |
Sous-requêtes imbriquées
Une sous-requête est une requête incorporée à une autre requête, généralement dans une clause WHERE ou JOIN. Utilisez une sous-requête pour renvoyer des données qui restreignent les lignes que la requête externe récupère.
Par exemple, cette requête calcule la moyenne des totaux des commandes pour les clients nés après 1980.
SELECT
avg(SalesOrder__dlm.GrandTotalAmount__c) as avg__c,
SubQuery1.Id as customer_id__c
FROM SalesOrder__dlm
JOIN (
SELECT Individual__dlm.Id__c as Id
FROM Individual__dlm
WHERE year(Individual__dlm.BirthDate__c) > 1980
) as SubQuery1
ON SalesOrder__dlm.SoldToCustomerId__c = SubQuery1.Id
GROUP BY customer_id__c;Cet article a-t-il résolu votre problème ?
Dites-nous ce que nous pouvons améliorer !
