{"id":2839,"date":"2023-07-07T21:14:45","date_gmt":"2023-07-08T02:14:45","guid":{"rendered":"https:\/\/www.dpriver.com\/blog\/?p=2839"},"modified":"2023-07-21T03:48:03","modified_gmt":"2023-07-21T08:48:03","slug":"sqlflow-datahub","status":"publish","type":"post","link":"https:\/\/www.dpriver.com\/blog\/2023\/07\/sqlflow-datahub\/","title":{"rendered":"Integrate SQLFlow into Datahub"},"content":{"rendered":"\n<p><a href=\"https:\/\/datahubproject.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">Datahub<\/a> is an open-source metadata platform for the modern data stack. We have integrated the SQLFlow into Datahub so that the SQLFlow data lineage is enabled in the Datahub UI. This integration is for Datahub <strong>v0.10.4<\/strong>. You will need to replace the <code>datahub-web-react-datahub-web-react-assets.jar<\/code> in datahub with the SQLFlow adapted jar file. The file to replace may change with different Datahub versions and please check this blog regularly to get the corresponding file name for the latest Datahub.<\/p>\n\n\n\n<p>Contact <strong>james<em>@<\/em>gudusoft.com<\/strong> to get the corresponding SQLFlow adapted jar file.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1.Install SQLFlow<\/h2>\n\n\n\n<p><strong>SQLFlow Regular version<\/strong> is required for the Datahub. You can either directly install the regular version of  SQLFlow on your server or you can launch one container with the docker image. <\/p>\n\n\n\n<h4 class=\"wp-block-heading\">a. Install Directly <\/h4>\n\n\n\n<p>Check our <a href=\"https:\/\/docs.gudusoft.com\/1.-introduction\/installation\" target=\"_blank\" rel=\"noreferrer noopener\">product documentation<\/a> for the direct Install<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">b. Using Docker Image<\/h4>\n\n\n\n<p>Pull the image:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker pull gudusqlflow\/sqlflow-regular-trial:5.7.5<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"907\" height=\"208\" src=\"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-23.png\" alt=\"\" class=\"wp-image-2915\" srcset=\"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-23.png 907w, https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-23-300x69.png 300w, https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-23-768x176.png 768w\" sizes=\"(max-width: 907px) 100vw, 907px\" \/><\/figure>\n\n\n\n<p>Launch the image with<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run -itd -p 7090:80 --name mysqlflow gudusqlflow\/sqlflow-regular-trial:5.7.4<\/code><\/pre>\n\n\n\n<p>The <code>7090<\/code> in the above command will be the port to visit SQLFlow UI. You can change the port if 7090 is occupied in your machine.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"75\" src=\"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-24-1024x75.png\" alt=\"\" class=\"wp-image-2917\" srcset=\"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-24-1024x75.png 1024w, https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-24-300x22.png 300w, https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-24-768x56.png 768w, https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-24.png 1280w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>The <code>mysqlflow<\/code> is the name of the container. For more information of the container creation, you can check the <a href=\"https:\/\/docs.docker.com\/engine\/reference\/commandline\/container\/\" target=\"_blank\" rel=\"noreferrer noopener\">official Docker doc<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Update the API URL<\/h2>\n\n\n\n<p>The first thing to do is to update the <code>GuduSqlFlowUrl<\/code> in the <code>config.js<\/code> of <code>datahub-web-react-datahub-web-react-assets.jar<\/code>:<\/p>\n\n\n\n<p>Open the <code>datahub-web-react-datahub-web-react-assets.jar<\/code> (please do not extract the jar file and re-compress it, it may cause encoding issues)<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"305\" height=\"91\" src=\"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247.png\" alt=\"\" class=\"wp-image-2840\" srcset=\"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247.png 305w, https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-300x90.png 300w\" sizes=\"(max-width: 305px) 100vw, 305px\" \/><\/figure>\n\n\n\n<p>Find the<code> public\/sqlflow\/config.js <\/code>and copy the file.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"913\" height=\"660\" src=\"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u5fae\u4fe1\u622a\u56fe_20230715101733.png\" alt=\"\" class=\"wp-image-2892\" srcset=\"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u5fae\u4fe1\u622a\u56fe_20230715101733.png 913w, https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u5fae\u4fe1\u622a\u56fe_20230715101733-300x217.png 300w, https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u5fae\u4fe1\u622a\u56fe_20230715101733-768x555.png 768w\" sizes=\"(max-width: 913px) 100vw, 913px\" \/><\/figure>\n\n\n\n<p> Create a new <code>config.js<\/code>, update the <code>GuduSqlFlowUrl<\/code> to your actual SQLFlow API URL.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"557\" height=\"82\" src=\"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-2.png\" alt=\"\" class=\"wp-image-2842\" srcset=\"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-2.png 557w, https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-2-300x44.png 300w\" sizes=\"(max-width: 557px) 100vw, 557px\" \/><\/figure>\n\n\n\n<p>Replace the old <code>public\/config.js<\/code> in <code>datahub-web-react-datahub-web-react-assets.jar<\/code> with your new <code>config.js<\/code>.<\/p>\n\n\n\n<p><strong>Hint<\/strong>: Do not use localhost as the GuduSqlFlowUrl because the localhost <strong>IS NOT<\/strong> the server address when browser loads web<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Replace the jar file<\/h2>\n\n\n\n<p>a. Upload the updated <code>datahub-web-react-datahub-web-react-assets.jar<\/code> to your server.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"503\" height=\"172\" src=\"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-3.png\" alt=\"\" class=\"wp-image-2843\" srcset=\"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-3.png 503w, https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-3-300x103.png 300w\" sizes=\"(max-width: 503px) 100vw, 503px\" \/><\/figure>\n\n\n\n<p>b. Stop datahub-frontend-react container<\/p>\n\n\n\n<p> Find the container ID:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker ps -a<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"601\" height=\"222\" src=\"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-4.png\" alt=\"\" class=\"wp-image-2844\" srcset=\"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-4.png 601w, https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-4-300x111.png 300w\" sizes=\"(max-width: 601px) 100vw, 601px\" \/><\/figure>\n\n\n\n<p>Stop the container:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker stop &lt;container ID&gt;<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"437\" height=\"69\" src=\"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-5.png\" alt=\"\" class=\"wp-image-2845\" srcset=\"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-5.png 437w, https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-5-300x47.png 300w\" sizes=\"(max-width: 437px) 100vw, 437px\" \/><\/figure>\n\n\n\n<p>c. Backup the old <code>datahub-web-react-datahub-web-react-assets.jar<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker cp datahub-frontend-react:\/datahub-frontend\/lib\/datahub-web-react-datahub-web-react-assets.jar &lt;Backup Address&gt;<\/code><\/pre>\n\n\n\n<p>d. Replace the jar file in the datahub-frontend-react<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker cp &lt;Your_Updated_datahub-web-react-datahub-web-react-assets.jar&gt; datahub-frontend-react:\/datahub-frontend\/lib\/<\/code><\/pre>\n\n\n\n<p>Start the datahub-frontend-react:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker start &lt;container ID&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">4. Check your Datahub<\/h2>\n\n\n\n<p>Open your DataHub UI again and you will find SQLFlow features are enabled for the <strong>table level<\/strong> and <strong>field level<\/strong> data.<\/p>\n\n\n\n<p>a. You can get the upstream and the downstream lineage in the SQLFlow tab of table level view<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"732\" src=\"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-6.png\" alt=\"\" class=\"wp-image-2846\" srcset=\"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-6.png 1024w, https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-6-300x214.png 300w, https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-6-768x549.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>b. Click the Schema tab, you will have a column of Gudu SQLFlow which has been added to the field information list. Click the Lineage corresponding to a field to view the data lineage of the field.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"576\" src=\"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-7.png\" alt=\"\" class=\"wp-image-2847\" srcset=\"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-7.png 1024w, https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-7-300x169.png 300w, https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-7-768x432.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1025\" height=\"736\" src=\"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-8.png\" alt=\"\" class=\"wp-image-2848\" srcset=\"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-8.png 1025w, https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-8-300x215.png 300w, https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2023\/07\/\u56fe\u7247-8-768x551.png 768w\" sizes=\"(max-width: 1025px) 100vw, 1025px\" \/><\/figure>\n\n\n\n<p>Checking <a href=\"https:\/\/www.dpriver.com\/blog\/2023\/07\/ingest-postgresql-metadata-on-datahub\/\" target=\"_blank\" rel=\"noreferrer noopener\">this document<\/a> to get more details on how to create a Datahub task with the SQLFlow plugin.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Datahub is an open-source metadata platform for the modern data stack. We have integrated the SQLFlow into Datahub so that the SQLFlow data lineage is enabled in the Datahub UI. This integration is for Datahub v0.10.4. You will need to replace the datahub-web-react-datahub-web-react-assets.jar in datahub with the SQLFlow adapted jar file. The file to replace may change with different Datahub versions and please check this blog regularly to get the corresponding file name for the latest Datahub. Contact james@gudusoft.com to get the corresponding SQLFlow adapted jar file. 1.Install SQLFlow SQLFlow Regular version is required for the Datahub. You can either\u2026<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[66,1],"tags":[],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":5}},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Integrate SQLFlow into Datahub<\/title>\n<meta name=\"description\" content=\"Integrate SQLFlow into Datahub\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dpriver.com\/blog\/2023\/07\/sqlflow-datahub\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Integrate SQLFlow into Datahub\" \/>\n<meta property=\"og:description\" content=\"Integrate SQLFlow into Datahub\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dpriver.com\/blog\/2023\/07\/sqlflow-datahub\/\" \/>\n<meta property=\"og:site_name\" content=\"SQL and Data Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-08T02:14:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-21T08:48:03+00:00\" \/>\n<meta name=\"author\" content=\"leo gu\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"leo gu\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.dpriver.com\/blog\/#organization\",\"name\":\"SQL and Data Blog\",\"url\":\"https:\/\/www.dpriver.com\/blog\/\",\"sameAs\":[],\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dpriver.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2022\/07\/sqlpp-character.png\",\"contentUrl\":\"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2022\/07\/sqlpp-character.png\",\"width\":251,\"height\":72,\"caption\":\"SQL and Data Blog\"},\"image\":{\"@id\":\"https:\/\/www.dpriver.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dpriver.com\/blog\/#website\",\"url\":\"https:\/\/www.dpriver.com\/blog\/\",\"name\":\"SQL and Data Blog\",\"description\":\"SQL related blog for database professional\",\"publisher\":{\"@id\":\"https:\/\/www.dpriver.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dpriver.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dpriver.com\/blog\/2023\/07\/sqlflow-datahub\/\",\"url\":\"https:\/\/www.dpriver.com\/blog\/2023\/07\/sqlflow-datahub\/\",\"name\":\"Integrate SQLFlow into Datahub\",\"isPartOf\":{\"@id\":\"https:\/\/www.dpriver.com\/blog\/#website\"},\"datePublished\":\"2023-07-08T02:14:45+00:00\",\"dateModified\":\"2023-07-21T08:48:03+00:00\",\"description\":\"Integrate SQLFlow into Datahub\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dpriver.com\/blog\/2023\/07\/sqlflow-datahub\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dpriver.com\/blog\/2023\/07\/sqlflow-datahub\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dpriver.com\/blog\/2023\/07\/sqlflow-datahub\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.dpriver.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Integrate SQLFlow into Datahub\"}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dpriver.com\/blog\/2023\/07\/sqlflow-datahub\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dpriver.com\/blog\/2023\/07\/sqlflow-datahub\/\"},\"author\":{\"name\":\"leo gu\",\"@id\":\"https:\/\/www.dpriver.com\/blog\/#\/schema\/person\/9e80d249b6da4e572bd8590b0789bc14\"},\"headline\":\"Integrate SQLFlow into Datahub\",\"datePublished\":\"2023-07-08T02:14:45+00:00\",\"dateModified\":\"2023-07-21T08:48:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dpriver.com\/blog\/2023\/07\/sqlflow-datahub\/\"},\"wordCount\":402,\"publisher\":{\"@id\":\"https:\/\/www.dpriver.com\/blog\/#organization\"},\"articleSection\":[\"Data Governance\"],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dpriver.com\/blog\/#\/schema\/person\/9e80d249b6da4e572bd8590b0789bc14\",\"name\":\"leo gu\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dpriver.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/24976e2e4ca7dd476652bb26bd09392b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/24976e2e4ca7dd476652bb26bd09392b?s=96&d=mm&r=g\",\"caption\":\"leo gu\"},\"url\":\"https:\/\/www.dpriver.com\/blog\/author\/guyuanhao\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Integrate SQLFlow into Datahub","description":"Integrate SQLFlow into Datahub","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:\/\/www.dpriver.com\/blog\/2023\/07\/sqlflow-datahub\/","og_locale":"en_US","og_type":"article","og_title":"Integrate SQLFlow into Datahub","og_description":"Integrate SQLFlow into Datahub","og_url":"https:\/\/www.dpriver.com\/blog\/2023\/07\/sqlflow-datahub\/","og_site_name":"SQL and Data Blog","article_published_time":"2023-07-08T02:14:45+00:00","article_modified_time":"2023-07-21T08:48:03+00:00","author":"leo gu","twitter_card":"summary_large_image","twitter_misc":{"Written by":"leo gu","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Organization","@id":"https:\/\/www.dpriver.com\/blog\/#organization","name":"SQL and Data Blog","url":"https:\/\/www.dpriver.com\/blog\/","sameAs":[],"logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dpriver.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2022\/07\/sqlpp-character.png","contentUrl":"https:\/\/www.dpriver.com\/blog\/wp-content\/uploads\/2022\/07\/sqlpp-character.png","width":251,"height":72,"caption":"SQL and Data Blog"},"image":{"@id":"https:\/\/www.dpriver.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"WebSite","@id":"https:\/\/www.dpriver.com\/blog\/#website","url":"https:\/\/www.dpriver.com\/blog\/","name":"SQL and Data Blog","description":"SQL related blog for database professional","publisher":{"@id":"https:\/\/www.dpriver.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dpriver.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.dpriver.com\/blog\/2023\/07\/sqlflow-datahub\/","url":"https:\/\/www.dpriver.com\/blog\/2023\/07\/sqlflow-datahub\/","name":"Integrate SQLFlow into Datahub","isPartOf":{"@id":"https:\/\/www.dpriver.com\/blog\/#website"},"datePublished":"2023-07-08T02:14:45+00:00","dateModified":"2023-07-21T08:48:03+00:00","description":"Integrate SQLFlow into Datahub","breadcrumb":{"@id":"https:\/\/www.dpriver.com\/blog\/2023\/07\/sqlflow-datahub\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dpriver.com\/blog\/2023\/07\/sqlflow-datahub\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dpriver.com\/blog\/2023\/07\/sqlflow-datahub\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.dpriver.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Integrate SQLFlow into Datahub"}]},{"@type":"Article","@id":"https:\/\/www.dpriver.com\/blog\/2023\/07\/sqlflow-datahub\/#article","isPartOf":{"@id":"https:\/\/www.dpriver.com\/blog\/2023\/07\/sqlflow-datahub\/"},"author":{"name":"leo gu","@id":"https:\/\/www.dpriver.com\/blog\/#\/schema\/person\/9e80d249b6da4e572bd8590b0789bc14"},"headline":"Integrate SQLFlow into Datahub","datePublished":"2023-07-08T02:14:45+00:00","dateModified":"2023-07-21T08:48:03+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dpriver.com\/blog\/2023\/07\/sqlflow-datahub\/"},"wordCount":402,"publisher":{"@id":"https:\/\/www.dpriver.com\/blog\/#organization"},"articleSection":["Data Governance"],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dpriver.com\/blog\/#\/schema\/person\/9e80d249b6da4e572bd8590b0789bc14","name":"leo gu","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dpriver.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/24976e2e4ca7dd476652bb26bd09392b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/24976e2e4ca7dd476652bb26bd09392b?s=96&d=mm&r=g","caption":"leo gu"},"url":"https:\/\/www.dpriver.com\/blog\/author\/guyuanhao\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dpriver.com\/blog\/wp-json\/wp\/v2\/posts\/2839"}],"collection":[{"href":"https:\/\/www.dpriver.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dpriver.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dpriver.com\/blog\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dpriver.com\/blog\/wp-json\/wp\/v2\/comments?post=2839"}],"version-history":[{"count":15,"href":"https:\/\/www.dpriver.com\/blog\/wp-json\/wp\/v2\/posts\/2839\/revisions"}],"predecessor-version":[{"id":2920,"href":"https:\/\/www.dpriver.com\/blog\/wp-json\/wp\/v2\/posts\/2839\/revisions\/2920"}],"wp:attachment":[{"href":"https:\/\/www.dpriver.com\/blog\/wp-json\/wp\/v2\/media?parent=2839"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dpriver.com\/blog\/wp-json\/wp\/v2\/categories?post=2839"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dpriver.com\/blog\/wp-json\/wp\/v2\/tags?post=2839"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}