{"id":3106009,"date":"2026-08-25T13:18:02","date_gmt":"2026-08-25T13:18:02","guid":{"rendered":"https:\/\/www.clicdata.com\/?p=3106009"},"modified":"2026-08-25T13:20:37","modified_gmt":"2026-08-25T13:20:37","slug":"prompts-ia-pour-analyse-sql-structures-limites-et-bonnes-pratiques","status":"publish","type":"post","link":"https:\/\/www.clicdata.com\/fr\/blog\/prompts-ia-pour-analyse-sql-structures-limites-et-bonnes-pratiques\/","title":{"rendered":"Prompts IA pour l&rsquo;analyse SQL : structures, limites et bonnes pratiques"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">L&rsquo;intelligence artificielle et l&rsquo;analyse de donn\u00e9es ont un angle mort que les guides grand public n&rsquo;abordent jamais : le mod\u00e8le renvoie du SQL qui s&rsquo;ex\u00e9cute proprement, sans erreur, et produit un chiffre faux que personne ne remarque. Jusqu&rsquo;au jour o\u00f9 quelqu&rsquo;un remet en question le dashboard trois semaines plus tard. La cause n&rsquo;est presque jamais une limitation du mod\u00e8le, mais une requ\u00eate sous-sp\u00e9cifi\u00e9e.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ce guide couvre l&rsquo;anatomie d&rsquo;un prompt utilisable en production, huit patterns nomm\u00e9s avec des templates directement r\u00e9utilisables, et le moment o\u00f9 le prompting cesse d&rsquo;\u00eatre le goulot d&rsquo;\u00e9tranglement pour laisser la place au mod\u00e8le de donn\u00e9es comme vraie contrainte.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il est \u00e9crit pour les analystes qui \u00e9crivent du SQL au quotidien et ont d\u00e9sormais un LLM ouvert \u00e0 c\u00f4t\u00e9 de l&rsquo;\u00e9diteur de requ\u00eates.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A retenir :<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Un pattern de prompt est une structure reproductible qui tient quand<br>quelqu&rsquo;un d&rsquo;autre l&rsquo;ex\u00e9cute, sur un sch\u00e9ma qui a chang\u00e9 entre-temps. Une biblioth\u00e8que de prompts collecte des formulations. Un pattern encode le contexte et les v\u00e9rifications qui rendent le r\u00e9sultat fiable.<\/li>\n\n\n\n<li>Quatre composantes s\u00e9parent un prompt de production d&rsquo;un prompt qui a march\u00e9<br>une fois : le contexte, la t\u00e2che, les contraintes, et la v\u00e9rification.<\/li>\n\n\n\n<li>Un code cass\u00e9 \u00e9choue et le dit. Un SQL incorrect renvoie un r\u00e9sultat propre, sans signal d&rsquo;alerte.<\/li>\n\n\n\n<li>Il existe un plafond, et c&rsquo;est le mod\u00e8le de donn\u00e9es qui le fixe. Un bon prompt ne rattrape pas un entrep\u00f4t mal mod\u00e9lis\u00e9. Des donn\u00e9es propres, si.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Pattern, template, fine-tuning : faisons le tri<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Un pattern de prompt est une structure reproductible. Elle produit un r\u00e9sultat comparable quand un autre analyste l&rsquo;ex\u00e9cute le mois suivant, m\u00eame sur une table qui a \u00e9volu\u00e9 depuis. La formulation importe peu. Ce qui compte, c&rsquo;est ce que la structure garantit d&rsquo;inclure : le sch\u00e9ma, les r\u00e8gles m\u00e9tier, la forme attendue de la r\u00e9ponse, et un moyen de la v\u00e9rifier.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">C&rsquo;est cette garantie qui distingue un pattern des deux choses auxquelles on le confond le plus souvent : les biblioth\u00e8ques de prompts et le fine-tuning.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Une biblioth\u00e8que de prompts collecte des formulations qui ont fonctionn\u00e9 une fois. Elle devient obsol\u00e8te d\u00e8s que le sch\u00e9ma ou la version du mod\u00e8le change en dessous.<\/li>\n\n\n\n<li>Le fine-tuning modifie le mod\u00e8le plut\u00f4t que la requ\u00eate. C&rsquo;est pertinent \u00e0 grande \u00e9chelle, mais \u00e0 c\u00f4t\u00e9 du vrai probl\u00e8me : le mod\u00e8le n&rsquo;a simplement jamais su ce que signifie \u00ab\u00a0client actif\u00a0\u00bb dans votre entreprise.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Un prompt qui fonctionne vs. un prompt qui continue de fonctionner<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Voici le test. Prenez le prompt qui a produit votre meilleur r\u00e9sultat la semaine derni\u00e8re, collez-le dans une nouvelle session sans historique, et passez-le \u00e0 un coll\u00e8gue qui n&rsquo;a pas vu la conversation. Si le r\u00e9sultat se d\u00e9grade, le prompt n&rsquo;a jamais \u00e9t\u00e9 ce qui avait de la valeur, c&rsquo;\u00e9tait la conversation et vous l&rsquo;avez perdue en fermant l&rsquo;onglet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La plupart de ce qui circule en interne comme \u00ab\u00a0un super prompt\u00a0\u00bb \u00e9choue exactement de cette fa\u00e7on. Son auteur avait pass\u00e9 vingt minutes en amont \u00e0 d\u00e9crire les tables, corriger les trois premi\u00e8res tentatives du mod\u00e8le, et pr\u00e9ciser que les remboursements apparaissent comme des lignes n\u00e9gatives dans la table de d\u00e9tail plut\u00f4t que dans une table d\u00e9di\u00e9e. Rien de tout cela n&rsquo;appara\u00eet dans le message final, qui est la seule partie que tout le monde copie.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pourquoi le SQL g\u00e9n\u00e9r\u00e9 par IA \u00e9choue en silence<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Dans une application, les erreurs s&rsquo;annoncent. En SQL analytique, elles se cachent. Les tests \u00e9chouent, le build casse, une exception remonte dans les logs. Une requ\u00eate, elle, renvoie des lignes. Ces lignes alimentent un graphique, le graphique arrive en r\u00e9union, et la seule couche de validation repose sur le fait que quelqu&rsquo;un dans la salle sache \u00e0 peu pr\u00e8s \u00e0 quoi le chiffre devrait ressembler.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les \u00e9checs o\u00f9 le mod\u00e8le produit du nonsense vous co\u00fbtent trente secondes. Les \u00e9checs co\u00fbteux, eux, paraissent parfaitement raisonnables. Quand l&rsquo;\u00e9cart est de 8 % plut\u00f4t que de 80 %, personne ne le voit. Cette asym\u00e9trie fait du prompt engineering pour la business intelligence une discipline diff\u00e9rente du prompt engineering pour le d\u00e9veloppement logiciel. C&rsquo;est aussi pour \u00e7a que les patterns ci-dessous s&rsquo;appuient autant sur la v\u00e9rification.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">L&rsquo;\u00e9cart de confiance est mesurable<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Le <a href=\"https:\/\/survey.stackoverflow.co\/2025\/\">Stack Overflow Developer Survey 2025<\/a>, qui s&rsquo;appuie sur plus de 49 000 r\u00e9ponses, r\u00e9v\u00e8le que 84 % des d\u00e9veloppeurs utilisent ou pr\u00e9voient d&rsquo;utiliser des outils IA, mais que seulement 33 % font confiance \u00e0 la fiabilit\u00e9 des r\u00e9sultats produits, contre 46 % qui s&rsquo;en m\u00e9fient activement. Seuls 3 % d\u00e9clarent un niveau de confiance \u00e9lev\u00e9, et les r\u00e9pondants les plus exp\u00e9riment\u00e9s sont les plus sceptiques.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Deux autres chiffres \u00e9clairent pourquoi. Environ deux tiers citent des solutions IA qui s&rsquo;approchent du bon r\u00e9sultat sans l&rsquo;atteindre, et 45 % signalent que d\u00e9boguer du code g\u00e9n\u00e9r\u00e9 par IA leur prend plus de temps. Ce sont des d\u00e9veloppeurs, pas des analystes, ce qui m\u00e9rite d&rsquo;\u00eatre gard\u00e9 en t\u00eate, m\u00eame si le constat s&rsquo;applique directement \u00e0 quiconque \u00e9crit des prompts LLM pour du SQL. \u00ab\u00a0Presque juste\u00a0\u00bb est le pire r\u00e9sultat possible, parce que c&rsquo;est \u00ab\u00a0presque juste\u00a0\u00bb qui passe en production.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Les erreurs silencieuses atteignent la production<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Une condition de jointure incorrecte renvoie quand m\u00eame un r\u00e9sultat. Un DISTINCT manquant aussi. Un filtre appliqu\u00e9 apr\u00e8s l&rsquo;agr\u00e9gation quand il aurait d\u00fb l&rsquo;\u00eatre avant, \u00e9galement.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un analyste demande le chiffre d&rsquo;affaires mensuel par canal. Le mod\u00e8le r\u00e9cup\u00e8re les montants dans la table de d\u00e9tail, puis fait une jointure gauche vers les attributions de campagne pour obtenir le canal. Une m\u00eame commande peut porter deux ou trois attributions. Chaque ligne de d\u00e9tail est dupliqu\u00e9e autant de fois qu&rsquo;il y a d&rsquo;attributions avant que le SUM ne s&rsquo;ex\u00e9cute, et le chiffre d&rsquo;affaires ressort avec 8 % de trop. Le graphique s&rsquo;affiche, le chiffre est plausible, et il reste dans le deck mensuel pendant six semaines, jusqu&rsquo;\u00e0 ce que la finance r\u00e9concilie avec le grand livre et pose une question \u00e0 laquelle personne ne peut r\u00e9pondre imm\u00e9diatement.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Trois modes d&rsquo;\u00e9chec \u00e0 conna\u00eetre<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Les erreurs de logique silencieuses correspondent \u00e0 la cat\u00e9gorie pr\u00e9c\u00e9dente : du SQL valide, un grain incorrect, un r\u00e9sultat qui a l&rsquo;air juste.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La d\u00e9rive de d\u00e9finition survient quand le mod\u00e8le fournit sa propre interpr\u00e9tation d&rsquo;une m\u00e9trique m\u00e9tier faute d&rsquo;en avoir re\u00e7u une. Demandez le taux de churn dans trois sessions distinctes : vous obtiendrez trois formules d\u00e9fendables, aucune ne correspondant \u00e0 ce qui figure dans votre deck board.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;effondrement de contexte prend les \u00e9quipes par surprise. Tout ce dont le mod\u00e8le avait besoin avait \u00e9t\u00e9 \u00e9tabli au fil des \u00e9changes pr\u00e9c\u00e9dents, dans une conversation qui n&rsquo;existe plus. Le prompt partag\u00e9 reproduit la formulation, pas le contexte. Il fonctionne pour son auteur, qui comble mentalement les lacunes sans s&rsquo;en rendre compte, et \u00e9choue pour tout le monde autour de lui.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ce que contient un prompt utilisable en production<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Quatre composantes. Tous les patterns de la biblioth\u00e8que ci-dessous en appliquent une ou plusieurs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Contexte<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La structure de chaque table concern\u00e9e : noms des colonnes, types de donn\u00e9es et cl\u00e9s, la signification de toute colonne dont le nom ne s&rsquo;explique pas de lui-m\u00eame, et les r\u00e8gles m\u00e9tier qui gouvernent les donn\u00e9es. Les codes de statut, les flags de suppression logique, un exercice fiscal qui commence en avril, les comptes de test \u00e0 exclure. Tout ce qu&rsquo;un coll\u00e8gue dirait \u00e0 un nouvel<br>arrivant doit figurer ici, parce que le mod\u00e8le est en permanence dans sa premi\u00e8re semaine.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">T\u00e2che<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Le grain, le champ de date sur lequel filtrer, le traitement des cas limites, et la question exacte. Presque tous les mauvais r\u00e9sultats remontent \u00e0 une question qui admet plusieurs r\u00e9ponses correctes. \u00ab\u00a0Chiffre d&rsquo;affaires par mois\u00a0\u00bb ne pr\u00e9cise pas si on utilise la date de commande ou la date d&rsquo;exp\u00e9dition, si les remboursements sont d\u00e9duits, ni si une ligne repr\u00e9sente un mois ou un mois par canal.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Contraintes<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Le dialecte, le format de sortie, les conventions de nommage, et ce qu&rsquo;il ne faut pas retourner. C&rsquo;est la composante que les analystes omettent le plus souvent, parce qu&rsquo;elle donne l&rsquo;impression de soigner la forme plut\u00f4t que le fond. Une requ\u00eate accompagn\u00e9e de trois paragraphes d&rsquo;explication inutiles, en camelCase sur un entrep\u00f4t en snake_case, dans un dialecte qui ne supporte pas votre fonction fen\u00eatre : \u00e7a co\u00fbte du temps \u00e0 corriger \u00e0 chaque ex\u00e9cution.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">V\u00e9rification<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Quelque chose qui permet de contr\u00f4ler la r\u00e9ponse sans la recalculer \u00e0 la main : des nombres de lignes attendus, des hypoth\u00e8ses explicitement pos\u00e9es, ou une seconde requ\u00eate sur un chemin de jointure diff\u00e9rent qui devrait retourner le m\u00eame chiffre. Cela transforme une r\u00e9ponse plausible en une r\u00e9ponse v\u00e9rifiable, et c&rsquo;est ce qui distingue ceux qui font confiance \u00e0 leurs r\u00e9sultats assist\u00e9s par IA de ceux qui ont discr\u00e8tement arr\u00eat\u00e9 de l&rsquo;utiliser.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Huit patterns de prompts utilisables en production<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Chaque pattern nomme l&rsquo;\u00e9chec qu&rsquo;il pr\u00e9vient et fournit un template \u00e0 adapter. Ce sont des templates de prompts pour analystes, pas des conseils de formulation : ils sont volontairement verbeux. Compressez-les une fois que vous savez quelles parties vous sont utiles.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les prompts ci-dessous sont traduits en fran\u00e7ais. Si vous pr\u00e9f\u00e9rez travailler avec des prompts en anglais, vous pourrez les trouver sur <a href=\"https:\/\/www.clicdata.com\/blog\/ai-prompt-patterns\/\">la version anglaise de l\u2019article<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Le sch\u00e9ma avant la question<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Commencez par les tables et les r\u00e8gles, puis posez la t\u00e2che. L&rsquo;ordre compte plus qu&rsquo;on ne le pense : un mod\u00e8le qui lit la question en premier commence \u00e0 faire du pattern-matching sur des sch\u00e9mas g\u00e9n\u00e9riques avant m\u00eame d&rsquo;avoir vu le v\u00f4tre.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:1.125rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.625rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#39404f;color:#c8d0e0\">SQL<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Voici les tables concern\u00e9es :\n\n&lt;structure de chaque table, avec les types et les cl\u00e9s>\n\nR\u00e8gles m\u00e9tier applicables :\n\n-orders.status = 'C' signifie compl\u00e9t\u00e9, pas annul\u00e9\n-les remboursements sont enregistr\u00e9s comme des lignes n\u00e9gatives dans order_lines, pas dans une table s\u00e9par\u00e9e\n-l'exercice fiscal commence le 1er avril\n-accounts.is_internal = true identifie les comptes de test, \u00e0 exclure syst\u00e9matiquement\n\nNe requ\u00eate aucune table absente de cette liste. Si tu en as besoin d'une qui n'y figure pas, dis-le plut\u00f4t que d'en deviner le nom.<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">Voici les tables concern\u00e9es :<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">&lt;<\/span><span style=\"color: #D8DEE9FF\">structure de chaque <\/span><span style=\"color: #81A1C1\">table<\/span><span style=\"color: #D8DEE9FF\">, avec les types et les cl\u00e9s<\/span><span style=\"color: #81A1C1\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">R\u00e8gles m\u00e9tier applicables :<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">orders.status <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">C<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\"> signifie compl\u00e9t\u00e9, pas annul\u00e9<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">les remboursements sont enregistr\u00e9s comme <\/span><span style=\"color: #81A1C1\">des<\/span><span style=\"color: #D8DEE9FF\"> lignes n\u00e9gatives dans order_lines, pas dans une <\/span><span style=\"color: #81A1C1\">table<\/span><span style=\"color: #D8DEE9FF\"> s\u00e9par\u00e9e<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">l<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">exercice fiscal commence le 1er avril<\/span><\/span>\n<span class=\"line\"><span style=\"color: #A3BE8C\">-accounts.is_internal = true identifie les comptes de test, \u00e0 exclure syst\u00e9matiquement<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #A3BE8C\">Ne requ\u00eate aucune table absente de cette liste. Si tu en as besoin d<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">une qui n<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">y figure pas, dis-le plut\u00f4t que d<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">en deviner le nom.<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Cette derni\u00e8re instruction fait un travail surprenant. Sans elle, un mod\u00e8le qui a besoin d&rsquo;une table customers l&rsquo;\u00e9crira dans la clause FROM et continuera.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>D\u00e9finir le format attendu<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ce qui est renvoy\u00e9 doit \u00eatre suffisamment pr\u00e9visible pour \u00eatre coll\u00e9 directement, sans retouche.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:1.125rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.625rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#39404f;color:#c8d0e0\">SQL<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Renvoie :\n\n    1.Une seule requ\u00eate SQL, dialecte PostgreSQL 15, dans un seul bloc de code\n    2.Rien d'autre. Pas d'explication, pas d'alternatives, pas de commentaire.\n\nFormatage : les CTEs en snake_case, une colonne par ligne dans le SELECT final, les mots-cl\u00e9s en majuscules, jamais de SELECT *.\n\nSi tu ne peux pas produire la requ\u00eate avec les informations fournies, renvoie le mot BLOCKED et une ligne indiquant ce qui manque.<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">Renvoie :<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\">.Une seule requ\u00eate <\/span><span style=\"color: #81A1C1\">SQL<\/span><span style=\"color: #D8DEE9FF\">, dialecte PostgreSQL <\/span><span style=\"color: #B48EAD\">15<\/span><span style=\"color: #D8DEE9FF\">, dans un seul bloc de code<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #B48EAD\">2<\/span><span style=\"color: #D8DEE9FF\">.Rien d<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">autre. Pas d<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">explication, pas d<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">alternatives, pas de commentaire.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #A3BE8C\">Formatage : les CTEs en snake_case, une colonne par ligne dans le SELECT final, les mots-cl\u00e9s en majuscules, jamais de SELECT *.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #A3BE8C\">Si tu ne peux pas produire la requ\u00eate avec les informations fournies, renvoie le mot BLOCKED et une ligne indiquant ce qui manque.<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">La trappe de sortie BLOCKED vaut la peine d&rsquo;\u00eatre adopt\u00e9e. Sans alternative, un mod\u00e8le produira toujours quelque chose, et quelque chose est pire que rien quand vous comptiez sur le silence pour signaler un probl\u00e8me.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Vos propres requ\u00eates comme exemples<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Deux ou trois requ\u00eates de votre \u00e9quipe, coll\u00e9es en entier, enseignent des conventions qu&rsquo;aucune description ne transmettra.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:1.125rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.625rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#39404f;color:#c8d0e0\">SQL<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Voici deux requ\u00eates issues de notre d\u00e9p\u00f4t. Respecte leur structure, leur nommage et leur style de commentaires.\n\n&#91;Exemple 1&#93;\n&lt;coller une vraie requ\u00eate, sans modification>\n\n&#91;Exemple 2&#93;\n&lt;coller une deuxi\u00e8me vraie requ\u00eate>\n\n\u00c9cris maintenant une requ\u00eate qui : &lt;t\u00e2che><\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">Voici deux requ\u00eates issues de notre d\u00e9p\u00f4t. Respecte leur structure, leur nommage et leur style de commentaires.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#91;Exemple 1&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">&lt;<\/span><span style=\"color: #D8DEE9FF\">coller une vraie requ\u00eate, sans modification<\/span><span style=\"color: #81A1C1\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#91;Exemple 2&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">&lt;<\/span><span style=\"color: #D8DEE9FF\">coller une deuxi\u00e8me vraie requ\u00eate<\/span><span style=\"color: #81A1C1\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00c9cris maintenant une requ\u00eate qui : <\/span><span style=\"color: #81A1C1\">&lt;<\/span><span style=\"color: #D8DEE9FF\">t\u00e2che<\/span><span style=\"color: #81A1C1\">&gt;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Choisissez des exemples repr\u00e9sentatifs plut\u00f4t qu&rsquo;impressionnants. Une requ\u00eate ing\u00e9nieuse apprend au mod\u00e8le \u00e0 \u00eatre ing\u00e9nieux, ce qui est rarement ce qu&rsquo;on attend d&rsquo;un SQL que quelqu&rsquo;un d&rsquo;autre devra maintenir.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Injection de m\u00e9trique<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Si la question nomme une m\u00e9trique m\u00e9tier, la d\u00e9finition va dans le prompt. Pas une description, la d\u00e9finition exacte, dans la forme sur laquelle votre \u00e9quipe s&rsquo;est accord\u00e9e.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:1.125rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.625rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#39404f;color:#c8d0e0\">SQL<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>D\u00e9finition du chiffre d'affaires net, telle que maintenue par l'\u00e9quipe finance :\n\nChiffre d'affaires net = gross_amount - discount_amount - refund_amount\nExclut : accounts.is_internal = true\nExclut : order_status = 'X'\nDevise : convertie en EUR au taux du jour de la commande,\nissu de fx_rates.daily_rate\n\nUtilise cette d\u00e9finition telle quelle. Ne la remplace pas par la tienne.<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">D\u00e9finition du chiffre d<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">affaires net, telle que maintenue par l<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">\u00e9quipe finance :<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">Chiffre d<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">affaires net = gross_amount - discount_amount - refund_amount<\/span><\/span>\n<span class=\"line\"><span style=\"color: #A3BE8C\">Exclut : accounts.is_internal = true<\/span><\/span>\n<span class=\"line\"><span style=\"color: #A3BE8C\">Exclut : order_status = <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">X<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #A3BE8C\">Devise : convertie en EUR au taux du jour de la commande,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #A3BE8C\">issu de fx_rates.daily_rate<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #A3BE8C\">Utilise cette d\u00e9finition telle quelle. Ne la remplace pas par la tienne.<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Ce pattern pointe vers un probl\u00e8me structurel plut\u00f4t que de prompting. Si vous collez la d\u00e9finition du chiffre d&rsquo;affaires dans une fen\u00eatre de chat, c&rsquo;est que cette d\u00e9finition n&rsquo;est centralis\u00e9e nulle part, et la d\u00e9rive qui appara\u00eet dans les r\u00e9sultats de l&rsquo;IA est d\u00e9j\u00e0 pr\u00e9sente dans vos dashboards. Notre <a href=\"https:\/\/www.clicdata.com\/blog\/modular-sql-consistent-kpis\/\">guide sur le SQL modulaire pour des KPIs coh\u00e9rents<\/a> (EN) couvre la correction de fond.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Construire et valider couche par couche<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Les requ\u00eates longues \u00e9chouent au milieu. Construisez-les couche par couche et validez chacune avant d&rsquo;ajouter la suivante.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:1.125rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.625rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#39404f;color:#c8d0e0\">SQL<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Nous construisons cette requ\u00eate couche par couche.\n\n\u00c9cris uniquement le premier CTE : &lt;d\u00e9crire la couche 1>. Renvoie le CTE ainsi qu'un simple SELECT qui me permet d'inspecter son r\u00e9sultat. Arr\u00eate-toi l\u00e0.\nJe v\u00e9rifierai le nombre de lignes avant de continuer.<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">Nous construisons cette requ\u00eate couche par couche.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00c9cris uniquement le premier CTE : <\/span><span style=\"color: #81A1C1\">&lt;<\/span><span style=\"color: #D8DEE9FF\">d\u00e9crire la couche <\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #81A1C1\">&gt;<\/span><span style=\"color: #D8DEE9FF\">. Renvoie le CTE ainsi qu<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">un simple SELECT qui me permet d<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">inspecter son r\u00e9sultat. Arr\u00eate<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">toi l\u00e0.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">Je v\u00e9rifierai le nombre de lignes avant de continuer.<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Tout ce qui d\u00e9passe deux CTEs (Common Table Expressions) m\u00e9rite cette approche. Une erreur de logique d\u00e9tect\u00e9e imm\u00e9diatement co\u00fbte une minute ; la m\u00eame erreur d\u00e9couverte sous quatre couches suppl\u00e9mentaires co\u00fbte un apr\u00e8s-midi. Notre article sur la structuration des requ\u00eates SQL pour les analystes BI d\u00e9veloppe ce point.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>L&rsquo;interpr\u00e9tation avant la requ\u00eate<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Forcez l&rsquo;interpr\u00e9tation \u00e0 la surface avant qu&rsquo;aucun SQL n&rsquo;apparaisse. La moiti\u00e9 du temps, vous d\u00e9tecterez le malentendu d\u00e8s la premi\u00e8re phrase de la r\u00e9ponse.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:1.125rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.625rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#39404f;color:#c8d0e0\">SQL<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Avant d'\u00e9crire le moindre SQL, r\u00e9ponds \u00e0 ces questions :\n\n    1.Quel sera le grain de chaque ligne de ton r\u00e9sultat ?\n    2.Sur quel champ date filtres-tu, et pourquoi celui-l\u00e0 ?\n    3.Quelle hypoth\u00e8se fais-tu sur &lt;l'\u00e9l\u00e9ment ambigu> ?\n    4.Quelles lignes tes jointures vont-elles supprimer ou dupliquer ?\n\nAttends ma confirmation avant d'\u00e9crire la requ\u00eate.<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">Avant d<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">\u00e9crire le moindre SQL, r\u00e9ponds \u00e0 ces questions :<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #A3BE8C\">    1.Quel sera le grain de chaque ligne de ton r\u00e9sultat ?<\/span><\/span>\n<span class=\"line\"><span style=\"color: #A3BE8C\">    2.Sur quel champ date filtres-tu, et pourquoi celui-l\u00e0 ?<\/span><\/span>\n<span class=\"line\"><span style=\"color: #A3BE8C\">    3.Quelle hypoth\u00e8se fais-tu sur &lt;l<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">\u00e9l\u00e9ment ambigu<\/span><span style=\"color: #81A1C1\">&gt;<\/span><span style=\"color: #D8DEE9FF\"> ?<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #B48EAD\">4<\/span><span style=\"color: #D8DEE9FF\">.Quelles lignes tes jointures vont<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">elles supprimer ou dupliquer ?<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">Attends ma confirmation avant d<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">\u00e9crire la requ\u00eate.<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Utilisez ce pattern quand la question est nouvelle ou r\u00e9ellement ambigu\u00eb. Sur une extraction de routine, c&rsquo;est du surco\u00fbt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Auto-v\u00e9rification<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Demandez la v\u00e9rification en m\u00eame temps que la r\u00e9ponse, dans le m\u00eame tour, pour que le contr\u00f4le ne co\u00fbte rien de plus.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:1.125rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.625rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#39404f;color:#c8d0e0\">SQL<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>En plus de la requ\u00eate, renvoie :\n\n-Le nombre de lignes attendu, avec ton raisonnement\n-Une deuxi\u00e8me requ\u00eate ind\u00e9pendante qui confirmerait ou contredirait la premi\u00e8re, en utilisant un chemin de jointure diff\u00e9rent ou une v\u00e9rification par agr\u00e9gat\n-Toutes les hypoth\u00e8ses que tu as faites, sous forme de liste \u00e0 puces<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">En plus de la requ\u00eate, renvoie :<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">Le nombre de lignes attendu, avec ton raisonnement<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">Une deuxi\u00e8me requ\u00eate ind\u00e9pendante qui confirmerait ou contredirait la premi\u00e8re, en utilisant un chemin de jointure diff\u00e9rent ou une v\u00e9rification par agr\u00e9gat<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">Toutes les hypoth\u00e8ses que tu <\/span><span style=\"color: #81A1C1\">as<\/span><span style=\"color: #D8DEE9FF\"> faites, sous forme de liste \u00e0 puces<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">C&rsquo;est le contr\u00f4le crois\u00e9 ind\u00e9pendant qui fait la valeur du pattern. Deux requ\u00eates sur des chemins diff\u00e9rents qui arrivent au m\u00eame r\u00e9sultat, c&rsquo;est un signal fiable. Une requ\u00eate qui a l&rsquo;air juste, non.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Corriger plut\u00f4t que g\u00e9n\u00e9rer<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Pointez le mod\u00e8le sur une requ\u00eate existante et demandez-lui ce qui ne va pas. La r\u00e9vision re\u00e7oit bien moins d&rsquo;attention que la g\u00e9n\u00e9ration, et c&rsquo;est pourtant le pattern vers lequel on se tourne le plus sur du code h\u00e9rit\u00e9.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:1.125rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.625rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#39404f;color:#c8d0e0\">SQL<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Voici une requ\u00eate existante et le sch\u00e9ma sur lequel elle s'ex\u00e9cute.\n\n&lt;requ\u00eate>\n&lt;structure de chaque table, avec les types et les cl\u00e9s>\n\nIdentifie : le grain de jointure incorrect, les filtres appliqu\u00e9s apr\u00e8s agr\u00e9gation qui devraient l'\u00eatre avant, la gestion des NULL qui modifie le r\u00e9sultat, et tout endroit o\u00f9 le SQL ne correspond pas \u00e0 l'intention d\u00e9clar\u00e9e :\n\n&lt;intention>\n\nPour chaque probl\u00e8me : cite la ligne, explique son effet sur le r\u00e9sultat, et montre la correction.<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">Voici une requ\u00eate existante et le sch\u00e9ma sur lequel elle s<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">ex\u00e9cute.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #A3BE8C\">&lt;requ\u00eate&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #A3BE8C\">&lt;structure de chaque table, avec les types et les cl\u00e9s&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #A3BE8C\">Identifie : le grain de jointure incorrect, les filtres appliqu\u00e9s apr\u00e8s agr\u00e9gation qui devraient l<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">\u00eatre avant, la gestion <\/span><span style=\"color: #81A1C1\">des<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">NULL<\/span><span style=\"color: #D8DEE9FF\"> qui modifie le r\u00e9sultat, et tout endroit o\u00f9 le <\/span><span style=\"color: #81A1C1\">SQL<\/span><span style=\"color: #D8DEE9FF\"> ne correspond pas \u00e0 l<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">intention d\u00e9clar\u00e9e :<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #A3BE8C\">&lt;intention&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #A3BE8C\">Pour chaque probl\u00e8me : cite la ligne, explique son effet sur le r\u00e9sultat, et montre la correction.<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Une pr\u00e9cision s&rsquo;impose : un bilan favorable du mod\u00e8le ne signifie pas que la requ\u00eate est correcte. Traitez les r\u00e9sultats comme des pistes \u00e0 investiguer, pas comme un certificat de conformit\u00e9. Un dashboard retouch\u00e9 par quatre personnes sur deux ans reste un meilleur usage d&rsquo;une heure que de g\u00e9n\u00e9rer quelque chose de nouveau, m\u00eame si cette heure se termine avec vous en train de lire le SQL.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Quel pattern utiliser<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Pattern<\/strong><\/th><th><strong>\u00c9chec pr\u00e9venu<\/strong><\/th><th><strong>\u00c0 utiliser quand<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Le sch\u00e9ma avant la question<\/td><td>Effondrement de contexte<\/td><td>Le mod\u00e8le n&rsquo;a pas vu ces tables dans cette session<\/td><\/tr><tr><td>D\u00e9finir le format attendu<\/td><td>R\u00e9sultat incoh\u00e9rent ou inutilisable<\/td><td>Le r\u00e9sultat va directement dans un dashboard ou un d\u00e9p\u00f4t<\/td><\/tr><tr><td>Vos propres requ\u00eates comme exemples<\/td><td>D\u00e9rive de conventions<\/td><td>Plusieurs personnes maintiennent la requ\u00eate<\/td><\/tr><tr><td>Injection de m\u00e9trique<\/td><td>D\u00e9rive de d\u00e9finition<\/td><td>La question nomme une m\u00e9trique m\u00e9tier<\/td><\/tr><tr><td>Construire et valider couche par couche<\/td><td>Erreurs de logique silencieuses<\/td><td>La requ\u00eate n\u00e9cessite plus de deux CTEs<\/td><\/tr><tr><td>L\u2019interpr\u00e9tation avant la requ\u00eate<\/td><td>Mauvaise lecture des besoins<\/td><td>La question est ambigu\u00eb ou nouvellement cadr\u00e9e<\/td><\/tr><tr><td>Auto-v\u00e9rification<\/td><td>Erreurs silencieuses en production<\/td><td>Personne en aval ne recalculera le chiffre<\/td><\/tr><tr><td>Corriger plut\u00f4t que g\u00e9n\u00e9rer<\/td><td>Erreurs non d\u00e9tect\u00e9es dans du SQL existant<\/td><td>D\u00e9bogage ou audit de SQL existant<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Consid\u00e9rez ce tableau comme un point de d\u00e9part ; en pratique, vous en combinerez trois ou quatre dans un seul prompt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ce que vos prompts ne peuvent pas corriger<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tout ce qui pr\u00e9c\u00e8de am\u00e9liore votre taux de r\u00e9ussite. Rien n&rsquo;en supprime le plafond.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le <a href=\"https:\/\/bird-bench.github.io\/\">benchmark BIRD<\/a> est la mesure publique la plus r\u00e9aliste de l&rsquo;\u00e9tat actuel du prompt engineering text-to-SQL. Il s&rsquo;appuie sur 12 751 paires question\/requ\u00eate test\u00e9es sur 95 bases de donn\u00e9es r\u00e9elles couvrant plus de 37 domaines professionnels, loin des sch\u00e9mas \u00e9pur\u00e9s utilis\u00e9s par les benchmarks pr\u00e9c\u00e9dents. La baseline humaine se situe \u00e0 92,96 % de pr\u00e9cision d&rsquo;ex\u00e9cution.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En ao\u00fbt 2026, les meilleures soumissions se situent dans les basses quatre-vingts, avec le meilleur r\u00e9sultat sur mod\u00e8le unique autour de 80 %. Les positions au classement \u00e9voluent en permanence : consid\u00e9rez ces chiffres comme un instantan\u00e9. <a href=\"https:\/\/www.vldb.org\/cidrdb\/papers\/2026\/p5-jin.pdf\">Une analyse CIDR 2026<\/a> sur les erreurs d&rsquo;annotation dans les benchmarks text-to-SQL a \u00e9galement montr\u00e9 que la correction d&rsquo;annotations erron\u00e9es sur un \u00e9chantillon du jeu de d\u00e9veloppement de BIRD faisait varier les scores individuels jusqu&rsquo;\u00e0 dix-neuf points. La pr\u00e9cision d&rsquo;ex\u00e9cution stricte p\u00e9nalise donc certaines r\u00e9ponses qu&rsquo;un \u00e9valuateur humain accepterait.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La direction est claire malgr\u00e9 tout. Sur des bases de donn\u00e9es r\u00e9alistes, avec le contexte m\u00e9tier fourni, les meilleurs syst\u00e8mes disponibles restent significativement en de\u00e7\u00e0 d&rsquo;un humain exp\u00e9riment\u00e9. Trois limites se situent enti\u00e8rement hors de port\u00e9e du prompt.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Des donn\u00e9es de mauvaise qualit\u00e9.<\/strong> Vos tables ont des types incoh\u00e9rents, des codes de statut non document\u00e9s, trois d\u00e9finitions concurrentes d&rsquo;un client. Les jointures ne fonctionnent que si vous savez lesquelles des quatre cl\u00e9s sont r\u00e9elles. Le mod\u00e8le h\u00e9rite de tout \u00e7a, sans pouvoir distinguer ce qui est normal de ce qui est un probl\u00e8me. La structure dans le prompt ne compense pas l&rsquo;absence de structure dans l&rsquo;entrep\u00f4t. Soigner les fondations de donn\u00e9es fait davantage pour l&rsquo;analyse assist\u00e9e par IA que n&rsquo;importe quel template.<\/li>\n\n\n\n<li><strong>Un contexte m\u00e9tier manquant.<\/strong> Le mod\u00e8le ne sait pas que la campagne a \u00e9t\u00e9 mise en pause deux semaines en juillet, qu&rsquo;une migration a dupliqu\u00e9 des lignes de la table des commandes ou qu&rsquo;une baisse sur une r\u00e9gion refl\u00e8te un jour f\u00e9ri\u00e9 plut\u00f4t qu&rsquo;un effondrement de la demande. Ce qui revient est un SQL techniquement correct sur des donn\u00e9es qui signifient autre chose que ce que les chiffres semblent dire, expliqu\u00e9 avec assurance.<\/li>\n\n\n\n<li><strong>La responsabilit\u00e9.<\/strong> Quelqu&rsquo;un valide le chiffre qui arrive dans le deck du board. Cette obligation ne se transf\u00e8re pas \u00e0 un outil, et celui qui a ex\u00e9cut\u00e9 le prompt est aussi pleinement responsable du r\u00e9sultat que s&rsquo;il l&rsquo;avait \u00e9crit lui-m\u00eame.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Transformer un prompt qui fonctionne en pattern d&rsquo;\u00e9quipe<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Le travail individuel atteint rapidement ses limites dans la cr\u00e9ation et l&rsquo;utilisation des prompts SQL. Les \u00e9quipes qui en tirent une valeur durable traitent les prompts comme n&rsquo;importe quelle autre logique partag\u00e9e.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Capturez le prompt en entier<\/strong>, sch\u00e9ma et r\u00e8gles m\u00e9tier inclus. Le contexte est l&rsquo;actif. La formulation est l&#8217;emballage, et la plupart des gens ne sauvegardent que l&#8217;emballage.<\/li>\n\n\n\n<li><strong>Transformez les parties variables en template.<\/strong> Remplacez les \u00e9l\u00e9ments sp\u00e9cifiques par des placeholders nomm\u00e9s : noms de tables, plages de dates, d\u00e9finitions de m\u00e9triques, grain. Ce qui reste est un template de prompt SQL r\u00e9utilisable, et les placeholders documentent ce qu&rsquo;un coll\u00e8gue doit fournir avant de l&rsquo;utiliser.<\/li>\n\n\n\n<li><strong>Constituez un petit jeu d&rsquo;\u00e9valuation<\/strong> : cinq \u00e0 dix questions dont vous connaissez d\u00e9j\u00e0 les r\u00e9ponses, \u00e0 ex\u00e9cuter avant de standardiser le template. Cela prend un apr\u00e8s-midi, et peu d&rsquo;\u00e9quipes le font, ce qui explique pourquoi si peu peuvent dire si leur prompt partag\u00e9 fait mieux que ce qu&rsquo;il remplace.<\/li>\n\n\n\n<li><strong>Stockez-le l\u00e0 o\u00f9 vit le SQL<\/strong> : dans le d\u00e9p\u00f4t, versionn\u00e9, relu comme du code, \u00e0 c\u00f4t\u00e9 des requ\u00eates qu&rsquo;il g\u00e9n\u00e8re. Un prompt qui dort dans une page que personne n&rsquo;a ouverte depuis mars n&rsquo;est pas un actif d&rsquo;\u00e9quipe. La m\u00eame rigueur qu&rsquo;un pipeline de donn\u00e9es fiable s&rsquo;applique ici.<\/li>\n\n\n\n<li><strong>D\u00e9signez un responsable et d\u00e9finissez ce qui doit d\u00e9clencher une r\u00e9vision.<\/strong> Les patterns se d\u00e9gradent. Une version de mod\u00e8le change, un sch\u00e9ma \u00e9volue, la finance r\u00e9vise une d\u00e9finition : autant de raisons pour lesquelles un template fiable depuis huit mois peut commencer \u00e0 produire des r\u00e9sultats subtilement diff\u00e9rents. Pensez \u00e0 noter les crit\u00e8res de revalidation.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Les tests de r\u00e9gression de prompts pour les \u00e9quipes analytics sont un territoire presque vierge. Faites-le bien et vous aurez une longueur d&rsquo;avance sur la majorit\u00e9 du terrain.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Comment ClicData soutient l&rsquo;analyse assist\u00e9e par IA sur des donn\u00e9es gouvern\u00e9es<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Relisez les huit patterns : un th\u00e8me se d\u00e9gage. L&rsquo;ancrage par le sch\u00e9ma existe parce que <strong>le mod\u00e8le ne conna\u00eet pas vos tables<\/strong>. L&rsquo;injection de m\u00e9trique existe parce que la m\u00e9trique n&rsquo;a jamais \u00e9t\u00e9 d\u00e9finie de fa\u00e7on centralis\u00e9e. La plupart de la biblioth\u00e8que compense un contexte qu&rsquo;une plateforme devrait fournir. Chaque point ci-dessous est donc associ\u00e9 au pattern qu&rsquo;il rend superflu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Consolidation des sources, contre l&rsquo;ancrage par le sch\u00e9ma.<\/strong> Avec <a href=\"https:\/\/www.clicdata.com\/fr\/connecteurs\/\">plus de 500 connecteurs<\/a> alimentant un seul entrep\u00f4t, les tables derri\u00e8re une m\u00e9trique se trouvent au m\u00eame endroit, sous un m\u00eame ensemble de noms. La raison la plus courante d&rsquo;ajouter des paragraphes d&rsquo;explication de sch\u00e9ma avant de pouvoir poser une question dispara\u00eet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Transformation et validation des donn\u00e9es, sans erreurs de logique silencieuses.<\/strong> Le module Data Flow g\u00e8re le nettoyage, la correction des types, la d\u00e9duplication, les jointures et les lookups sur plus de 35 n\u0153uds de traitement. Les donn\u00e9es qu&rsquo;une fonctionnalit\u00e9 IA lit ont d\u00e9j\u00e0 re\u00e7u le traitement que vous auriez sinon d\u00e9crit dans un prompt en esp\u00e9rant que le mod\u00e8le l&rsquo;applique.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Des calculs d\u00e9finis une fois et r\u00e9utilis\u00e9s, contre l&rsquo;injection de m\u00e9trique.<\/strong> Un Data Flow \u00e9crit son r\u00e9sultat dans une table que n&rsquo;importe quel dashboard peut lire. Une m\u00e9trique calcul\u00e9e dans un flow alimente tous les rapports construits dessus, plut\u00f4t que d&rsquo;\u00eatre r\u00e9impl\u00e9ment\u00e9e \u00e0 chaque requ\u00eate. La couche s\u00e9mantique de ClicData, attendue pour le T4 2026, va plus loin en stockant la d\u00e9finition canonique elle-m\u00eame, ce qui supprime compl\u00e8tement l&rsquo;\u00e9tape de copier-coller.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Le g\u00e9n\u00e9rateur de formules IA, contre la composante Contexte.<\/strong> Dans le Data Flow, l&rsquo;assistant IA lit le contexte de votre pipeline, noms de colonnes et types de donn\u00e9es inclus, lorsque vous d\u00e9crivez un calcul en langage naturel. L&rsquo;ancrage est g\u00e9r\u00e9 par l&rsquo;outil, pas par vous.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Les requ\u00eates en langage naturel dans le module Insights, contre l&rsquo;ensemble de la biblioth\u00e8que.<\/strong> Posez la question, ClicData g\u00e9n\u00e8re la requ\u00eate de son c\u00f4t\u00e9, l&rsquo;ex\u00e9cute sur votre base de donn\u00e9es, et maintient le contexte sur les questions suivantes quand vous ajoutez un filtre ou changez la plage de dates. La structure de la requ\u00eate est transmise \u00e0 OpenAI, vos donn\u00e9es ne le sont pas, ce qui a son importance quand l&rsquo;alternative consiste \u00e0 coller des lignes de production dans une fen\u00eatre de chat.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ask AI, contre le self-service non gouvern\u00e9.<\/strong> Le <a href=\"https:\/\/www.clicdata.com\/fr\/plateforme\/ai-powered\/\">widget Ask AI<\/a> est strictement limit\u00e9 aux datasets que vous lui assignez, et les permissions suivent les m\u00eames r\u00e8gles d&rsquo;acc\u00e8s que le reste de la plateforme. La question d&rsquo;un utilisateur m\u00e9tier ne se r\u00e9sout que sur les donn\u00e9es auxquelles il avait d\u00e9j\u00e0 acc\u00e8s.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Les analyses narratives et les agents IA, contre le prompting lui-m\u00eame.<\/strong> Les r\u00e9sum\u00e9s au niveau des graphiques sont g\u00e9n\u00e9r\u00e9s automatiquement, avec un ton et un niveau de d\u00e9tail configur\u00e9s via le pr\u00e9-prompting. Les agents IA sont con\u00e7us pour surveiller les donn\u00e9es en continu et alerter quand des conditions sont remplies, couvrant les insights que personne ne devrait avoir \u00e0 demander. Nous avons \u00e9crit s\u00e9par\u00e9ment sur la place des agents dans un workflow de donn\u00e9es.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>En toute transparence :<\/strong> le mod\u00e8le Data Flow demande un temps d&rsquo;apprentissage r\u00e9el, notamment pour les analystes qui viennent d&rsquo;un environnement purement SQL. La communaut\u00e9 ClicData est plus petite que celles des grands acteurs \u00e9tablis, donc il y a moins de r\u00e9ponses disponibles quand on est bloqu\u00e9. Ce qui comble cet \u00e9cart, ce sont des personnes plut\u00f4t que des fils de forum : <a href=\"https:\/\/www.clicdata.com\/fr\/services\/\">le programme d&rsquo;onboarding<\/a> vous met en contact avec des analystes internes pour la formation et l&rsquo;impl\u00e9mentation, et des sp\u00e9cialistes produit r\u00e9pondent depuis le chat int\u00e9gr\u00e9 pendant que vous construisez. Les fonctionnalit\u00e9s IA sont \u00e9galement disponibles sur les plans payants, certaines n\u00e9cessitant un niveau sup\u00e9rieur.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">D\u00e9marrez <a href=\"https:\/\/app.clicdata.com\/signup\">un essai gratuit de 15 jours<\/a> ou <a href=\"https:\/\/www.clicdata.com\/fr\/demo\/\">r\u00e9servez une session de d\u00e9mo personnalis\u00e9e avec l&rsquo;\u00e9quipe<\/a> pour voir comment cela fonctionne sur vos propres donn\u00e9es.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion : traitez le prompt comme une sp\u00e9cification<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Les patterns qui tiennent sont structurels, pas ing\u00e9nieux : contexte, t\u00e2che, contraintes, v\u00e9rification, appliqu\u00e9s de fa\u00e7on coh\u00e9rente et stock\u00e9s l\u00e0 o\u00f9 vit le reste de votre logique. Les analystes qui obtiennent des r\u00e9sultats fiables avec l&rsquo;IA ne sont pas ceux qui formulent mieux leurs questions. Ce sont ceux qui ont arr\u00eat\u00e9 de traiter le prompt comme une question et ont commenc\u00e9 \u00e0 le traiter comme une sp\u00e9cification.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le mod\u00e8le de donn\u00e9es fixe le plafond de tout le reste, et c&rsquo;est l\u00e0 que se trouve le vrai travail pour la plupart des \u00e9quipes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Prenez la requ\u00eate que votre \u00e9quipe r\u00e9ex\u00e9cute le plus souvent, r\u00e9\u00e9crivez-la comme un template avec un format de sortie attendu et une requ\u00eate de validation, testez-la sur cinq questions dont vous connaissez les r\u00e9ponses, et observez ce que \u00e7a fait au taux de r\u00e9ussite.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FAQ<\/h2>\n\n\n\n<div class=\"wp-block-wpseopress-faq-block-v2 is-layout-flow wp-block-wpseopress-faq-block-v2-is-layout-flow\">\n<details id=\"en-quoi-un-template-de-prompt-est-il-different-dun-prompt-qui-a-simplement-fonctionne-une-fois\" class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>En quoi un template de prompt est-il diff\u00e9rent d&rsquo;un prompt qui a simplement fonctionn\u00e9 une fois ?<\/summary>\n<p class=\"wp-block-paragraph\">La diff\u00e9rence appara\u00eet au moment de le partager. Un pattern porte son propre contexte, ce qui lui permet de fonctionner dans une nouvelle session lanc\u00e9e par quelqu&rsquo;un d&rsquo;autre. Un prompt ad hoc, lui, d\u00e9pendait souvent de vingt minutes de conversation qui n&rsquo;ont jamais \u00e9t\u00e9 copi\u00e9es avec la formulation.<\/p>\n<\/details>\n\n\n\n<details id=\"comment-ecrire-un-prompt-qui-genere-du-sql-correct-pour-des-projets-analytics\" class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>Comment \u00e9crire un prompt qui g\u00e9n\u00e8re du SQL correct pour des projets analytics ?<\/summary>\n<p class=\"wp-block-paragraph\">Fournissez quatre \u00e9l\u00e9ments : la structure de chaque table concern\u00e9e et ses r\u00e8gles m\u00e9tier, un \u00e9nonc\u00e9 de t\u00e2che pr\u00e9cisant le grain, le champ de date et la gestion des cas limites, des contraintes couvrant le dialecte et le format de sortie attendu, et une demande de v\u00e9rification comme un nombre de lignes attendu ou une requ\u00eate de contr\u00f4le crois\u00e9 ind\u00e9pendante.<\/p>\n<\/details>\n\n\n\n<details id=\"pourquoi-lia-genere-t-elle-du-sql-qui-semble-correct-mais-renvoie-de-mauvais-chiffres\" class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>Pourquoi l&rsquo;IA g\u00e9n\u00e8re-t-elle du SQL qui semble correct mais renvoie de mauvais chiffres ?<\/summary>\n<p class=\"wp-block-paragraph\">Parce que SQL valide et SQL correct sont deux choses diff\u00e9rentes. Un grain de jointure cass\u00e9, un DISTINCT manquant ou un filtre appliqu\u00e9 apr\u00e8s agr\u00e9gation renvoient tous des r\u00e9sultats bien form\u00e9s, sans que rien dans le chemin d&rsquo;ex\u00e9cution ne signale l&rsquo;erreur. Cela ne se voit que lorsque quelqu&rsquo;un r\u00e9concilie le chiffre avec une autre source.<\/p>\n<\/details>\n\n\n\n<details id=\"les-analystes-devraient-ils-inclure-des-exemples-de-requetes-dans-leurs-prompts\" class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>Les analystes devraient-ils inclure des exemples de requ\u00eates dans leurs prompts ?<\/summary>\n<p class=\"wp-block-paragraph\">Oui, avec leurs propres requ\u00eates plut\u00f4t que des exemples g\u00e9n\u00e9riques. Deux ou trois vraies requ\u00eates de votre d\u00e9p\u00f4t transmettent les conventions de nommage, la structure des CTEs et les habitudes de commentaire bien plus efficacement qu&rsquo;une description en prose.<\/p>\n<\/details>\n\n\n\n<details id=\"comment-empecher-un-llm-dinventer-ses-propres-definitions-de-kpi\" class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>Comment emp\u00eacher un LLM d&rsquo;inventer ses propres d\u00e9finitions de KPI ?<\/summary>\n<p class=\"wp-block-paragraph\">Collez la d\u00e9finition canonique dans le prompt et demandez explicitement au mod\u00e8le de ne pas la remplacer par la sienne. Si vous vous retrouvez \u00e0 faire cela souvent, le probl\u00e8me de fond est que la d\u00e9finition n&rsquo;est centralis\u00e9e nulle part.<\/p>\n<\/details>\n\n\n\n<details id=\"les-patterns-de-prompts-se-transferent-ils-dun-modele-ia-a-un-autre\" class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>Les patterns de prompts se transf\u00e8rent-ils d&rsquo;un mod\u00e8le IA \u00e0 un autre ?<\/summary>\n<p class=\"wp-block-paragraph\">Les structures se transf\u00e8rent bien : contexte, contraintes et v\u00e9rification sont utiles quel que soit le mod\u00e8le qui les lit. Les sp\u00e9cificit\u00e9s voyagent moins bien. Un template optimis\u00e9 pour un mod\u00e8le m\u00e9rite d&rsquo;\u00eatre repass\u00e9 sur votre mod\u00e8le d&rsquo;\u00e9valuation apr\u00e8s un changement.<\/p>\n<\/details>\n\n\n\n<details id=\"comment-une-equipe-bi-devrait-elle-stocker-et-partager-ses-prompts\" class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>Comment une \u00e9quipe BI devrait-elle stocker et partager ses prompts ?<\/summary>\n<p class=\"wp-block-paragraph\">Dans le d\u00e9p\u00f4t, aux c\u00f4t\u00e9s du SQL, versionn\u00e9 et relu comme du code, avec les parties variables transform\u00e9es en placeholders nomm\u00e9s. Chaque pattern doit avoir un responsable et une condition document\u00e9e qui d\u00e9clenche sa revalidation ou son retrait.<\/p>\n<\/details>\n\n\n\n<details id=\"le-prompt-engineering-remplace-t-il-les-competences-sql-pour-les-analystes\" class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>Le prompt engineering remplace-t-il les comp\u00e9tences SQL pour les analystes ?<\/summary>\n<p class=\"wp-block-paragraph\">Non, et il \u00e9l\u00e8ve le niveau plut\u00f4t qu&rsquo;il ne l&rsquo;abaisse. V\u00e9rifier si le SQL g\u00e9n\u00e9r\u00e9 est correct demande plus de ma\u00eetrise que l&rsquo;\u00e9crire soi-m\u00eame : il faut lire une logique inconnue sous contrainte de temps, en cherchant des erreurs qui ne s&rsquo;annoncent pas d&rsquo;elles-m\u00eames.<\/p>\n<\/details>\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"url\":\"https:\/\/www.clicdata.com\/fr\/blog\/prompts-ia-pour-analyse-sql-structures-limites-et-bonnes-pratiques\/\",\"@id\":\"https:\/\/www.clicdata.com\/fr\/blog\/prompts-ia-pour-analyse-sql-structures-limites-et-bonnes-pratiques\/\",\"mainEntity\":[{\"@type\":\"Question\",\"url\":\"https:\/\/www.clicdata.com\/fr\/blog\/prompts-ia-pour-analyse-sql-structures-limites-et-bonnes-pratiques\/#en-quoi-un-template-de-prompt-est-il-different-dun-prompt-qui-a-simplement-fonctionne-une-fois\",\"name\":\"En quoi un template de prompt est-il diff\u00e9rent d'un prompt qui a simplement fonctionn\u00e9 une fois ?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"&lt;p>La diff\u00e9rence appara\u00eet au moment de le partager. Un pattern porte son propre contexte, ce qui lui permet de fonctionner dans une nouvelle session lanc\u00e9e par quelqu'un d'autre. Un prompt ad hoc, lui, d\u00e9pendait souvent de vingt minutes de conversation qui n'ont jamais \u00e9t\u00e9 copi\u00e9es avec la formulation.&lt;\/p>\"}},{\"@type\":\"Question\",\"url\":\"https:\/\/www.clicdata.com\/fr\/blog\/prompts-ia-pour-analyse-sql-structures-limites-et-bonnes-pratiques\/#comment-ecrire-un-prompt-qui-genere-du-sql-correct-pour-des-projets-analytics\",\"name\":\"Comment \u00e9crire un prompt qui g\u00e9n\u00e8re du SQL correct pour des projets analytics ?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"&lt;p>Fournissez quatre \u00e9l\u00e9ments : la structure de chaque table concern\u00e9e et ses r\u00e8gles m\u00e9tier, un \u00e9nonc\u00e9 de t\u00e2che pr\u00e9cisant le grain, le champ de date et la gestion des cas limites, des contraintes couvrant le dialecte et le format de sortie attendu, et une demande de v\u00e9rification comme un nombre de lignes attendu ou une requ\u00eate de contr\u00f4le crois\u00e9 ind\u00e9pendante.&lt;\/p>\"}},{\"@type\":\"Question\",\"url\":\"https:\/\/www.clicdata.com\/fr\/blog\/prompts-ia-pour-analyse-sql-structures-limites-et-bonnes-pratiques\/#pourquoi-lia-genere-t-elle-du-sql-qui-semble-correct-mais-renvoie-de-mauvais-chiffres\",\"name\":\"Pourquoi l'IA g\u00e9n\u00e8re-t-elle du SQL qui semble correct mais renvoie de mauvais chiffres ?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"&lt;p>Parce que SQL valide et SQL correct sont deux choses diff\u00e9rentes. Un grain de jointure cass\u00e9, un DISTINCT manquant ou un filtre appliqu\u00e9 apr\u00e8s agr\u00e9gation renvoient tous des r\u00e9sultats bien form\u00e9s, sans que rien dans le chemin d'ex\u00e9cution ne signale l'erreur. Cela ne se voit que lorsque quelqu'un r\u00e9concilie le chiffre avec une autre source.&lt;\/p>\"}},{\"@type\":\"Question\",\"url\":\"https:\/\/www.clicdata.com\/fr\/blog\/prompts-ia-pour-analyse-sql-structures-limites-et-bonnes-pratiques\/#les-analystes-devraient-ils-inclure-des-exemples-de-requetes-dans-leurs-prompts\",\"name\":\"Les analystes devraient-ils inclure des exemples de requ\u00eates dans leurs prompts ?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"&lt;p>Oui, avec leurs propres requ\u00eates plut\u00f4t que des exemples g\u00e9n\u00e9riques. Deux ou trois vraies requ\u00eates de votre d\u00e9p\u00f4t transmettent les conventions de nommage, la structure des CTEs et les habitudes de commentaire bien plus efficacement qu'une description en prose.&lt;\/p>\"}},{\"@type\":\"Question\",\"url\":\"https:\/\/www.clicdata.com\/fr\/blog\/prompts-ia-pour-analyse-sql-structures-limites-et-bonnes-pratiques\/#comment-empecher-un-llm-dinventer-ses-propres-definitions-de-kpi\",\"name\":\"Comment emp\u00eacher un LLM d'inventer ses propres d\u00e9finitions de KPI ?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"&lt;p>Collez la d\u00e9finition canonique dans le prompt et demandez explicitement au mod\u00e8le de ne pas la remplacer par la sienne. Si vous vous retrouvez \u00e0 faire cela souvent, le probl\u00e8me de fond est que la d\u00e9finition n'est centralis\u00e9e nulle part.&lt;\/p>\"}},{\"@type\":\"Question\",\"url\":\"https:\/\/www.clicdata.com\/fr\/blog\/prompts-ia-pour-analyse-sql-structures-limites-et-bonnes-pratiques\/#les-patterns-de-prompts-se-transferent-ils-dun-modele-ia-a-un-autre\",\"name\":\"Les patterns de prompts se transf\u00e8rent-ils d'un mod\u00e8le IA \u00e0 un autre ?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"&lt;p>Les structures se transf\u00e8rent bien : contexte, contraintes et v\u00e9rification sont utiles quel que soit le mod\u00e8le qui les lit. Les sp\u00e9cificit\u00e9s voyagent moins bien. Un template optimis\u00e9 pour un mod\u00e8le m\u00e9rite d'\u00eatre repass\u00e9 sur votre mod\u00e8le d'\u00e9valuation apr\u00e8s un changement.&lt;\/p>\"}},{\"@type\":\"Question\",\"url\":\"https:\/\/www.clicdata.com\/fr\/blog\/prompts-ia-pour-analyse-sql-structures-limites-et-bonnes-pratiques\/#comment-une-equipe-bi-devrait-elle-stocker-et-partager-ses-prompts\",\"name\":\"Comment une \u00e9quipe BI devrait-elle stocker et partager ses prompts ?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"&lt;p>Dans le d\u00e9p\u00f4t, aux c\u00f4t\u00e9s du SQL, versionn\u00e9 et relu comme du code, avec les parties variables transform\u00e9es en placeholders nomm\u00e9s. Chaque pattern doit avoir un responsable et une condition document\u00e9e qui d\u00e9clenche sa revalidation ou son retrait.&lt;\/p>\"}},{\"@type\":\"Question\",\"url\":\"https:\/\/www.clicdata.com\/fr\/blog\/prompts-ia-pour-analyse-sql-structures-limites-et-bonnes-pratiques\/#le-prompt-engineering-remplace-t-il-les-competences-sql-pour-les-analystes\",\"name\":\"Le prompt engineering remplace-t-il les comp\u00e9tences SQL pour les analystes ?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"&lt;p>Non, et il \u00e9l\u00e8ve le niveau plut\u00f4t qu'il ne l'abaisse. V\u00e9rifier si le SQL g\u00e9n\u00e9r\u00e9 est correct demande plus de ma\u00eetrise que l'\u00e9crire soi-m\u00eame : il faut lire une logique inconnue sous contrainte de temps, en cherchant des erreurs qui ne s'annoncent pas d'elles-m\u00eames.&lt;\/p>\"}}]}<\/script><\/div>\n","protected":false},"excerpt":{"rendered":"<p>L&rsquo;intelligence artificielle et l&rsquo;analyse de donn\u00e9es ont un angle mort que les guides grand public n&rsquo;abordent jamais : le mod\u00e8le renvoie du SQL qui s&rsquo;ex\u00e9cute proprement, sans erreur, et produit un chiffre faux que personne ne remarque. Jusqu&rsquo;au jour o\u00f9 quelqu&rsquo;un remet en question le dashboard trois semaines plus tard. La cause n&rsquo;est presque jamais [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":3106010,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_seopress_titles_title":"Prompts IA pour l'analyse SQL : structures, limites et bonnes pratiques","_seopress_titles_desc":"D\u00e9couvrez 8 patterns de prompts IA pour g\u00e9n\u00e9rer du SQL fiable : sch\u00e9ma, format de sortie, auto-v\u00e9rification et gouvernance. Cas r\u00e9els et templates pr\u00eats \u00e0 l'emploi.","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"100226","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","_seopress_news_disabled":"","_seopress_video_disabled":"","_seopress_video":[],"_seopress_pro_schemas_manual":[],"_seopress_pro_rich_snippets_disable_all":"","_seopress_pro_rich_snippets_disable":[],"_seopress_pro_schemas":[],"footnotes":""},"categories":[100226,100225],"tags":[],"role":[],"sector":[],"class_list":["post-3106009","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-analytics","category-decision-making"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.clicdata.com\/fr\/wp-json\/wp\/v2\/posts\/3106009","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.clicdata.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.clicdata.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.clicdata.com\/fr\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.clicdata.com\/fr\/wp-json\/wp\/v2\/comments?post=3106009"}],"version-history":[{"count":5,"href":"https:\/\/www.clicdata.com\/fr\/wp-json\/wp\/v2\/posts\/3106009\/revisions"}],"predecessor-version":[{"id":3106015,"href":"https:\/\/www.clicdata.com\/fr\/wp-json\/wp\/v2\/posts\/3106009\/revisions\/3106015"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.clicdata.com\/fr\/wp-json\/wp\/v2\/media\/3106010"}],"wp:attachment":[{"href":"https:\/\/www.clicdata.com\/fr\/wp-json\/wp\/v2\/media?parent=3106009"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.clicdata.com\/fr\/wp-json\/wp\/v2\/categories?post=3106009"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.clicdata.com\/fr\/wp-json\/wp\/v2\/tags?post=3106009"},{"taxonomy":"role","embeddable":true,"href":"https:\/\/www.clicdata.com\/fr\/wp-json\/wp\/v2\/role?post=3106009"},{"taxonomy":"sector","embeddable":true,"href":"https:\/\/www.clicdata.com\/fr\/wp-json\/wp\/v2\/sector?post=3106009"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}