{"id":1429,"date":"2022-04-18T16:45:38","date_gmt":"2022-04-18T14:45:38","guid":{"rendered":"https:\/\/easybi.lu\/?p=1429"},"modified":"2022-08-31T21:00:07","modified_gmt":"2022-08-31T19:00:07","slug":"bi-tips-the-sparsing-data-trap","status":"publish","type":"post","link":"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/","title":{"rendered":"BI tips: The sparsing data trap"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introduction<\/h2>\n\n\n\n<p>Did you ever ask yourself if all existing aggregate functions are always working the same way&nbsp;no matter the data quantity you have for a given period ? I would say \u00ab&nbsp;it depend of the need&nbsp;\u00bb but in a perfect world it always simplest to fill the gap for missing data in SQL queries results.<\/p>\n\n\n\n<p>Be aware that I also wanted to simplify <a rel=\"noreferrer noopener\" href=\"https:\/\/www.oracle.com\/ocom\/groups\/public\/@otn\/documents\/webcontent\/270646.htm\" target=\"_blank\">this official Oracle post<\/a> according to my personal experience and introducing this concept to get a better understanding of my next post about <strong><a rel=\"noreferrer noopener\" href=\"https:\/\/docs.oracle.com\/cd\/E11882_01\/server.112\/e25554\/analysis.htm#DWHSG0201\" target=\"_blank\">windowing aggregation<\/a><\/strong> and how I avoid useless loop on data.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why simplest&nbsp;? &nbsp;<\/h2>\n\n\n\n<p>Because data remains immutable and most important <strong>clear in your head<\/strong> for SQL queries you have to develop. I saw plenty queries not very consistent about execution plan and retrieving incomplete data dimension. Data are in fact sparse with no regular density and then difficult to format or render.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Increasing data volume&nbsp;?<\/h2>\n\n\n\n<p>Sure, data volume is already big but adding extra generated lines have no cost for the database as these lines are not existing physically. To demonstrate this point, just launch this simple query to simulate a Cartesian product generating 10M lines using a simple \u00ab\u00a0cross join\u00a0\u00bb clause.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>-- **Schema (MySQL v8.0)**\n\n    with cartesian as (\n    select 1 as number union select 2 \n    union select 3 union select 4\n    union select 5 union select 6\n    union select 7 union select 8\n    union select 9 union select 10 )\n    \n    select count(*) from cartesian c\n    cross join cartesian c1\n    cross join cartesian c2\n    cross join cartesian c3\n    cross join cartesian c4\n    cross join cartesian c5\n    cross join cartesian c6;<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"296\" height=\"211\" src=\"https:\/\/easybi.lu\/wp-content\/uploads\/2022\/04\/easybilu_sparsing_data_trap_01.png\" alt=\"\" class=\"wp-image-1436\"\/><\/figure>\n\n\n\n<p>10 millions lines generated in 1.5 sec, you can try and check with a SQL fiddle sandbox <a rel=\"noreferrer noopener\" href=\"https:\/\/www.db-fiddle.com\/f\/hcDLdZ9sGXszNoGnEhZ5JA\/0\" target=\"_blank\">here<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A simple customer need<\/h2>\n\n\n\n<p>Let see with an simple example how is it important, so business came next to you for sales reporting, the need is basic, for the last year they need&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Average sales amount<\/li><li>Number of sales period (even during covid pandemic)<\/li><li>Total sales amount<\/li><li>The minimum sales figure<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">No datawarehouse&nbsp;!<\/h2>\n\n\n\n<p>This need is such a piece of cake that you don\u2019t even realize there is no available data warehouse with the famous and universal timetable \ud83d\ude09<\/p>\n\n\n\n<p>Let\u2019s see how to manage this by looking the sale stable content.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>with sales as\n(\nselect '2021' as year, 1 as month, 10 as amt\nunion select '2021' as year, 5, 10\nunion select '2021' as year, 12, 10\n)\nselect * from sales<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td><strong>year<\/strong><\/td><td><strong>month<\/strong><\/td><td><strong>amount<\/strong><\/td><\/tr><tr><td>2021<\/td><td>1<\/td><td>10<\/td><\/tr><tr><td>2021<\/td><td>5<\/td><td>10<\/td><\/tr><tr><td>2021<\/td><td>12<\/td><td>10<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Let&rsquo;s write the query for our dear fellow business team<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>with sales as\n(\nselect '2022' as year, 1 as month, 10 as amt\nunion select '2022', 5, 10\nunion select '2022', 12, 10\n)\n\nselect 'cpt' as <em>AGG<\/em>, count(amt) as AMT from sales group by year\nunion select 'avg', avg(amt) from sales group by year\nunion select 'sum', sum(amt) from sales group by year\nunion select 'min', min(amt)  from sales group by year<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>agg<\/th><th>amt<\/th><\/tr><\/thead><tbody><tr><td>cpt<\/td><td>3.0000<\/td><\/tr><tr><td>avg<\/td><td>10.0000<\/td><\/tr><tr><td>sum<\/td><td>30.0000<\/td><\/tr><tr><td>min<\/td><td>10.0000<\/td><\/tr><\/tbody><\/table><figcaption>Result from the first attempt<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Introduce the results<\/h2>\n\n\n\n<p>You&rsquo;re confident with this result but&#8230; wait&#8230; something goes wrong with business team, it seems that figures are not the result they were expecting for. Indeed, after a shot brainstorming, the shop remains open during covid pandemic but no customer came due to quarantine, we have to keep count of the inactivity sales period.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Solution<\/h2>\n\n\n\n<p>Let&rsquo;s create a temporary timetable using a other with clause then we use a left join to fill the gap, I also re-query and compare the original column <strong>AMT <\/strong>I renamed <strong>SPARSE <\/strong>with a new column <strong>NEW_AMT<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>with timetable as\n(\nselect '2021' as year, 1 as month union select '2021',2\nunion select '2021',3 union select '2021',4\nunion select '2021',5 union select '2021',6\nunion select '2021',7 union select '2021',8\nunion select '2021',9 union select '2021',10\nunion select '2021',11 union select '2021',12\n),\nsales as\n(\nselect '2021' as year, 1 as month, 10 as amt\nunion select '2021' as year, 5, 10\nunion select '2021' as year, 12, 10\n),\n\nt1 as\n(\nselect \ntimetable.year, timetable.month,\nsales.amt as sparse, coalesce(sales.amt,0) as new_amt\nfrom timetable\nleft join sales on sales.month = timetable.month\n)\n\nselect 'cpt' as AGG, count(sparse) as SPARSE, count(new_amt) as NEW_AMT from t1 group by year\nunion select 'avg' as agg, avg(sparse) , avg(new_amt) from t1 group by year\nunion select 'sum' as agg, sum(sparse), sum(new_amt)  from t1 group by year\nunion select 'min' as agg, min(sparse) , min(new_amt)  from t1 group by year<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>AGG<\/th><th>SPARSE<\/th><th>NEW_AMT<\/th><\/tr><\/thead><tbody><tr><td>cpt<\/td><td>3.0000<\/td><td>12.0000<\/td><\/tr><tr><td>avg<\/td><td>10.0000<\/td><td>2.5000<\/td><\/tr><tr><td>sum<\/td><td>30.0000<\/td><td>30.0000<\/td><\/tr><tr><td>min<\/td><td>10.0000<\/td><td>0.0000<\/td><\/tr><\/tbody><\/table><figcaption>New result using a time table<\/figcaption><\/figure>\n\n\n\n<p>Test again the above example <a rel=\"noreferrer noopener\" href=\"https:\/\/www.db-fiddle.com\/f\/k5P3e47uewGsr9UWVo2Pb5\/0\" target=\"_blank\">here<\/a>, we directly see the correct figure versus old bad results, only the sum aggregation remains correct.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>Filling missing data is a good starting point for miscellaneous aggregation by getting a immutable data set we can query, this tip is especially useful for <strong>windowing aggregation<\/strong> BI approach I&rsquo;ll explain in a future post&#8230; stay tune \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Did you ever ask yourself if all existing aggregate functions are always working the same way&nbsp;no matter the data quantity you have for a given period ? I would say \u00ab&nbsp;it depend of the need&nbsp;\u00bb but in a perfect world it always simplest to fill the gap for missing&#8230;<\/p>\n","protected":false},"author":3,"featured_media":1431,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[28],"tags":[33,34,36],"class_list":["post-1429","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-business-intelligence","tag-bi","tag-sql","tag-tips"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>BI tips: The sparsing data trap - EasyBI<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"BI tips: The sparsing data trap - EasyBI\" \/>\n<meta property=\"og:description\" content=\"Introduction Did you ever ask yourself if all existing aggregate functions are always working the same way&nbsp;no matter the data quantity you have for a given period ? I would say \u00ab&nbsp;it depend of the need&nbsp;\u00bb but in a perfect world it always simplest to fill the gap for missing...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/\" \/>\n<meta property=\"og:site_name\" content=\"EasyBI\" \/>\n<meta property=\"article:published_time\" content=\"2022-04-18T14:45:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-08-31T19:00:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/easybi.lu\/wp-content\/uploads\/2022\/04\/easybilu_sparsing_data_trap_header.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"911\" \/>\n\t<meta property=\"og:image:height\" content=\"473\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"JS Minet\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@easybi_org\" \/>\n<meta name=\"twitter:site\" content=\"@easybi_org\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"JS Minet\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/\"},\"author\":{\"name\":\"JS Minet\",\"@id\":\"https:\/\/easybi.lu\/#\/schema\/person\/3c1348f644dc92c6d1f9fde393c091f2\"},\"headline\":\"BI tips: The sparsing data trap\",\"datePublished\":\"2022-04-18T14:45:38+00:00\",\"dateModified\":\"2022-08-31T19:00:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/\"},\"wordCount\":518,\"publisher\":{\"@id\":\"https:\/\/easybi.lu\/#organization\"},\"image\":{\"@id\":\"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/easybi.lu\/wp-content\/uploads\/2022\/04\/easybilu_sparsing_data_trap_header.jpg\",\"keywords\":[\"BI\",\"SQL\",\"Tips\"],\"articleSection\":[\"Business Intelligence\"],\"inLanguage\":\"fr-FR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/\",\"url\":\"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/\",\"name\":\"BI tips: The sparsing data trap - EasyBI\",\"isPartOf\":{\"@id\":\"https:\/\/easybi.lu\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/easybi.lu\/wp-content\/uploads\/2022\/04\/easybilu_sparsing_data_trap_header.jpg\",\"datePublished\":\"2022-04-18T14:45:38+00:00\",\"dateModified\":\"2022-08-31T19:00:07+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/#primaryimage\",\"url\":\"https:\/\/easybi.lu\/wp-content\/uploads\/2022\/04\/easybilu_sparsing_data_trap_header.jpg\",\"contentUrl\":\"https:\/\/easybi.lu\/wp-content\/uploads\/2022\/04\/easybilu_sparsing_data_trap_header.jpg\",\"width\":911,\"height\":473,\"caption\":\"easybilu_sparsing_data_trap_header\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/easybi.lu\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"BI tips: The sparsing data trap\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/easybi.lu\/#website\",\"url\":\"https:\/\/easybi.lu\/\",\"name\":\"EasyBI\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/easybi.lu\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/easybi.lu\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/easybi.lu\/#organization\",\"name\":\"EasyBI\",\"url\":\"https:\/\/easybi.lu\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/easybi.lu\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/easybi.lu\/wp-content\/uploads\/2019\/12\/Couleur-avec-baseline-75px.png\",\"contentUrl\":\"https:\/\/easybi.lu\/wp-content\/uploads\/2019\/12\/Couleur-avec-baseline-75px.png\",\"width\":67,\"height\":75,\"caption\":\"EasyBI\"},\"image\":{\"@id\":\"https:\/\/easybi.lu\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/easybi_org\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/easybi.lu\/#\/schema\/person\/3c1348f644dc92c6d1f9fde393c091f2\",\"name\":\"JS Minet\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/easybi.lu\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/04444764cc721204aee8e12a7d3ccc2d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/04444764cc721204aee8e12a7d3ccc2d?s=96&d=mm&r=g\",\"caption\":\"JS Minet\"},\"url\":\"https:\/\/easybi.lu\/index.php\/author\/jsm\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"BI tips: The sparsing data trap - EasyBI","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/","og_locale":"fr_FR","og_type":"article","og_title":"BI tips: The sparsing data trap - EasyBI","og_description":"Introduction Did you ever ask yourself if all existing aggregate functions are always working the same way&nbsp;no matter the data quantity you have for a given period ? I would say \u00ab&nbsp;it depend of the need&nbsp;\u00bb but in a perfect world it always simplest to fill the gap for missing...","og_url":"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/","og_site_name":"EasyBI","article_published_time":"2022-04-18T14:45:38+00:00","article_modified_time":"2022-08-31T19:00:07+00:00","og_image":[{"width":911,"height":473,"url":"https:\/\/easybi.lu\/wp-content\/uploads\/2022\/04\/easybilu_sparsing_data_trap_header.jpg","type":"image\/jpeg"}],"author":"JS Minet","twitter_card":"summary_large_image","twitter_creator":"@easybi_org","twitter_site":"@easybi_org","twitter_misc":{"\u00c9crit par":"JS Minet","Dur\u00e9e de lecture estim\u00e9e":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/#article","isPartOf":{"@id":"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/"},"author":{"name":"JS Minet","@id":"https:\/\/easybi.lu\/#\/schema\/person\/3c1348f644dc92c6d1f9fde393c091f2"},"headline":"BI tips: The sparsing data trap","datePublished":"2022-04-18T14:45:38+00:00","dateModified":"2022-08-31T19:00:07+00:00","mainEntityOfPage":{"@id":"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/"},"wordCount":518,"publisher":{"@id":"https:\/\/easybi.lu\/#organization"},"image":{"@id":"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/#primaryimage"},"thumbnailUrl":"https:\/\/easybi.lu\/wp-content\/uploads\/2022\/04\/easybilu_sparsing_data_trap_header.jpg","keywords":["BI","SQL","Tips"],"articleSection":["Business Intelligence"],"inLanguage":"fr-FR"},{"@type":"WebPage","@id":"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/","url":"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/","name":"BI tips: The sparsing data trap - EasyBI","isPartOf":{"@id":"https:\/\/easybi.lu\/#website"},"primaryImageOfPage":{"@id":"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/#primaryimage"},"image":{"@id":"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/#primaryimage"},"thumbnailUrl":"https:\/\/easybi.lu\/wp-content\/uploads\/2022\/04\/easybilu_sparsing_data_trap_header.jpg","datePublished":"2022-04-18T14:45:38+00:00","dateModified":"2022-08-31T19:00:07+00:00","breadcrumb":{"@id":"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/#primaryimage","url":"https:\/\/easybi.lu\/wp-content\/uploads\/2022\/04\/easybilu_sparsing_data_trap_header.jpg","contentUrl":"https:\/\/easybi.lu\/wp-content\/uploads\/2022\/04\/easybilu_sparsing_data_trap_header.jpg","width":911,"height":473,"caption":"easybilu_sparsing_data_trap_header"},{"@type":"BreadcrumbList","@id":"https:\/\/easybi.lu\/index.php\/2022\/04\/18\/bi-tips-the-sparsing-data-trap\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/easybi.lu\/"},{"@type":"ListItem","position":2,"name":"BI tips: The sparsing data trap"}]},{"@type":"WebSite","@id":"https:\/\/easybi.lu\/#website","url":"https:\/\/easybi.lu\/","name":"EasyBI","description":"","publisher":{"@id":"https:\/\/easybi.lu\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/easybi.lu\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/easybi.lu\/#organization","name":"EasyBI","url":"https:\/\/easybi.lu\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/easybi.lu\/#\/schema\/logo\/image\/","url":"https:\/\/easybi.lu\/wp-content\/uploads\/2019\/12\/Couleur-avec-baseline-75px.png","contentUrl":"https:\/\/easybi.lu\/wp-content\/uploads\/2019\/12\/Couleur-avec-baseline-75px.png","width":67,"height":75,"caption":"EasyBI"},"image":{"@id":"https:\/\/easybi.lu\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/easybi_org"]},{"@type":"Person","@id":"https:\/\/easybi.lu\/#\/schema\/person\/3c1348f644dc92c6d1f9fde393c091f2","name":"JS Minet","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/easybi.lu\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/04444764cc721204aee8e12a7d3ccc2d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/04444764cc721204aee8e12a7d3ccc2d?s=96&d=mm&r=g","caption":"JS Minet"},"url":"https:\/\/easybi.lu\/index.php\/author\/jsm\/"}]}},"_links":{"self":[{"href":"https:\/\/easybi.lu\/index.php\/wp-json\/wp\/v2\/posts\/1429","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/easybi.lu\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/easybi.lu\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/easybi.lu\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/easybi.lu\/index.php\/wp-json\/wp\/v2\/comments?post=1429"}],"version-history":[{"count":22,"href":"https:\/\/easybi.lu\/index.php\/wp-json\/wp\/v2\/posts\/1429\/revisions"}],"predecessor-version":[{"id":1460,"href":"https:\/\/easybi.lu\/index.php\/wp-json\/wp\/v2\/posts\/1429\/revisions\/1460"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/easybi.lu\/index.php\/wp-json\/wp\/v2\/media\/1431"}],"wp:attachment":[{"href":"https:\/\/easybi.lu\/index.php\/wp-json\/wp\/v2\/media?parent=1429"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/easybi.lu\/index.php\/wp-json\/wp\/v2\/categories?post=1429"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/easybi.lu\/index.php\/wp-json\/wp\/v2\/tags?post=1429"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}