{"id":1741,"date":"2026-08-10T12:25:32","date_gmt":"2026-08-10T12:25:32","guid":{"rendered":"https:\/\/vykhodtsev.dev\/?p=1741"},"modified":"2026-08-10T12:25:32","modified_gmt":"2026-08-10T12:25:32","slug":"%f0%9f%93%8a-ai-sql-agent-can-now-generate-charts-directly-from-natural-language-queries","status":"publish","type":"post","link":"https:\/\/vykhodtsev.dev\/?p=1741","title":{"rendered":"\ud83d\udcca AI SQL Agent can now generate charts directly from natural language queries"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Aug 9 2026<br>Another exciting milestone for my AI SQL Agent!<br>The latest version goes beyond generating SQL and displaying tables\u2014it can now automatically create visualizations based on query results.<br>Users can simply ask questions like:<br>Show total sales by month<br>Display revenue by product group<br>Compare product sales in July<br>Create a pie chart of sales by category<br>The AI Agent will:<br>\u2705 Understand the natural language request<br>\u2705 Generate the appropriate SQL query<br>\u2705 Execute it against the database<br>\u2705 Return the data as an interactive chart<br>Current visualization capabilities include:<br>\ud83d\udcc8 Line charts for trends over time<br>\ud83d\udcca Bar charts for comparisons<br>\ud83e\udd67 Pie charts for category distributions<br>To make the experience even more intuitive, the website also provides a built-in Database Explorer where users can browse:<br>database schema<br>tables<br>columns<br>sample records<br>This allows users to understand the available data before asking questions and see exactly how the AI translates natural language into SQL.<br>The complete demo is built with:<br>Microsoft Azure App Service<br>Azure OpenAI<br>FastAPI<br>WordPress front end<br>Azure Database for MySQL<br>GitHub Actions CI\/CD<br>This is another step toward my vision of building AI-powered engineering assistants that simplify SQL development, analytics, ETL, and enterprise data workflows.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.linkedin.com\/search\/results\/all\/?keywords=%23ai&amp;origin=HASH_TAG_FROM_FEED\"><strong>#AI<\/strong><\/a><a href=\"https:\/\/www.linkedin.com\/search\/results\/all\/?keywords=%23artificialintelligence&amp;origin=HASH_TAG_FROM_FEED\"><strong>#ArtificialIntelligence<\/strong><\/a><a href=\"https:\/\/www.linkedin.com\/search\/results\/all\/?keywords=%23azure&amp;origin=HASH_TAG_FROM_FEED\"><strong>#Azure<\/strong><\/a><a href=\"https:\/\/www.linkedin.com\/search\/results\/all\/?keywords=%23azureopenai&amp;origin=HASH_TAG_FROM_FEED\"><strong>#AzureOpenAI<\/strong><\/a><a href=\"https:\/\/www.linkedin.com\/search\/results\/all\/?keywords=%23dataengineering&amp;origin=HASH_TAG_FROM_FEED\"><strong>#DataEngineering<\/strong><\/a><a href=\"https:\/\/www.linkedin.com\/search\/results\/all\/?keywords=%23sql&amp;origin=HASH_TAG_FROM_FEED\"><strong>#SQL<\/strong><\/a><a href=\"https:\/\/www.linkedin.com\/search\/results\/all\/?keywords=%23python&amp;origin=HASH_TAG_FROM_FEED\"><strong>#Python<\/strong><\/a><a href=\"https:\/\/www.linkedin.com\/search\/results\/all\/?keywords=%23fastapi&amp;origin=HASH_TAG_FROM_FEED\"><strong>#FastAPI<\/strong><\/a><a href=\"https:\/\/www.linkedin.com\/search\/results\/all\/?keywords=%23wordpress&amp;origin=HASH_TAG_FROM_FEED\"><strong>#WordPress<\/strong><\/a><a href=\"https:\/\/www.linkedin.com\/search\/results\/all\/?keywords=%23mysql&amp;origin=HASH_TAG_FROM_FEED\"><strong>#MySQL<\/strong><\/a><a href=\"https:\/\/www.linkedin.com\/search\/results\/all\/?keywords=%23datavisualization&amp;origin=HASH_TAG_FROM_FEED\"><strong>#DataVisualization<\/strong><\/a><a href=\"https:\/\/www.linkedin.com\/search\/results\/all\/?keywords=%23businessintelligence&amp;origin=HASH_TAG_FROM_FEED\"><strong>#BusinessIntelligence<\/strong><\/a><a href=\"https:\/\/www.linkedin.com\/search\/results\/all\/?keywords=%23analytics&amp;origin=HASH_TAG_FROM_FEED\"><strong>#Analytics<\/strong><\/a><a href=\"https:\/\/www.linkedin.com\/search\/results\/all\/?keywords=%23generativeai&amp;origin=HASH_TAG_FROM_FEED\"><strong>#GenerativeAI<\/strong><\/a><a href=\"https:\/\/www.linkedin.com\/search\/results\/all\/?keywords=%23enterpriseai&amp;origin=HASH_TAG_FROM_FEED\"><strong>#EnterpriseAI<\/strong><\/a><a href=\"https:\/\/www.linkedin.com\/search\/results\/all\/?keywords=%23automation&amp;origin=HASH_TAG_FROM_FEED\"><strong>#Automation<\/strong><\/a><a href=\"https:\/\/www.linkedin.com\/search\/results\/all\/?keywords=%23cloudcomputing&amp;origin=HASH_TAG_FROM_FEED\"><strong>#CloudComputing<\/strong><\/a><a href=\"https:\/\/www.linkedin.com\/search\/results\/all\/?keywords=%23githubactions&amp;origin=HASH_TAG_FROM_FEED\"><strong>#GitHubActions<\/strong><\/a><a href=\"https:\/\/www.linkedin.com\/search\/results\/all\/?keywords=%23aiagents&amp;origin=HASH_TAG_FROM_FEED\"><strong>#AIAgents<\/strong><\/a><a href=\"https:\/\/www.linkedin.com\/search\/results\/all\/?keywords=%23microsoftazure&amp;origin=HASH_TAG_FROM_FEED\"><strong>#MicrosoftAzure<\/strong><\/a><\/p>\n\n\n\n<figure data-spectra-id=\"spectra-msn7au8d-51zol0\" class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"874\" src=\"https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-09-191300-1-1024x874.png\" alt=\"screenshot 2026 08 09 191300\" class=\"wp-image-1747\" title=\"\ud83d\udcca AI SQL Agent can now generate charts directly from natural language queries\" srcset=\"https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-09-191300-1-1024x874.png 1024w, https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-09-191300-1-300x256.png 300w, https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-09-191300-1-768x656.png 768w, https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-09-191300-1.png 1333w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure data-spectra-id=\"spectra-msn7bfrj-vb5z02\" class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"900\" src=\"https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-09-190715-1-1024x900.png\" alt=\"screenshot 2026 08 09 190715\" class=\"wp-image-1749\" title=\"\ud83d\udcca AI SQL Agent can now generate charts directly from natural language queries\" srcset=\"https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-09-190715-1-1024x900.png 1024w, https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-09-190715-1-300x264.png 300w, https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-09-190715-1-768x675.png 768w, https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-09-190715-1.png 1300w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure data-spectra-id=\"spectra-msn7bo9g-pbxwp5\" class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1017\" src=\"https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-09-190540-1-1024x1017.png\" alt=\"screenshot 2026 08 09 190540\" class=\"wp-image-1750\" title=\"\ud83d\udcca AI SQL Agent can now generate charts directly from natural language queries\" srcset=\"https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-09-190540-1-1024x1017.png 1024w, https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-09-190540-1-300x298.png 300w, https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-09-190540-1-150x150.png 150w, https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-09-190540-1-768x763.png 768w, https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-09-190540-1.png 1206w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure data-spectra-id=\"spectra-msn7bvdc-70eml0\" class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"795\" src=\"https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-09-185511-1-1024x795.png\" alt=\"screenshot 2026 08 09 185511\" class=\"wp-image-1751\" title=\"\ud83d\udcca AI SQL Agent can now generate charts directly from natural language queries\" srcset=\"https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-09-185511-1-1024x795.png 1024w, https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-09-185511-1-300x233.png 300w, https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-09-185511-1-768x596.png 768w, https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-09-185511-1-1536x1193.png 1536w, https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-09-185511-1.png 1549w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Aug 9 2026Another exciting milestone for my AI SQL Agent!The latest version goes beyond generating SQL and displaying tables\u2014it can now automatically create visualizations based on query results.Users can simply ask questions like:Show total sales by monthDisplay revenue by product groupCompare product sales in JulyCreate a pie chart of sales by categoryThe AI Agent will:\u2705 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1744,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1741","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"spectra_blocks_featured_image_url":{"thumbnail":{"url":"https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-09-190715-150x150.png","width":150,"height":150},"medium":{"url":"https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-09-190715-300x264.png","width":300,"height":264},"medium_large":{"url":"https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-09-190715-768x675.png","width":768,"height":675},"large":{"url":"https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-09-190715-1024x900.png","width":1024,"height":900},"full":{"url":"https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-09-190715.png","width":1300,"height":1143}},"spectra_blocks_author_info":{"display_name":"Aleksei","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/198b25ea575ebb3cbd0934cb05fd942d0f256a65d3ff388a161c857e00b092bf?s=96&d=mm&r=g","author_link":"https:\/\/vykhodtsev.dev\/?author=1","description":""},"_links":{"self":[{"href":"https:\/\/vykhodtsev.dev\/index.php?rest_route=\/wp\/v2\/posts\/1741","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vykhodtsev.dev\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vykhodtsev.dev\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vykhodtsev.dev\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vykhodtsev.dev\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1741"}],"version-history":[{"count":1,"href":"https:\/\/vykhodtsev.dev\/index.php?rest_route=\/wp\/v2\/posts\/1741\/revisions"}],"predecessor-version":[{"id":1752,"href":"https:\/\/vykhodtsev.dev\/index.php?rest_route=\/wp\/v2\/posts\/1741\/revisions\/1752"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vykhodtsev.dev\/index.php?rest_route=\/wp\/v2\/media\/1744"}],"wp:attachment":[{"href":"https:\/\/vykhodtsev.dev\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1741"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vykhodtsev.dev\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1741"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vykhodtsev.dev\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1741"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}