{"id":13249,"date":"2020-11-05T13:25:00","date_gmt":"2020-11-05T13:25:00","guid":{"rendered":"https:\/\/timi.eu\/?p=13249"},"modified":"2021-06-07T13:49:16","modified_gmt":"2021-06-07T13:49:16","slug":"fuzzy-matching-tableau-prep-builder-vs-anatella","status":"publish","type":"post","link":"https:\/\/timi.eu\/fr\/blog-fr\/fuzzy-matching-tableau-prep-builder-vs-anatella\/","title":{"rendered":"Fuzzy matching : Tableau Prep Builder vs. Anatella"},"content":{"rendered":"\n<div\n\t class=\"wpml-ls-statics-shortcode_actions wpml-ls wpml-ls-legacy-dropdown js-wpml-ls-legacy-dropdown\">\n\t<ul>\n\n\t\t<li tabindex=\"0\" class=\"wpml-ls-slot-shortcode_actions wpml-ls-item wpml-ls-item-fr wpml-ls-current-language wpml-ls-item-legacy-dropdown\">\n\t\t\t<a href=\"#\" class=\"js-wpml-ls-item-toggle wpml-ls-item-toggle\">\n                                                    <img\n            class=\"wpml-ls-flag\"\n            src=\"https:\/\/timi.eu\/wp-content\/plugins\/sitepress-multilingual-cms\/res\/flags\/fr.png\"\n            alt=\"\"\n            width=18\n            height=12\n    \/><span class=\"wpml-ls-native\">Fran\u00e7ais<\/span><\/a>\n\n\t\t\t<ul class=\"wpml-ls-sub-menu\">\n\t\t\t\t\n\t\t\t\t\t<li class=\"wpml-ls-slot-shortcode_actions wpml-ls-item wpml-ls-item-en wpml-ls-first-item\">\n\t\t\t\t\t\t<a href=\"https:\/\/timi.eu\" class=\"wpml-ls-link\">\n                                                                <img\n            class=\"wpml-ls-flag\"\n            src=\"https:\/\/timi.eu\/wp-content\/plugins\/sitepress-multilingual-cms\/res\/flags\/en.png\"\n            alt=\"\"\n            width=18\n            height=12\n    \/><span class=\"wpml-ls-display\">Anglais<\/span><\/a>\n\t\t\t\t\t<\/li>\n\n\t\t\t\t\n\t\t\t\t\t<li class=\"wpml-ls-slot-shortcode_actions wpml-ls-item wpml-ls-item-es\">\n\t\t\t\t\t\t<a href=\"https:\/\/timi.eu\/es\/\" class=\"wpml-ls-link\">\n                                                                <img\n            class=\"wpml-ls-flag\"\n            src=\"https:\/\/timi.eu\/wp-content\/plugins\/sitepress-multilingual-cms\/res\/flags\/es.png\"\n            alt=\"\"\n            width=18\n            height=12\n    \/><span class=\"wpml-ls-display\">Espagnol<\/span><\/a>\n\t\t\t\t\t<\/li>\n\n\t\t\t\t\n\t\t\t\t\t<li class=\"wpml-ls-slot-shortcode_actions wpml-ls-item wpml-ls-item-nl\">\n\t\t\t\t\t\t<a href=\"https:\/\/timi.eu\/nl\/\" class=\"wpml-ls-link\">\n                                                                <img\n            class=\"wpml-ls-flag\"\n            src=\"https:\/\/timi.eu\/wp-content\/plugins\/sitepress-multilingual-cms\/res\/flags\/nl.png\"\n            alt=\"\"\n            width=18\n            height=12\n    \/><span class=\"wpml-ls-display\">N\u00e9erlandais<\/span><\/a>\n\t\t\t\t\t<\/li>\n\n\t\t\t\t\n\t\t\t\t\t<li class=\"wpml-ls-slot-shortcode_actions wpml-ls-item wpml-ls-item-ru wpml-ls-last-item\">\n\t\t\t\t\t\t<a href=\"https:\/\/timi.eu\/ru\/\" class=\"wpml-ls-link\">\n                                                                <img\n            class=\"wpml-ls-flag\"\n            src=\"https:\/\/timi.eu\/wp-content\/plugins\/sitepress-multilingual-cms\/res\/flags\/ru.png\"\n            alt=\"\"\n            width=18\n            height=12\n    \/><span class=\"wpml-ls-display\">Russe<\/span><\/a>\n\t\t\t\t\t<\/li>\n\n\t\t\t\t\t\t\t<\/ul>\n\n\t\t<\/li>\n\n\t<\/ul>\n<\/div>\n\n<h1>Fuzzy matching entre tables :<br \/>\nTableau Prep Builder vs Anatella<\/h1>\n<p>Si vous manipulez des donn\u00e9es \u00e0 des fins d\u2019analyses et\/ou de visualisations, vous avez sans doute d\u00e9j\u00e0 rencontr\u00e9 ce probl\u00e8me. Vous devez faire une jointure entre 2 bases de donn\u00e9es mais les entr\u00e9es dans le champ de r\u00e9f\u00e9rence ne sont pas exactement les m\u00eames. Diff\u00e9rences d\u2019orthographe, nomenclatures diff\u00e9rentes, \u2026 les raisons sont multiples et vari\u00e9es. Dans le cadre d\u2019une recherche que je fais pour visualiser les flux migratoires, j\u2019ai \u00e9t\u00e9 confront\u00e9 \u00e0 ce probl\u00e8me. J\u2019ai d\u00fb le r\u00e9soudre en utilisant&nbsp;<strong>une solution d\u2019ETL (Extract \u2013 Transform \u2013 Load) g\u00e9rant le fuzzy matching<\/strong>. Je vous explique comme j\u2019ai fait.<br \/>\n<a name=\"para1\"><\/a><\/p>\n<h2>Sommaire<\/h2>\n<ul>\n<li><a href=\"#para1\">Introduction<\/a><\/li>\n<li><a href=\"#para2\">Le probl\u00e8me<\/a><\/li>\n<li><a href=\"#para3\">Solution 1 avec Tableau Prep Builder (spoiler : \u00e7a marche pas)<\/a><\/li>\n<li><a href=\"#para4\">Solution 2 avec Anatella (spoiler : \u00e7a marche)<\/a><\/li>\n<li><a href=\"#para5\">Conclusion<\/a><\/li>\n<\/ul>\n<hr class=\"wp-block-separator\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" class=\"aligncenter size-large wp-image-13405\" src=\"https:\/\/timi.eu\/wp-content\/uploads\/2021\/04\/introduction-banner-1024x341.jpg\" alt=\"\" width=\"600\" srcset=\"https:\/\/timi.eu\/wp-content\/uploads\/2021\/04\/introduction-banner-1024x341.jpg 1024w, https:\/\/timi.eu\/wp-content\/uploads\/2021\/04\/introduction-banner-600x200.jpg 600w, https:\/\/timi.eu\/wp-content\/uploads\/2021\/04\/introduction-banner-300x100.jpg 300w, https:\/\/timi.eu\/wp-content\/uploads\/2021\/04\/introduction-banner-768x256.jpg 768w, https:\/\/timi.eu\/wp-content\/uploads\/2021\/04\/introduction-banner.jpg 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<p><a name=\"para2\"><\/a><\/p>\n<h2>Introduction<\/h2>\n<p>Dans le cadre d\u2019un projet personnel sur la visualisation des flux migratoires en Europe, j\u2019ai obtenu des chiffres de l\u2019Union Europ\u00e9enne (la base de donn\u00e9es a 242500 lignes). La base de donn\u00e9es d\u00e9taille le nombre de migrants en fonction de leur pays d\u2019origine et de leur pays de destination. D\u2019un c\u00f4t\u00e9 vous avez donc pas loin de 200 pays d\u2019origine, et de l\u2019autre une trentaine de pays de destination. Il m\u2019a donc sembl\u00e9 opportun de visualiser ces flux \u00e0 un niveau sup\u00e9rieur de granularit\u00e9 : la r\u00e9gion d\u2019origine.<\/p>\n<p>J\u2019aurais pu faire des groupes de pays directement dans Tableau mais quand vous avez 200 entr\u00e9es c\u2019est fastidieux (et pas forc\u00e9ment exempt d\u2019erreurs). J\u2019ai donc pr\u00e9f\u00e9r\u00e9 chercher une base de donn\u00e9es des diff\u00e9rents pays du globe et de la r\u00e9gion \u201cofficielle\u201d \u00e0 laquelle ils sont rattach\u00e9s. J\u2019ai trouv\u00e9 ce r\u00e9f\u00e9rentiel sur le site de l\u2019organisation mondiale du commerce.<br \/>\n<a name=\"para3\"><\/a><\/p>\n<h2>Le probl\u00e8me<\/h2>\n<p>Le probl\u00e8me c\u2019est qu\u2019un nom de pays est loin d\u2019\u00eatre une constante. Voici quelques exemples :<\/p>\n<ul>\n<li>\u201cCabo Verde\u201d dans la langue nationale du pays, \u201cCap Verde\u201d en anglais<\/li>\n<li>\u201cAntigua et Barbuda\u201d dans un fichier, \u201cAntigua &amp; Brabuba\u201d dans l\u2019autre<\/li>\n<li>\u201cBahamas\u201d et \u201cThe Bahamas\u201d<\/li>\n<li>\u201cCentral African Republic\u201d et \u201cCentral African Rep.\u201d<\/li>\n<li>\u201cCook Islands (NZ)\u201d et \u201cCook Islands\u201d<\/li>\n<li>\u201cC\u00f4te d\u2019Ivoire\u201d et \u201cCote d\u2019Ivoire\u201d<\/li>\n<\/ul>\n<p>Avant de me faire alpaguer par les aficionados du \u201csearch and replace\u201d dans Excel, pr\u00e9cisons tout de suite que je cherchais une solution qui soit plus \u00e9conome en termes de transformations.<br \/>\n<a name=\"para3\"><\/a><br \/>\nBref, vous l\u2019aurez compris, j\u2019aurais pu passer quelques heures \u00e0 nettoyer ma base de donn\u00e9es et \u00e0 faire \u201cmatcher\u201d les entr\u00e9es pour que la jointure puisse fonctionner. Mais j\u2019avais besoin d\u2019une solution plus \u00e9l\u00e9gante.<\/p>\n<hr class=\"wp-block-separator\">\n<figure class=\"aligncenter\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-13408\" src=\"https:\/\/timi.eu\/wp-content\/uploads\/2021\/04\/1-banner-470x157-1.jpg\" alt=\"\" width=\"470\" height=\"157\" srcset=\"https:\/\/timi.eu\/wp-content\/uploads\/2021\/04\/1-banner-470x157-1.jpg 470w, https:\/\/timi.eu\/wp-content\/uploads\/2021\/04\/1-banner-470x157-1-300x100.jpg 300w\" sizes=\"(max-width: 470px) 100vw, 470px\" \/><\/figure>\n<h2>Solution n\u00b01 (celle qui n\u2019a pas march\u00e9)<\/h2>\n<p>Comme mon intention \u00e9tait de visualiser mes donn\u00e9es dans Tableau, la premi\u00e8re solution que j\u2019ai tent\u00e9e consistait \u00e0 utiliser Tableau Prep Builder. L\u2019avantage de Tableau Prep Builder c\u2019est que le process d\u2019ETL est graphique et que les probl\u00e8mes vous sautent aux yeux (voir ci-dessous, Tableau Prep vous les met automatiquement en rouge). J\u2019ai surlign\u00e9 en jaune ceux dont je parlais plus haut. Restez \u00e0 savoir si un&nbsp;<em>fuzzy join<\/em>&nbsp;entre tables \u00e9tait possible.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a class=\"single-popup-image\" href=\"https:\/\/timi.eu\/wp-content\/uploads\/2020\/11\/tableau-prep-joint-similarities-fuzzy-join-1024x625-1.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-14563\" src=\"https:\/\/timi.eu\/wp-content\/uploads\/2020\/11\/tableau-prep-joint-similarities-fuzzy-join-1024x625-1.jpg\" alt=\"\" width=\"1024\" height=\"625\" srcset=\"https:\/\/timi.eu\/wp-content\/uploads\/2020\/11\/tableau-prep-joint-similarities-fuzzy-join-1024x625-1.jpg 1024w, https:\/\/timi.eu\/wp-content\/uploads\/2020\/11\/tableau-prep-joint-similarities-fuzzy-join-1024x625-1-600x366.jpg 600w, https:\/\/timi.eu\/wp-content\/uploads\/2020\/11\/tableau-prep-joint-similarities-fuzzy-join-1024x625-1-300x183.jpg 300w, https:\/\/timi.eu\/wp-content\/uploads\/2020\/11\/tableau-prep-joint-similarities-fuzzy-join-1024x625-1-768x469.jpg 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n<p>Quelques recherches plus tard, je suis tomb\u00e9 sur&nbsp;<a href=\"https:\/\/onenumber.biz\/blog-1\/2018\/9\/7\/can-tableau-prep-do-fuzzy-matching\" target=\"_blank\" rel=\"noreferrer noopener\">cet article<\/a>&nbsp;qui d\u00e9crit une m\u00e9thode de regroupement par prononciation.&nbsp; Cette option est accessible ici :<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a class=\"single-popup-image\" href=\"https:\/\/timi.eu\/wp-content\/uploads\/2020\/11\/tableau-prep-group-pronunciation-470x277-1.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-14560\" src=\"https:\/\/timi.eu\/wp-content\/uploads\/2020\/11\/tableau-prep-group-pronunciation-470x277-1.jpg\" alt=\"\" width=\"470\" height=\"277\" srcset=\"https:\/\/timi.eu\/wp-content\/uploads\/2020\/11\/tableau-prep-group-pronunciation-470x277-1.jpg 470w, https:\/\/timi.eu\/wp-content\/uploads\/2020\/11\/tableau-prep-group-pronunciation-470x277-1-300x177.jpg 300w\" sizes=\"(max-width: 470px) 100vw, 470px\" \/><\/a><\/figure>\n<\/div>\n<p>Les regroupements sont utiles \u00e0 l\u2019int\u00e9rieur d\u2019une m\u00eame table pour d\u00e9tecter les variations. Les explications techniques sont&nbsp;<a href=\"https:\/\/www.tableau.com\/engineering\/blog\/2019\/9\/automated-grouping-tableau-prep-builder\" target=\"_blank\" rel=\"noreferrer noopener\">ici<\/a>. L\u2019algorithme utilis\u00e9 s\u2019appelle Metaphore 3 (open source, voir&nbsp;<a href=\"https:\/\/stackoverflow.com\/questions\/10442633\/what-is-the-metaphone-3-algorithm\" target=\"_blank\" rel=\"noreferrer noopener\">ici<\/a>).<br \/>\n<a name=\"para4\"><\/a><br \/>\nLe souci c\u2019est que les groupements ne sont possibles que sur une seule table. J\u2019aurais donc d\u00fb faire une jointure, ensuite un regroupement, pour finir par une d\u00e9duplication manuelle. C\u2019est possible quand vous avez quelques entr\u00e9es mais la m\u00e9thode n\u2019aurait pas \u00e9t\u00e9 scalable.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a class=\"single-popup-image\" href=\"https:\/\/timi.eu\/wp-content\/uploads\/2020\/11\/grouping-pronunciation-tableau-prep-470x316-1.gif\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-14557\" src=\"https:\/\/timi.eu\/wp-content\/uploads\/2020\/11\/grouping-pronunciation-tableau-prep-470x316-1.gif\" alt=\"\" width=\"470\" height=\"316\"><\/a><\/figure>\n<\/div>\n<p>Il est temps de vous parler de la 2\u00e8me solution.<\/p>\n<hr class=\"wp-block-separator\">\n<h2><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-13411\" src=\"https:\/\/timi.eu\/wp-content\/uploads\/2021\/04\/2-banner-470x157-1.jpg\" alt=\"\" width=\"470\" height=\"157\" srcset=\"https:\/\/timi.eu\/wp-content\/uploads\/2021\/04\/2-banner-470x157-1.jpg 470w, https:\/\/timi.eu\/wp-content\/uploads\/2021\/04\/2-banner-470x157-1-300x100.jpg 300w\" sizes=\"(max-width: 470px) 100vw, 470px\" \/><br \/>\nSolution n\u00b02 (celle-l\u00e0 elle a march\u00e9 !)<\/h2>\n<p>Pour r\u00e9soudre mes probl\u00e8mes de fuzzy matching ET avoir une solution qui soit \u201cscalable\u201d, je me suis tourn\u00e9 ensuite vers&nbsp;<a href=\"http:\/\/www.anatella.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Anatella<\/a>.<\/p>\n<p>L\u2019avantage de cette solution (outre qu\u2019elle est gratuite pour les petites installations) c\u2019est qu\u2019elle dispose d\u2019un outil de jointure coupl\u00e9 avec du fuzzy matching. Si vous savez travailler sous Tableau Prep (ou n\u2019importe quel autre ETL) vous ne devriez pas \u00eatre d\u00e9pays\u00e9. Le look&amp;feel est \u00e0 peu pr\u00e8s le m\u00eame (des bo\u00eetes, des fl\u00e8ches, des param\u00e8tres). Pour moi le gros avantage d\u2019Anatella c\u2019est la richesse des fonctionnalit\u00e9s propos\u00e9es (+\/-300). Voil\u00e0 \u00e0 quoi ressemble le flux mis en place pour r\u00e9soudre le probl\u00e8me (cliquez dessus pour l\u2019agrandir).<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a class=\"single-popup-image\" href=\"https:\/\/timi.eu\/wp-content\/uploads\/2020\/11\/fuzzy-matching-process-anatella.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-large wp-image-14554\" src=\"https:\/\/timi.eu\/wp-content\/uploads\/2020\/11\/fuzzy-matching-process-anatella-1024x219.jpg\" alt=\"\" width=\"1024\" height=\"219\" srcset=\"https:\/\/timi.eu\/wp-content\/uploads\/2020\/11\/fuzzy-matching-process-anatella-1024x219.jpg 1024w, https:\/\/timi.eu\/wp-content\/uploads\/2020\/11\/fuzzy-matching-process-anatella-600x128.jpg 600w, https:\/\/timi.eu\/wp-content\/uploads\/2020\/11\/fuzzy-matching-process-anatella-300x64.jpg 300w, https:\/\/timi.eu\/wp-content\/uploads\/2020\/11\/fuzzy-matching-process-anatella-768x164.jpg 768w, https:\/\/timi.eu\/wp-content\/uploads\/2020\/11\/fuzzy-matching-process-anatella-1536x329.jpg 1536w, https:\/\/timi.eu\/wp-content\/uploads\/2020\/11\/fuzzy-matching-process-anatella.jpg 1873w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n<p>Je ne vais pas vous d\u00e9tailler l\u2019enti\u00e8ret\u00e9 du process mais je vais juste me concentrer sur les parties les plus importantes et bien entendu sur le fuzzy matching.<\/p>\n<ul>\n<li>Dans l\u2019\u00e9tape 1 je s\u00e9pare les entr\u00e9es pour laquelle la jointure s\u2019est bien pass\u00e9e (bras inf\u00e9rieur) des entr\u00e9es pour lesquelles aucune correspondance n\u2019a \u00e9t\u00e9 trouv\u00e9e (bras sup\u00e9rieur).<\/li>\n<li>Dans l\u2019\u00e9tape 2 j\u2019applique le fameux outil de jointure par fuzzy matching.<\/li>\n<\/ul>\n<p><a name=\"para5\"><\/a><br \/>\nCette fonctionnalit\u00e9 est int\u00e9ressante car elle vous permet d\u2019aller beaucoup plus loin que Tableau Prep par exemple, mais aussi qu\u2019un ETL comme Talend. Vous pouvez en effet choisir l\u2019algorithme \u00e0 appliquer pour calculer la similarit\u00e9 entre deux champs. Comme Anatella vous retourne le&nbsp;<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Mesure_de_similarit%C3%A9\" target=\"_blank\" rel=\"noreferrer noopener\">coefficient de similarit\u00e9<\/a>&nbsp;obtenu, il ne reste plus alors qu\u2019\u00e0 choisir un seuil et \u00e0 l\u2019appliquer. Les diff\u00e9rents algorithmes disponibles sont le&nbsp;<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Indice_de_S%C3%B8rensen-Dice\" target=\"_blank\" rel=\"noreferrer noopener\">coefficient de similarit\u00e9 de Dice<\/a>, la m\u00e9thode par similarit\u00e9 de Damereau LevenStein, celle de&nbsp;<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Distance_de_Jaro-Winkler\" target=\"_blank\" rel=\"noreferrer noopener\">Jareau Winkler<\/a>&nbsp;et le calcul de&nbsp;<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Distance_de_Damerau-Levenshtein\" target=\"_blank\" rel=\"noreferrer noopener\">distance de Damereau Levenstein<\/a>. Une comparaison de ces diff\u00e9rentes m\u00e9thodes fera l\u2019objet d\u2019un article sp\u00e9cifique.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a class=\"single-popup-image\" href=\"https:\/\/timi.eu\/wp-content\/uploads\/2020\/11\/fuzzy-matching-joint-anatella.gif\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-14551\" src=\"https:\/\/timi.eu\/wp-content\/uploads\/2020\/11\/fuzzy-matching-joint-anatella.gif\" alt=\"\" width=\"580\" height=\"335\"><\/a><\/figure>\n<\/div>\n<p>Autre avantage d\u2019Anatella c\u2019est la rapidit\u00e9. L\u2019enti\u00e8ret\u00e9 du process tourne en 14,84 secondes (y compris le fuzzy matching). La partie jointure (jusqu\u2019\u00e0 l\u2019\u00e9tape 1) tourne en 1,58 secondes l\u00e0 ou Tableau Prep Builder met 10 secondes.<\/p>\n<hr class=\"wp-block-separator\">\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-14500\" src=\"https:\/\/timi.eu\/wp-content\/uploads\/2020\/11\/conclusion-banner-470x116-1.jpg\" alt=\"\" width=\"470\" height=\"116\" srcset=\"https:\/\/timi.eu\/wp-content\/uploads\/2020\/11\/conclusion-banner-470x116-1.jpg 470w, https:\/\/timi.eu\/wp-content\/uploads\/2020\/11\/conclusion-banner-470x116-1-300x74.jpg 300w\" sizes=\"(max-width: 470px) 100vw, 470px\" \/><\/p>\n<h2>Conclusion<\/h2>\n<p>Pour conclure bri\u00e8vement, disons que la comparaison des 2 ETL a tourn\u00e9 \u00e0 l\u2019avantage d\u2019Anatella pour mon cas d\u2019\u00e9tude (jointure de 2 tables avec Fuzzy Matching). La fonctionnalit\u00e9 de regroupement phon\u00e9tique propos\u00e9e par Tableau Prep Builder n\u2019est h\u00e9las pas adapt\u00e9e \u00e0 la cr\u00e9ation d\u2019une jointure. Elle ne peut en effet s\u2019appliquer que sur une seule table et n\u00e9cessite ensuite des op\u00e9rations manuelles de filtrage, ce qui n\u2019est pas \u201cscalable\u201d.<\/p>\n<p style=\"margin-top: 30px;\">Source: <a href=\"https:\/\/www.intotheminds.com\/blog\/fuzzy-matching-tableau-prep-builder-anatella\/\" target=\"_blank\" rel=\"noopener\">IntoTheMind<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"Comment faire une jointure entre 2 bases de donn\u00e9es lorsque les entr\u00e9es dans le champ de r\u00e9f\u00e9rence ne sont pas exactement les m\u00eames.","protected":false},"author":1,"featured_media":13251,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[248,184],"tags":[309,320,318,307],"_links":{"self":[{"href":"https:\/\/timi.eu\/fr\/wp-json\/wp\/v2\/posts\/13249"}],"collection":[{"href":"https:\/\/timi.eu\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/timi.eu\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/timi.eu\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/timi.eu\/fr\/wp-json\/wp\/v2\/comments?post=13249"}],"version-history":[{"count":16,"href":"https:\/\/timi.eu\/fr\/wp-json\/wp\/v2\/posts\/13249\/revisions"}],"predecessor-version":[{"id":15433,"href":"https:\/\/timi.eu\/fr\/wp-json\/wp\/v2\/posts\/13249\/revisions\/15433"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/timi.eu\/fr\/wp-json\/wp\/v2\/media\/13251"}],"wp:attachment":[{"href":"https:\/\/timi.eu\/fr\/wp-json\/wp\/v2\/media?parent=13249"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/timi.eu\/fr\/wp-json\/wp\/v2\/categories?post=13249"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/timi.eu\/fr\/wp-json\/wp\/v2\/tags?post=13249"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}