	{"id":88903,"date":"2024-01-03T09:36:09","date_gmt":"2024-01-03T09:36:09","guid":{"rendered":"https:\/\/www.artefact.com\/?post_type=blog&#038;p=88903"},"modified":"2024-09-20T17:46:01","modified_gmt":"2024-09-20T16:46:01","slug":"how-we-handled-profile-id-reconciliation-using-treasure-data-unification-and-sql","status":"publish","type":"blog","link":"https:\/\/www.artefact.com\/zh\/blog\/how-we-handled-profile-id-reconciliation-using-treasure-data-unification-and-sql\/","title":{"rendered":"\u6211\u4eec\u5982\u4f55\u4f7f\u7528 Treasure Data Unification \u548c SQL \u5904\u7406\u914d\u7f6e\u6587\u4ef6 ID \u8c03\u8282"},"content":{"rendered":"<p><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling article-author\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-background-color:#ffffff;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_2 1_2 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:50%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:50%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-title title fusion-title-1 fusion-sep-none fusion-title-text fusion-title-size-two\" style=\"--awb-margin-bottom-small:8px;\"><h2 class=\"fusion-title-heading title-heading-left fusion-responsive-typography-calculated\" style=\"margin:0;--fontSize:50;line-height:1.2;\">Author<\/h2><\/div><img decoding=\"async\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27150%27%20height%3D%270%27%20viewBox%3D%270%200%20150%200%27%3E%3Crect%20width%3D%27150%27%20height%3D%270%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2023\/12\/Nurbakyt-Kulbatshayeva-300x300.jpg\" alt=\"Image\" class=\"lazyload artefact-elegant-image align-left article-author-image\" style=\"width: 150px; border-radius: 54% 46% 77% 23% \/ 74% 40% 60% 26%; overflow: hidden;\" width=\"150\" height=\"auto\" \/><div class=\"fusion-title title fusion-title-2 fusion-sep-none fusion-title-text fusion-title-size-three article-author-name-title\" style=\"--awb-text-color:var(--awb-color7);--awb-margin-bottom-small:8px;--awb-font-size:18px;\"><h3 class=\"fusion-title-heading title-heading-left fusion-responsive-typography-calculated\" style=\"font-family:&quot;Josefin Sans&quot;;font-style:normal;font-weight:600;margin:0;font-size:1em;--fontSize:18;line-height:1.5;\">Nurbakyt Kulbatshayeva<\/h3><\/div><div class=\"fusion-text fusion-text-1 article-author-description\" style=\"--awb-font-size:14px;--awb-line-height:1.6;--awb-letter-spacing:2px;--awb-text-transform:uppercase;--awb-text-color:var(--awb-color7);--awb-text-font-family:&quot;Roboto&quot;;--awb-text-font-style:normal;--awb-text-font-weight:400;\"><p>Senior Data Engineer at Artefact Germany<\/p>\n<\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-2 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--link_color: var(--awb-color6);--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-background-color:var(--awb-color1);--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-1 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-2 description\" style=\"--awb-text-color:var(--awb-color5);--awb-text-font-family:&quot;PT Serif&quot;;--awb-text-font-style:normal;--awb-text-font-weight:400;\"><p>In this article we explain the challenges of ID reconciliation and demonstrate our approach to create a unified profile ID in Customer Data Platform, specifically Treasure Data.<\/p>\n<p>Data was gathered from an offline Data Warehouse and online web site tracking.<\/p>\n<\/div><\/div><\/div><\/div><\/div><article class=\"fusion-fullwidth fullwidth-box fusion-builder-row-3 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--link_color: var(--awb-color6);--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-background-color:var(--awb-color1);--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-justify-content-center fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-2 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-title title fusion-title-3 fusion-sep-none fusion-title-text fusion-title-size-two\" style=\"--awb-text-color:var(--awb-color6);--awb-margin-bottom-small:8px;--awb-font-size:30px;\"><h2 class=\"fusion-title-heading title-heading-left fusion-responsive-typography-calculated\" style=\"font-family:&quot;PT Serif&quot;;font-style:normal;font-weight:700;margin:0;letter-spacing:1.6px;font-size:1em;--fontSize:30;line-height:1.47;\">Customer Data Platform<\/h2><\/div><div class=\"fusion-text fusion-text-3\" style=\"--awb-font-size:20px;--awb-line-height:1.6;--awb-letter-spacing:var(--awb-typography4-letter-spacing);--awb-text-transform:var(--awb-typography4-text-transform);--awb-text-color:var(--awb-color5);--awb-text-font-family:var(--awb-typography4-font-family);--awb-text-font-weight:var(--awb-typography4-font-weight);--awb-text-font-style:var(--awb-typography4-font-style);\"><p>Customer Data Platform (CDP) allows businesses to collect, manage, and analyze customer data from various sources in a unified and centralized manner. The <strong>goal of a CDP<\/strong> is to create a comprehensive and cohesive view of each customer by aggregating data from <strong>multiple touchpoints<\/strong>, such as websites, mobile apps, social media, email interactions, and more.<\/p>\n<\/div><div class=\"fusion-title title fusion-title-4 fusion-sep-none fusion-title-text fusion-title-size-two\" style=\"--awb-text-color:var(--awb-color6);--awb-margin-bottom-small:8px;--awb-font-size:30px;\"><h2 class=\"fusion-title-heading title-heading-left fusion-responsive-typography-calculated\" style=\"font-family:&quot;PT Serif&quot;;font-style:normal;font-weight:700;margin:0;letter-spacing:1.6px;font-size:1em;--fontSize:30;line-height:1.47;\">Treasure Data<\/h2><\/div><div class=\"fusion-image-element\" style=\"text-align:center;--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\" fusion-imageframe imageframe-none imageframe-1 hover-type-none\"><img decoding=\"async\" width=\"1021\" height=\"630\" title=\"image 1 article medium SQL TD\" src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2023\/12\/image-1-article-medium-SQL-TD.png\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2023\/12\/image-1-article-medium-SQL-TD.png\" alt class=\"lazyload img-responsive wp-image-90530\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%271021%27%20height%3D%27630%27%20viewBox%3D%270%200%201021%20630%27%3E%3Crect%20width%3D%271021%27%20height%3D%27630%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2023\/12\/image-1-article-medium-SQL-TD-200x123.png 200w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2023\/12\/image-1-article-medium-SQL-TD-400x247.png 400w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2023\/12\/image-1-article-medium-SQL-TD-600x370.png 600w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2023\/12\/image-1-article-medium-SQL-TD-800x494.png 800w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2023\/12\/image-1-article-medium-SQL-TD.png 1021w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 640px) 100vw, 1021px\" \/><\/span><\/div><div class=\"fusion-text fusion-text-4\" style=\"--awb-font-size:20px;--awb-line-height:1.6;--awb-letter-spacing:var(--awb-typography4-letter-spacing);--awb-text-transform:var(--awb-typography4-text-transform);--awb-text-color:var(--awb-color5);--awb-text-font-family:var(--awb-typography4-font-family);--awb-text-font-weight:var(--awb-typography4-font-weight);--awb-text-font-style:var(--awb-typography4-font-style);\"><p>Treasure Data is a cloud-based Customer Data Platform. Here are some common business use cases for Treasure Data:<\/p>\n<\/div><ul style=\"--awb-iconcolor:#000000;--awb-textcolor:#000000;--awb-line-height:27.2px;--awb-icon-width:27.2px;--awb-icon-height:27.2px;--awb-icon-margin:11.2px;--awb-content-margin:38.4px;\" class=\"fusion-checklist fusion-checklist-1 fusion-checklist-default type-icons paddingList dark-text\"><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">\n<p><strong>Customer Data Analysis.<\/strong> Treasure Data can be used to aggregate and analyze customer interaction data. This helps businesses create a unified view of customer behavior and preferences.<\/p>\n<\/div><\/li><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">\n<p><strong>Personalized Marketing.<\/strong> By leveraging the customer inisghts gathered through Treasure Data, businesses can create personalized marketing campaigns. This includes targeted messaging, personalized recommendations, and tailored offers based on individual customer profiles.<\/p>\n<\/div><\/li><\/ul><div class=\"fusion-title title fusion-title-5 fusion-sep-none fusion-title-text fusion-title-size-two\" style=\"--awb-text-color:var(--awb-color6);--awb-margin-bottom-small:8px;--awb-font-size:30px;\"><h2 class=\"fusion-title-heading title-heading-left fusion-responsive-typography-calculated\" style=\"font-family:&quot;PT Serif&quot;;font-style:normal;font-weight:700;margin:0;letter-spacing:1.6px;font-size:1em;--fontSize:30;line-height:1.47;\">ID reconciliation<\/h2><\/div><div class=\"fusion-text fusion-text-5\" style=\"--awb-font-size:20px;--awb-line-height:1.6;--awb-letter-spacing:var(--awb-typography4-letter-spacing);--awb-text-transform:var(--awb-typography4-text-transform);--awb-text-color:var(--awb-color5);--awb-text-font-family:var(--awb-typography4-font-family);--awb-text-font-weight:var(--awb-typography4-font-weight);--awb-text-font-style:var(--awb-typography4-font-style);\"><p>ID reconciliation is a process in which data related to a person is compared and matched across different systems or databases to ensure accuracy, consistency, and a unified view of that person.<\/p>\n<\/div><div class=\"fusion-text fusion-text-6\" style=\"--awb-font-size:20px;--awb-line-height:1.6;--awb-letter-spacing:var(--awb-typography4-letter-spacing);--awb-text-transform:var(--awb-typography4-text-transform);--awb-text-color:var(--awb-color5);--awb-text-font-family:var(--awb-typography4-font-family);--awb-text-font-weight:var(--awb-typography4-font-weight);--awb-text-font-style:var(--awb-typography4-font-style);\"><p>This is particularly important in scenarios where multiple systems or data sources store information about the same individuals, but the data may be incomplete or inconsistent.<\/p>\n<\/div><div class=\"fusion-title title fusion-title-6 fusion-sep-none fusion-title-text fusion-title-size-two\" style=\"--awb-text-color:var(--awb-color6);--awb-margin-bottom-small:8px;--awb-font-size:30px;\"><h2 class=\"fusion-title-heading title-heading-left fusion-responsive-typography-calculated\" style=\"font-family:&quot;PT Serif&quot;;font-style:normal;font-weight:700;margin:0;letter-spacing:1.6px;font-size:1em;--fontSize:30;line-height:1.47;\">The challenge of ID reconciliation<\/h2><\/div><div class=\"fusion-text fusion-text-7\" style=\"--awb-font-size:20px;--awb-line-height:1.6;--awb-letter-spacing:var(--awb-typography4-letter-spacing);--awb-text-transform:var(--awb-typography4-text-transform);--awb-text-color:var(--awb-color5);--awb-text-font-family:var(--awb-typography4-font-family);--awb-text-font-weight:var(--awb-typography4-font-weight);--awb-text-font-style:var(--awb-typography4-font-style);\"><p>ID reconciliation encounters numerous challenges, especially with extensive datasets and diverse information sources. These challenges include inconsistent data formats, quality issues leading to false matches, and the management of duplicate records resulting from errors or system changes. <strong>The key challenge is the lack of a unique ID<\/strong> representing the user accross the different sources of information, tables and databases.<\/p>\n<\/div><div class=\"fusion-text fusion-text-8\" style=\"--awb-font-size:20px;--awb-line-height:1.6;--awb-letter-spacing:var(--awb-typography4-letter-spacing);--awb-text-transform:var(--awb-typography4-text-transform);--awb-text-color:var(--awb-color5);--awb-text-font-family:var(--awb-typography4-font-family);--awb-text-font-weight:var(--awb-typography4-font-weight);--awb-text-font-style:var(--awb-typography4-font-style);\"><p>Organizations address these challenges by investing in advanced data tools like Treasure Data.<\/p>\n<\/div><div class=\"fusion-title title fusion-title-7 fusion-sep-none fusion-title-text fusion-title-size-two\" style=\"--awb-text-color:var(--awb-color6);--awb-margin-bottom-small:8px;--awb-font-size:30px;\"><h2 class=\"fusion-title-heading title-heading-left fusion-responsive-typography-calculated\" style=\"font-family:&quot;PT Serif&quot;;font-style:normal;font-weight:700;margin:0;letter-spacing:1.6px;font-size:1em;--fontSize:30;line-height:1.47;\">ID reconciliation implementation<\/h2><\/div><div class=\"fusion-text fusion-text-9\" style=\"--awb-font-size:20px;--awb-line-height:1.6;--awb-letter-spacing:var(--awb-typography4-letter-spacing);--awb-text-transform:var(--awb-typography4-text-transform);--awb-text-color:var(--awb-color5);--awb-text-font-family:var(--awb-typography4-font-family);--awb-text-font-weight:var(--awb-typography4-font-weight);--awb-text-font-style:var(--awb-typography4-font-style);\"><p>We implemented ID reconciliation for one of our clients using Treasure Data Unification functionality. In this article we want to share our approach and implementation logic.<\/p>\n<\/div><div class=\"fusion-text fusion-text-10\" style=\"--awb-font-size:20px;--awb-line-height:1.6;--awb-letter-spacing:var(--awb-typography4-letter-spacing);--awb-text-transform:var(--awb-typography4-text-transform);--awb-text-color:var(--awb-color5);--awb-text-font-family:var(--awb-typography4-font-family);--awb-text-font-weight:var(--awb-typography4-font-weight);--awb-text-font-style:var(--awb-typography4-font-style);\"><p><strong>Given conditions:<\/strong> in CDP databases there were available tables with information about the user journey on the website, as well as customer information from the CRM (Customer Relationship Management) database in data warehouse.<\/p>\n<\/div><div class=\"fusion-text fusion-text-11\" style=\"--awb-font-size:20px;--awb-line-height:1.6;--awb-letter-spacing:var(--awb-typography4-letter-spacing);--awb-text-transform:var(--awb-typography4-text-transform);--awb-text-color:var(--awb-color5);--awb-text-font-family:var(--awb-typography4-font-family);--awb-text-font-weight:var(--awb-typography4-font-weight);--awb-text-font-style:var(--awb-typography4-font-style);\"><p><strong>The goal<\/strong> is to have a unique profile identifier in each CDP table. This will allow us to create a Master Segment with a 360 degree view on the customer and its journey.<\/p>\n<\/div><div class=\"fusion-text fusion-text-12\" style=\"--awb-font-size:20px;--awb-line-height:1.6;--awb-letter-spacing:var(--awb-typography4-letter-spacing);--awb-text-transform:var(--awb-typography4-text-transform);--awb-text-color:var(--awb-color5);--awb-text-font-family:var(--awb-typography4-font-family);--awb-text-font-weight:var(--awb-typography4-font-weight);--awb-text-font-style:var(--awb-typography4-font-style);\"><p><strong>Online data available:<\/strong> views on website pages, form submissions on website, other website specific information, such as product page details that are stored in the separate table.<\/p>\n<\/div><div class=\"fusion-text fusion-text-13\" style=\"--awb-font-size:20px;--awb-line-height:1.6;--awb-letter-spacing:var(--awb-typography4-letter-spacing);--awb-text-transform:var(--awb-typography4-text-transform);--awb-text-color:var(--awb-color5);--awb-text-font-family:var(--awb-typography4-font-family);--awb-text-font-weight:var(--awb-typography4-font-weight);--awb-text-font-style:var(--awb-typography4-font-style);\"><p><strong>Offline data available:<\/strong> CRM data from the data warehouse.<\/p>\n<\/div><div class=\"fusion-text fusion-text-14\" style=\"--awb-font-size:20px;--awb-line-height:1.6;--awb-letter-spacing:var(--awb-typography4-letter-spacing);--awb-text-transform:var(--awb-typography4-text-transform);--awb-text-color:var(--awb-color5);--awb-text-font-family:var(--awb-typography4-font-family);--awb-text-font-weight:var(--awb-typography4-font-weight);--awb-text-font-style:var(--awb-typography4-font-style);\"><p><strong>Overview of steps to create a unique profile ID:<\/strong><\/p>\n<\/div><ul style=\"--awb-line-height:27.2px;--awb-icon-width:27.2px;--awb-icon-height:27.2px;--awb-icon-margin:11.2px;--awb-content-margin:38.4px;\" class=\"fusion-checklist fusion-checklist-2 fusion-checklist-default type-icons paddingList dark-text\"><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">\n<p>Unification of data from website tracking<\/p>\n<\/div><\/li><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">\n<p>Create master table that contains both online and offline data<\/p>\n<\/div><\/li><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">\n<p>Enrich other tables with profile ID<\/p>\n<\/div><\/li><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">\n<p>Create audience table that contains profile_ids from all tables to have a 360 degree view of the customer<\/p>\n<\/div><\/li><\/ul><div class=\"fusion-title title fusion-title-8 fusion-sep-none fusion-title-text fusion-title-size-two\" style=\"--awb-text-color:var(--awb-color6);--awb-margin-bottom-small:8px;--awb-font-size:30px;\"><h2 class=\"fusion-title-heading title-heading-left fusion-responsive-typography-calculated\" style=\"font-family:&quot;PT Serif&quot;;font-style:normal;font-weight:700;margin:0;letter-spacing:1.6px;font-size:1em;--fontSize:30;line-height:1.47;\">Web tables unification<\/h2><\/div><div class=\"fusion-text fusion-text-15\" style=\"--awb-font-size:20px;--awb-line-height:1.6;--awb-letter-spacing:var(--awb-typography4-letter-spacing);--awb-text-transform:var(--awb-typography4-text-transform);--awb-text-color:var(--awb-color5);--awb-text-font-family:var(--awb-typography4-font-family);--awb-text-font-weight:var(--awb-typography4-font-weight);--awb-text-font-style:var(--awb-typography4-font-style);\"><p>In order to unify web data we will leverage the capability of Treasure Data Unification functionality. It requires defining the source tables and the columns that need to be unified in YAML-formatted configuration. The step-by-step guide on how to implement Unification in Treasure Data can be found in <a href=\"https:\/\/docs.treasuredata.com\/display\/public\/PD\/Customer+ID+Unification\" target=\"_blank\" rel=\"noopener\">Treasure Data Documentation<\/a>.<\/p>\n<\/div><div class=\"fusion-text fusion-text-16\" style=\"--awb-font-size:20px;--awb-line-height:1.6;--awb-letter-spacing:var(--awb-typography4-letter-spacing);--awb-text-transform:var(--awb-typography4-text-transform);--awb-text-color:var(--awb-color5);--awb-text-font-family:var(--awb-typography4-font-family);--awb-text-font-weight:var(--awb-typography4-font-weight);--awb-text-font-style:var(--awb-typography4-font-style);\"><p>As a result it creates canonical ID in each table that is used in unification. The goal of canonical ID is to create an ID that represents each web user. It is useful when applied for web data, where it is challenging to identify user sessions and unify web data across different sessions.<\/p>\n<\/div><div class=\"fusion-text fusion-text-17\" style=\"--awb-font-size:20px;--awb-line-height:1.6;--awb-letter-spacing:var(--awb-typography4-letter-spacing);--awb-text-transform:var(--awb-typography4-text-transform);--awb-text-color:var(--awb-color5);--awb-text-font-family:var(--awb-typography4-font-family);--awb-text-font-weight:var(--awb-typography4-font-weight);--awb-text-font-style:var(--awb-typography4-font-style);\"><p>We defined that canonical ID is based on the following merge keys:<\/p>\n<\/div><div class=\"fusion-text fusion-text-18\"><div class=\"code\">canonical_ids:<br \/>\n&#8211; name: td_canonical_id<br \/>\nmerge_by_keys: [email, phone, td_client_id]\nsource_tables: [web_form_submitted, web_product_detail, web_page_visits]<\/div>\n<\/div><div class=\"fusion-text fusion-text-19\" style=\"--awb-font-size:20px;--awb-line-height:1.6;--awb-letter-spacing:var(--awb-typography4-letter-spacing);--awb-text-transform:var(--awb-typography4-text-transform);--awb-text-color:var(--awb-color5);--awb-text-font-family:var(--awb-typography4-font-family);--awb-text-font-weight:var(--awb-typography4-font-weight);--awb-text-font-style:var(--awb-typography4-font-style);\"><p>The order of merge keys defines the priority. The first merge key identifies all web data with the same <strong>email<\/strong> (emails provided in the web form submitted in the website) as from the same user.<\/p>\n<\/div><div class=\"fusion-text fusion-text-20\" style=\"--awb-font-size:20px;--awb-line-height:1.6;--awb-letter-spacing:var(--awb-typography4-letter-spacing);--awb-text-transform:var(--awb-typography4-text-transform);--awb-text-color:var(--awb-color5);--awb-text-font-family:var(--awb-typography4-font-family);--awb-text-font-weight:var(--awb-typography4-font-weight);--awb-text-font-style:var(--awb-typography4-font-style);\"><p>Second priority is <strong>phone number<\/strong> (submitted by visitors on the website): data with the same phone number is also identified as from the same user. Third priority is <strong>td_client_id<\/strong> \u2014 First-Party Cookie ID. The First-Party Cookie ID is persistent across the same domains. Different domains will have different td_client_id. Td_client_id changes if the website visitor clears the browser cookies.<\/p>\n<\/div><div class=\"fusion-text fusion-text-21\" style=\"--awb-font-size:20px;--awb-line-height:1.6;--awb-letter-spacing:var(--awb-typography4-letter-spacing);--awb-text-transform:var(--awb-typography4-text-transform);--awb-text-color:var(--awb-color5);--awb-text-font-family:var(--awb-typography4-font-family);--awb-text-font-weight:var(--awb-typography4-font-weight);--awb-text-font-style:var(--awb-typography4-font-style);\"><p>The result of the unification is shown in the examples below.<\/p>\n<\/div><div class=\"fusion-text fusion-text-22\" style=\"--awb-font-size:20px;--awb-line-height:1.6;--awb-letter-spacing:var(--awb-typography4-letter-spacing);--awb-text-transform:var(--awb-typography4-text-transform);--awb-text-color:var(--awb-color5);--awb-text-font-family:var(--awb-typography4-font-family);--awb-text-font-weight:var(--awb-typography4-font-weight);--awb-text-font-style:var(--awb-typography4-font-style);\"><p><strong>Example 1:<\/strong> Treasure Data defined those 3 inputs as the same user ID (td_canonical_id), since they have the same <strong>email<\/strong>. Different phone numbers don\u2019t affect the result because we defined that email has higher priority than phone number:<\/p>\n<\/div><div class=\"fusion-image-element\" style=\"text-align:center;--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\" fusion-imageframe imageframe-none imageframe-2 hover-type-none\"><img decoding=\"async\" width=\"1273\" height=\"178\" title=\"image 2 article medium SQL TD\" src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/01\/image-2-article-medium-SQL-TD.png\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/01\/image-2-article-medium-SQL-TD.png\" alt class=\"lazyload img-responsive wp-image-90532\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%271273%27%20height%3D%27178%27%20viewBox%3D%270%200%201273%20178%27%3E%3Crect%20width%3D%271273%27%20height%3D%27178%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/01\/image-2-article-medium-SQL-TD-200x28.png 200w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/01\/image-2-article-medium-SQL-TD-400x56.png 400w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/01\/image-2-article-medium-SQL-TD-600x84.png 600w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/01\/image-2-article-medium-SQL-TD-800x112.png 800w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/01\/image-2-article-medium-SQL-TD-1200x168.png 1200w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/01\/image-2-article-medium-SQL-TD.png 1273w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 640px) 100vw, 1273px\" \/><\/span><\/div><div class=\"fusion-text fusion-text-23\" style=\"--awb-font-size:20px;--awb-line-height:1.6;--awb-letter-spacing:var(--awb-typography4-letter-spacing);--awb-text-transform:var(--awb-typography4-text-transform);--awb-text-color:var(--awb-color5);--awb-text-font-family:var(--awb-typography4-font-family);--awb-text-font-weight:var(--awb-typography4-font-weight);--awb-text-font-style:var(--awb-typography4-font-style);\"><p><strong>Example 2:<\/strong> when email is not provided, same <strong>phone number<\/strong> represents same user ID (td_canonical_id):<\/p>\n<\/div><div class=\"fusion-image-element\" style=\"text-align:center;--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\" fusion-imageframe imageframe-none imageframe-3 hover-type-none\"><img decoding=\"async\" width=\"1254\" height=\"172\" title=\"image 3 article medium SQL TD\" src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/01\/image-3-article-medium-SQL-TD.png\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/01\/image-3-article-medium-SQL-TD.png\" alt class=\"lazyload img-responsive wp-image-90533\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%271254%27%20height%3D%27172%27%20viewBox%3D%270%200%201254%20172%27%3E%3Crect%20width%3D%271254%27%20height%3D%27172%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/01\/image-3-article-medium-SQL-TD-200x27.png 200w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/01\/image-3-article-medium-SQL-TD-400x55.png 400w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/01\/image-3-article-medium-SQL-TD-600x82.png 600w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/01\/image-3-article-medium-SQL-TD-800x110.png 800w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/01\/image-3-article-medium-SQL-TD-1200x165.png 1200w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/01\/image-3-article-medium-SQL-TD.png 1254w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 640px) 100vw, 1254px\" \/><\/span><\/div><div class=\"fusion-text fusion-text-24\" style=\"--awb-font-size:20px;--awb-line-height:1.6;--awb-letter-spacing:var(--awb-typography4-letter-spacing);--awb-text-transform:var(--awb-typography4-text-transform);--awb-text-color:var(--awb-color5);--awb-text-font-family:var(--awb-typography4-font-family);--awb-text-font-weight:var(--awb-typography4-font-weight);--awb-text-font-style:var(--awb-typography4-font-style);\"><p><strong>Example 3:<\/strong> when higher priority matching fields are not defined, then first party cookie ID is used. Same <strong>td_client_id<\/strong> = same user ID (td_canonical_id). Such unidentified visitors without any Personal Identifiable Information (PII) are common in web site visitors tables. Td_client_id is not fully reliable since it can change after cookie clearing, but in the absence of PII data, it is the best shot we have.<\/p>\n<\/div><div class=\"fusion-image-element\" style=\"text-align:center;--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\" fusion-imageframe imageframe-none imageframe-4 hover-type-none\"><img decoding=\"async\" width=\"1258\" height=\"217\" title=\"image 4 article medium SQL TD\" src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/01\/image-4-article-medium-SQL-TD.png\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/01\/image-4-article-medium-SQL-TD.png\" alt class=\"lazyload img-responsive wp-image-90535\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%271258%27%20height%3D%27217%27%20viewBox%3D%270%200%201258%20217%27%3E%3Crect%20width%3D%271258%27%20height%3D%27217%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/01\/image-4-article-medium-SQL-TD-200x34.png 200w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/01\/image-4-article-medium-SQL-TD-400x69.png 400w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/01\/image-4-article-medium-SQL-TD-600x103.png 600w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/01\/image-4-article-medium-SQL-TD-800x138.png 800w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/01\/image-4-article-medium-SQL-TD-1200x207.png 1200w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/01\/image-4-article-medium-SQL-TD.png 1258w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 640px) 100vw, 1258px\" \/><\/span><\/div><div class=\"fusion-text fusion-text-25\" style=\"--awb-font-size:20px;--awb-line-height:1.6;--awb-letter-spacing:var(--awb-typography4-letter-spacing);--awb-text-transform:var(--awb-typography4-text-transform);--awb-text-color:var(--awb-color5);--awb-text-font-family:var(--awb-typography4-font-family);--awb-text-font-weight:var(--awb-typography4-font-weight);--awb-text-font-style:var(--awb-typography4-font-style);\"><p>If we assume that only form submission on a website contains email and form, then what happens to the tables, where no PII is available, for example <em>web_page_visits<\/em>? Let\u2019s assume website visits have only First-Party Cookie ID \u2014 td_client_id. In the first example <em>web_page_visits<\/em> table with those td_client_id \u2018asd-123-qwe-456\u2019, \u2018zxc-234-ert-345\u2019 and \u2018567-tyu-ghj-234\u2019 will have the td_canonical_id = \u2018abcd1234\u2019. Since <em>web_form_submitted<\/em> table has already defined that those 3 cookie ids belong to the same user, <em>web_page_visits<\/em> will rely on this information in the absence of email or phone.<\/p>\n<\/div><div class=\"fusion-text fusion-text-26\" style=\"--awb-font-size:20px;--awb-line-height:1.6;--awb-letter-spacing:var(--awb-typography4-letter-spacing);--awb-text-transform:var(--awb-typography4-text-transform);--awb-text-color:var(--awb-color5);--awb-text-font-family:var(--awb-typography4-font-family);--awb-text-font-weight:var(--awb-typography4-font-weight);--awb-text-font-style:var(--awb-typography4-font-style);\"><p>Same logic applies to other web data tables that do not have PII data.<\/p>\n<\/div><div class=\"fusion-title title fusion-title-9 fusion-sep-none fusion-title-text fusion-title-size-two\" style=\"--awb-text-color:var(--awb-color6);--awb-margin-bottom-small:8px;--awb-font-size:30px;\"><h2 class=\"fusion-title-heading title-heading-left fusion-responsive-typography-calculated\" style=\"font-family:&quot;PT Serif&quot;;font-style:normal;font-weight:700;margin:0;letter-spacing:1.6px;font-size:1em;--fontSize:30;line-height:1.47;\">Create master table that joins online and offline data<\/h2><\/div><div class=\"fusion-text fusion-text-27\" style=\"--awb-font-size:20px;--awb-line-height:1.6;--awb-letter-spacing:var(--awb-typography4-letter-spacing);--awb-text-transform:var(--awb-typography4-text-transform);--awb-text-color:var(--awb-color5);--awb-text-font-family:var(--awb-typography4-font-family);--awb-text-font-weight:var(--awb-typography4-font-weight);--awb-text-font-style:var(--awb-typography4-font-style);\"><p>Now that web data is unified across each other, it is time to unify online (web) and offline data. By offline data we mean CRM data that contains PII. From online data we will take usage of PII data (email, phone) in the web_form_submitted table.<\/p>\n<\/div><div class=\"fusion-text fusion-text-28\" style=\"--awb-font-size:20px;--awb-line-height:1.6;--awb-letter-spacing:var(--awb-typography4-letter-spacing);--awb-text-transform:var(--awb-typography4-text-transform);--awb-text-color:var(--awb-color5);--awb-text-font-family:var(--awb-typography4-font-family);--awb-text-font-weight:var(--awb-typography4-font-weight);--awb-text-font-style:var(--awb-typography4-font-style);\"><p>In an ideal case data engineers can add a CRM table into a unification yml file, but we had a case when client\u2019s condition on unifying online and offline data was more complex than automatic unification can provide. Thus we rely here on the power of SQL.<\/p>\n<\/div><div class=\"fusion-text fusion-text-29\" style=\"--awb-font-size:20px;--awb-line-height:1.6;--awb-letter-spacing:var(--awb-typography4-letter-spacing);--awb-text-transform:var(--awb-typography4-text-transform);--awb-text-color:var(--awb-color5);--awb-text-font-family:var(--awb-typography4-font-family);--awb-text-font-weight:var(--awb-typography4-font-weight);--awb-text-font-style:var(--awb-typography4-font-style);\"><p><strong>We performed FULL OUTER JOIN of web tables with form submission data and CRM tables ON email or phone.<\/strong> First and last names are not unique and therefore not reliable.<\/p>\n<\/div><div class=\"fusion-text fusion-text-30\"><div class=\"code\">CREATE master_table AS<br \/>\nSELECT t.crm_client_id, d.td_canonical_id<br \/>\nFROM crm_user_table t<br \/>\nFULL OUTER JOIN web_form_submitted d<br \/>\nON (t.email = d.email<br \/>\nOR t.phone = d.phone)<\/div>\n<\/div><div class=\"fusion-text fusion-text-31\"><p>It is also advised to define a logic for matching score, in case several forms are submitted with the same email or phone number. For example, the web forms whose first and last names are matched with CRM customer\u2019s names have higher priority than those who don\u2019t.<\/p>\n<\/div><div class=\"fusion-title title fusion-title-10 fusion-sep-none fusion-title-text fusion-title-size-two\" style=\"--awb-text-color:var(--awb-color6);--awb-margin-bottom-small:8px;--awb-font-size:30px;\"><h2 class=\"fusion-title-heading title-heading-left fusion-responsive-typography-calculated\" style=\"font-family:&quot;PT Serif&quot;;font-style:normal;font-weight:700;margin:0;letter-spacing:1.6px;font-size:1em;--fontSize:30;line-height:1.47;\">Enrich other tables with profile_id<\/h2><\/div><div class=\"fusion-text fusion-text-32\"><p>In this section we define the final profile_id that is unique for each user, identified and unidentified.<\/p>\n<\/div><ul style=\"--awb-line-height:27.2px;--awb-icon-width:27.2px;--awb-icon-height:27.2px;--awb-icon-margin:11.2px;--awb-content-margin:38.4px;\" class=\"fusion-checklist fusion-checklist-3 fusion-checklist-default type-icons paddingList dark-text\"><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">\n<p>Web tables profile_id is the <strong>td_canonical_id<\/strong>, that has 1-to-many relation, as it is shown in the example tables &#8211; several web data rows can be related to the same profile.<\/p>\n<\/div><\/li><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">\n<p>When there is a match between web form data and CRM customer data, web table&#8217;s profile_id is the <strong>crm_client_id<\/strong>.<\/p>\n<\/div><\/li><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">\n<p>For online data with no match with offline data, profile_id stays <strong>td_canonical_id<\/strong>.<\/p>\n<\/div><\/li><\/ul><div class=\"fusion-text fusion-text-33\"><p>In summary, <strong>profile_id = COALESCE(crm_client_id, td_canonical_id)<\/strong>.<\/p>\n<\/div><div class=\"fusion-text fusion-text-34\"><p>For web tables <strong>crm_client_id<\/strong> are provided per web key (<strong>td_canonical_id<\/strong>) from the master table created in step 2. Meaning, if users submitted a form on a website, and they provided email or phone, we can identify them in the CRM database as known customers (in case they are already a customer of the company). As a result, we can say that those web page visits with the same cookie ID as submitted web form also belong to the identified CRM customer.<\/p>\n<\/div><div class=\"fusion-text fusion-text-35\"><div class=\"code\">Select COALESCE(d.crm_client_id, t.td_canonical_id) as profile_id, t.*<br \/>\nfrom web_page_visits t<br \/>\nleft join master_table d<br \/>\non t.td_canonical_id = d.td_canonical_id<br \/>\nand d.rn_web_key = 1<\/div>\n<\/div><div class=\"fusion-text fusion-text-36\"><p>rn_web_key is defined as follows:<\/p>\n<\/div><div class=\"fusion-text fusion-text-37\"><div class=\"code\">row_number() over (<br \/>\npartition by td_canonical_id<br \/>\norder by match_score,<br \/>\ntime desc) as rn_web_key<\/div>\n<\/div><div class=\"fusion-text fusion-text-38\"><p>Its role is to avoid causing duplicates in the destination table as all web tables have many-to-many relationships. Moreover, it shares crm_client_id with the profile that has the best match between offline and online data. For each td_canonical_id it takes the one with the highest match score, and in case match score is the same, then the newest entry.<\/p>\n<\/div><div class=\"fusion-title title fusion-title-11 fusion-sep-none fusion-title-text fusion-title-size-two\" style=\"--awb-text-color:var(--awb-color6);--awb-margin-bottom-small:8px;--awb-font-size:30px;\"><h2 class=\"fusion-title-heading title-heading-left fusion-responsive-typography-calculated\" style=\"font-family:&quot;PT Serif&quot;;font-style:normal;font-weight:700;margin:0;letter-spacing:1.6px;font-size:1em;--fontSize:30;line-height:1.47;\">Create audience table that contains profile from all tables<\/h2><\/div><div class=\"fusion-text fusion-text-39\"><p>Now that all tables have a profile id, it is time to create a Master Segment. <strong>Master Segment (Parent Segment)<\/strong> is a feature of Treasure Data that unifies all information regarding the user, including user interaction with the website and product. It allows Business Analysts, Marketers and other users to see in Audience Studio all identified and unidentified profiles and create various segments with them without writing any SQL queries.<\/p>\n<\/div><div class=\"fusion-text fusion-text-40\"><p>To create a Master Segment we need to have an audience table that will be used to join all attribute and behavior tables. The goal of the audience table is to have all profiles \u2014 online and offline. And it will contain only profile_id, as it should be enough to join it with all other tables (crm_user_table, web_page_visits, web_form_submitted, web_product_detail).<\/p>\n<\/div><div class=\"fusion-text fusion-text-41\"><p>The implementation is as simple as union of all tables that contain profile_id, and deduplication of all profile_ids.<\/p>\n<\/div><\/div><\/div><\/div><\/article><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-4 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-margin-top:40px;--awb-margin-bottom:40px;--awb-background-color:var(--awb-color1);--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-center fusion-flex-justify-content-center fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-3 fusion_builder_column_1_1 1_1 fusion-flex-column fusion-flex-align-self-center\" style=\"--awb-padding-top:40px;--awb-padding-right:40px;--awb-padding-bottom:40px;--awb-padding-left:40px;--awb-overflow:hidden;--awb-bg-position:left center;--awb-bg-size:cover;--awb-border-color:rgba(10,17,40,0.1);--awb-border-style:solid;--awb-border-radius:4px 4px 4px 4px;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper lazyload fusion-column-has-shadow fusion-flex-justify-content-center fusion-content-layout-column fusion-column-has-bg-image\" data-bg-url=\"https:\/\/artefact.com\/\/wp-content\/uploads\/2021\/03\/background.jpg\" data-bg=\"https:\/\/artefact.com\/\/wp-content\/uploads\/2021\/03\/background.jpg\"><div class=\"fusion-image-element\" style=\"text-align:center;--awb-margin-right:20px;--awb-margin-left:20px;--awb-max-width:150px;--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\" fusion-imageframe imageframe-none imageframe-5 hover-type-none\"><img decoding=\"async\" width=\"72\" height=\"41\" title=\"medium\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%2772%27%20height%3D%2741%27%20viewBox%3D%270%200%2072%2041%27%3E%3Crect%20width%3D%2772%27%20height%3D%2741%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/artefact.com\/\/wp-content\/uploads\/2021\/03\/medium.png\" alt class=\"lazyload img-responsive wp-image-60927\"\/><\/span><\/div><div class=\"fusion-title title fusion-title-12 fusion-sep-none fusion-title-center fusion-title-text fusion-title-size-three\" style=\"--awb-margin-top:20px;--awb-margin-bottom:0px;--awb-margin-bottom-small:8px;\"><h3 class=\"fusion-title-heading title-heading-center fusion-responsive-typography-calculated\" style=\"margin:0;--fontSize:20;line-height:1.2;\">Medium Blog by Artefact.<\/h3><\/div><div class=\"fusion-text fusion-text-42\" style=\"--awb-content-alignment:center;\"><p>This article was initially published on Medium.com.<br \/>\nFollow us on our Medium Blog !<\/p>\n<\/div><div style=\"text-align:center;\"><a class=\"fusion-button button-flat button-medium button-default fusion-button-default button-1 fusion-button-default-span fusion-button-default-type\" style=\"--button_text_transform:var(--awb-custom_typography_2-text-transform);--button_typography-letter-spacing:var(--awb-custom_typography_2-letter-spacing);--button_typography-font-family:var(--awb-custom_typography_2-font-family);--button_typography-font-weight:var(--awb-custom_typography_2-font-weight);--button_typography-font-style:var(--awb-custom_typography_2-font-style);\" target=\"_blank\" rel=\"noopener noreferrer\" data-hover=\"text_slide_down\" href=\"https:\/\/medium.com\/artefact-engineering-and-data-science\/how-we-handled-profile-id-reconciliation-using-treasure-data-unification-and-sql-1eafcd5319bd\"><div class=\"awb-button-text-transition  awb-button__hover-content--centered\"><span class=\"fusion-button-text awb-button__text awb-button__text--default\">Read Our Article<\/span><span class=\"fusion-button-text awb-button__text awb-button__text--default\">Read Our Article<\/span><\/div><\/a><\/div><\/div><\/div><\/div><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5728\u8fd9\u7bc7\u6587\u7ae0\u4e2d\uff0c\u6211\u4eec\u89e3\u91ca\u4e86 ID \u534f\u8c03\u6240\u9762\u4e34\u7684\u6311\u6218\uff0c\u5e76\u5c55\u793a\u4e86\u6211\u4eec\u5728\u5ba2\u6237 Data \u5e73\u53f0\uff08\u7279\u522b\u662f Treasure Data\uff09\u4e2d\u521b\u5efa\u7edf\u4e00\u914d\u7f6e\u6587\u4ef6 ID \u7684\u65b9\u6cd5\u3002Data \u662f\u901a\u8fc7\u79bb\u7ebf Data \u4ed3\u5e93\u548c\u5728\u7ebf\u7f51\u7ad9\u8ddf\u8e2a\u6536\u96c6\u7684\u3002.<\/p>","protected":false},"featured_media":94637,"parent":0,"template":"","meta":{"_acf_changed":false,"ep_exclude_from_search":false},"blog-category":[2997,21939],"blog-language":[2991],"class_list":["post-88903","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog-category-data-marketing","blog-category-medium","blog-language-en"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.artefact.com\/zh\/wp-json\/wp\/v2\/blog\/88903","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.artefact.com\/zh\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.artefact.com\/zh\/wp-json\/wp\/v2\/types\/blog"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.artefact.com\/zh\/wp-json\/wp\/v2\/media\/94637"}],"wp:attachment":[{"href":"https:\/\/www.artefact.com\/zh\/wp-json\/wp\/v2\/media?parent=88903"}],"wp:term":[{"taxonomy":"blog-category","embeddable":true,"href":"https:\/\/www.artefact.com\/zh\/wp-json\/wp\/v2\/blog-category?post=88903"},{"taxonomy":"blog-language","embeddable":true,"href":"https:\/\/www.artefact.com\/zh\/wp-json\/wp\/v2\/blog-language?post=88903"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}