{"id":1956,"date":"2021-12-10T14:54:06","date_gmt":"2021-12-10T13:54:06","guid":{"rendered":"https:\/\/webmasterei-prange.de\/data-studio-report-analyzing-products-in-merchant-center-with-bigquery\/"},"modified":"2025-10-06T20:51:14","modified_gmt":"2025-10-06T18:51:14","slug":"data-studio-report-analyzing-products-in-merchant-center-with-bigquery","status":"publish","type":"post","link":"https:\/\/webmasterei-prange.de\/en\/data-studio-report-analyzing-products-in-merchant-center-with-bigquery\/","title":{"rendered":"Data Studio Report: Analyzing Products in Merchant Center with BigQuery"},"content":{"rendered":"<style>.kb-image1183_8cf785-00 .kb-image-has-overlay:after{opacity:0.3;}<\/style>\n<figure class=\"wp-block-kadence-image kb-image1183_8cf785-00 size-full\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webmasterei-prange.de\/wp-content\/uploads\/2025\/09\/Produkt-Differenz-im-Google-Merchant-Center-im-Datastudio-darstellen.png.webp\" alt=\"Display product difference in Google Merchant Center in Data Studio\" width=\"1177\" height=\"852\" class=\"kb-img wp-image-1950 \"><\/figure>\n\n<p>Who hasn&#8217;t experienced this in everyday agency life? A client&#8217;s online shop releases new products, but no one at the ads agency notices because the people responsible for product maintenance don&#8217;t communicate regularly with the various agency partners. In the end, such new products are casually mentioned at the next performance review meeting. Because we see this scenario more often than not, we&#8217;ve created a data-driven solution that conveniently displays new releases in the shop.   <\/p>\n\n<p>This article shows how to make new products from Google Merchant Center available to a group of people via Google Data Studio.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"toc_Vorausstetzungen\">Prerequisites<\/h2>\n\n<p>For the implementation of this solution, you need:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>Read access to Google Merchant Center<\/li>\n\n\n\n<li>Google BigQuery<\/li>\n\n\n\n<li>Access to Google Ads Script \/ Google Apps Scripts<\/li>\n\n\n\n<li>Google Data Studio<\/li>\n<\/ul>\n\n<h2 class=\"wp-block-heading\" id=\"toc_Datastudio_Report_Produkt_Differenz_im_Google_Merchant_Center\">Datastudio Report: Displaying Product Difference in Google Merchant Center<\/h2>\n\n<p>The report shows all new products that have appeared in the Merchant Center during the selected period. This compares the Data Studio period control area with the previous period. <\/p>\n\n<p>In addition, the report offers the possibility to distinguish between products that have recently been newly listed and those that have disappeared from the Merchant Center using the \u201cnewly listed\u201d \/ \u201cunlisted\u201d chart.<\/p>\n\n<p>The result is a real overview of the item movements in the Google Merchant Center, which can be valuable for both agency employees and the customer in product analysis.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"toc_Merchant_Center_Daten_nach_BigQuery_tagesaktuell_importieren\">Importing Merchant Center Data into BigQuery on a Daily Basis<\/h2>\n\n<p>To work with Merchant Center data in BigQuery, it must first be imported there on a daily basis. There are 2 approaches for this. <\/p>\n\n<ol class=\"wp-block-list\">\n<li>With the predefined Merchant Center Data Center transfer, <a href=\"https:\/\/cloud.google.com\/bigquery-transfer\/docs\/merchant-center-transfer\" target=\"_blank\" rel=\"noreferrer noopener\">as detailed by Google in this article<\/a>.<\/li>\n\n\n\n<li>With our <a href=\"https:\/\/webmasterei-prange.de\/google-merchant-center-daten-zu-bigquery-uebertragen-bigquery-data-transfer-service\/\" target=\"_blank\" rel=\"noreferrer noopener\">Ads Script solution, the script addresses the current Shopping Content API<\/a> and is created based on the v2.1 API.<\/li>\n<\/ol>\n\n<p>Option 1 is the simpler one, but also has the disadvantage that the latest fields aren&#8217;t available. With the Ads script presented here, you have more control and can easily edit missing fields. This is certainly the preferred option for users with experience with Ads scripts.  <\/p>\n\n<h2 class=\"wp-block-heading\" id=\"toc_BigQuery_Abfrage_fur_Produkt_Differenzen_im_Google_Merchant\">BigQuery query for product differences in Google Merchant Center<\/h2>\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">WITH shopping_current AS (\n  ##### GET CURRENT PRODUCTS FROM THE MERCHANT CENTER ######\n  SELECT  \n  DATE(_PARTITIONTIME) as date,  \n  id,\n  offerId,\n  title,\n  link,\n  imageLink,\n  fire\n  FROM `webmasterei-gtm-test.gmc_data.SHOPPING_CONTENT`, UNNEST(destinationStatuses) as destinationStatuses\n  WHERE DATE(_PARTITIONTIME) between \"2021-11-15\" AND \"2021-11-21\"\n  AND status = 'approved' AND availability = 'in stock'\n), shopping_past as (\n  ##### RECOLLECT PAST PERIOD PRODUCTS FROM THE MERCHANT CENTER ######\n  SELECT  \n  DATE(_PARTITIONTIME) as date,  \n  id,\n  offerId,\n  title,\n  link,\n  imageLink,\n  fire\n  FROM `webmasterei-gtm-test.gmc_data.SHOPPING_CONTENT`, UNNEST(destinationStatuses) as destinationStatuses\n  WHERE DATE(_PARTITIONTIME) between \"2021-11-08\" AND \"2021-11-14\"\n  AND status = 'approved' AND availability = 'in stock'\n), unlisted AS (\n  ##### Products \"unlisted\" brands that are no longer available in the current inventory. ######\n  SELECT  \n  shopping_past.*,\n  'unlisted' as listing_status\n  FROM shopping_past  \n  LEFT JOIN shopping_current\n  ON shopping_current.offerId = shopping_past.offerId\n  WHERE shopping_current.offerId IS NULL\n), new_listed AS (\n  ##### Products \"new listed\" brands that are not yet available in the old stock. ######\n  SELECT  \n  shopping_current.*,\n  'new listed' as listing_status\n  FROM shopping_current\n  LEFT JOIN shopping_past  \n  ON shopping_current.offerId = shopping_past.offerId\n  WHERE shopping_past.offerId IS NULL\n), unionlist AS (\n  SELECT * FROM unlisted\n UNION ALL \n  SELECT * FROM new_listed\n)\nSELECT DISTINCT\n  id,\n  offerId,\n  title,\n  link,\n  imageLink,\n  fire,\n  listing_status\nFROM unionlist  <\/pre>\n\n<p>The query first retrieves all products for the set time period. Then the same happens for the previous time period. <\/p>\n\n<p>The data is then merged using a join, and products that were present in both periods are excluded. The data is then labeled &#8220;unlisted&#8221; or &#8220;newly listed&#8221; according to their affiliation. <\/p>\n\n<p>Finally, the tables for the query are merged with UNION ALL.<\/p>\n\n<h3 class=\"wp-block-heading\" id=\"toc_Zeitraume_fur_Datastudio_anpassen\">Adjusting Time Periods for Data Studio<\/h3>\n\n<p>To operate the query in Data Studio with dynamic dates, @DS_START_DATE and @DS_END_DATE need to be added to the code.<\/p>\n\n<p>For the period of the time range control, this is simple:<\/p>\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">WHERE DATE(_PARTITIONTIME) between PARSE_DATE(\"%Y%m%d\",@DS_START_DATE) AND PARSE_DATE(\"%Y%m%d\",@DS_END_DATE)<\/pre>\n\n<p>For the previous period, things are a bit more complex.<\/p>\n\n<p>We want to determine the period before @DS_START_DATE that is exactly as long as the period between @DS_START_DATE and @DS_END_DATE<\/p>\n\n<p>To be able to use the data correctly later, I built this test function:<\/p>\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">SELECT\nPARSE_DATE(\"%Y%m%d\",@DS_START_DATE) as current_start,\nPARSE_DATE(\"%Y%m%d\",@DS_END_DATE) as current_end,\nDATE_DIFF(PARSE_DATE(\"%Y%m%d\",@DS_END_DATE),PARSE_DATE(\"%Y%m%d\",@DS_START_DATE),DAY) as datediff,\nDATE_SUB(PARSE_DATE(\"%Y%m%d\",@DS_START_DATE), INTERVAL DATE_DIFF(PARSE_DATE(\"%Y%m%d\",@DS_END_DATE),PARSE_DATE(\"%Y%m%d\",@DS_START_DATE),DAY) +1 DAY) as past_start,\nDATE_SUB(PARSE_DATE(\"%Y%m%d\",@DS_START_DATE), INTERVAL 1 DAY) as past_end<\/pre>\n\n<p>If you add this in Google Data Studio, you can conveniently check if the time periods are set correctly.<\/p>\n\n<p>Here&#8217;s the finished result for the Data Studio Report:<\/p>\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">WITH shopping_current AS (\n  ##### GET CURRENT PRODUCTS FROM THE MERCHANT CENTER ######\n  SELECT  \n  DATE(_PARTITIONTIME) as date,  \n  id,\n  offerId,\n  title,\n  link,\n  imageLink,\n  fire\n  FROM `myproject.gmc_data.SHOPPING_CONTENT`, UNNEST(destinationStatuses) as destinationStatuses\n  WHERE DATE(_PARTITIONTIME) between PARSE_DATE(\"%Y%m%d\",@DS_START_DATE) AND PARSE_DATE(\"%Y%m%d\",@DS_END_DATE)\n  AND status = 'approved' AND availability = 'in stock'\n), shopping_past as (\n  ##### RECOLLECT PAST PERIOD PRODUCTS FROM THE MERCHANT CENTER ######\n  SELECT  \n  DATE(_PARTITIONTIME) as date,  \n  id,\n  offerId,\n  title,\n  link,\n  imageLink,\n  fire\n  FROM `myproject.gmc_data.SHOPPING_CONTENT`, UNNEST(destinationStatuses) as destinationStatuses\n  WHERE DATE(_PARTITIONTIME) between  \n  DATE_SUB(PARSE_DATE(\"%Y%m%d\",@DS_START_DATE), INTERVAL DATE_DIFF(PARSE_DATE(\"%Y%m%d\",@DS_END_DATE),PARSE_DATE(\"%Y%m%d\",@DS_START_DATE),DAY) +1 DAY) ## START DATE\n  AND DATE_SUB(PARSE_DATE(\"%Y%m%d\",@DS_START_DATE), INTERVAL 1 DAY) ### END DATE\n  AND status = 'approved' AND availability = 'in stock'\n), unlisted AS (\n  ##### Products \"unlisted\" brands that are no longer available in the current inventory. ######\n  SELECT  \n  shopping_past.*,\n  'unlisted' as listing_status\n  FROM shopping_past  \n  LEFT JOIN shopping_current\n  ON shopping_current.offerId = shopping_past.offerId\n  WHERE shopping_current.offerId IS NULL\n), new_listed AS (\n  ##### Products \"new listed\" brands that are not yet available in the old stock. ######\n  SELECT  \n  shopping_current.*,\n  'new listed' as listing_status\n  FROM shopping_current\n  LEFT JOIN shopping_past  \n  ON shopping_current.offerId = shopping_past.offerId\n  WHERE shopping_past.offerId IS NULL\n), unionlist AS (\n  SELECT * FROM unlisted\n UNION ALL \n  SELECT * FROM new_listed\n)\nSELECT DISTINCT\n  id,\n  offerId,\n  title,\n  link,\n  imageLink,\n  fire,\n  listing_status\nFROM unionlist  <\/pre>\n\n<p>Now this query can be used in Data Studio with the help of the BigQuery Data Studio Connector. How this works is shown later in the article. <\/p>\n\n<h2 class=\"wp-block-heading\" id=\"toc_Produkte_mit_Problemen_Warnungen_des_Google_Merchant_Centers\">Products with Problems  Warnings from Google Merchant Center<\/h2>\n\n<p>This BigQuery query shows products from the Google Merchant Center that had a problem yesterday.<\/p>\n\n<p>For this, we only need to load the products with yesterday&#8217;s date. Then we unnest the itemLevelIssues so that we can retrieve them individually. <\/p>\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">WITH shopping AS (\n  SELECT DATE(_PARTITIONTIME) as date,  \n  *  \n  FROM `myproject.gmc_data.SHOPPING_CONTENT`, UNNEST(itemLevelIssues) as itemLevelIssues\n  WHERE DATE(_PARTITIONTIME) = DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)\n)\nSELECT * FROM shopping<\/pre>\n\n<p>If the query in Data Studio is set up with meaningful cross-filtering for the problems, it serves as an efficient tool to identify issues and solve them systematically.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"toc_BigQuery_Benutzerdefinierten_Report_im_Google_Datastudio_aufsetzen\">Set up a custom BigQuery report in Google Data Studio<\/h2>\n\n<p>For the Data Studio report, we use the BigQuery query shown above and set it up in Google Data Studio as a data source for the report.<\/p>\n\n<ol class=\"wp-block-list\">\n<li>Open Data Studio report<\/li>\n\n\n\n<li>Select &#8216;Add data&#8217;<\/li>\n\n\n\n<li>Choose BigQuery as data source<\/li>\n\n\n\n<li>Select custom query<\/li>\n\n\n\n<li>Choose billing account<\/li>\n\n\n\n<li>Insert query<\/li>\n\n\n\n<li>Set Enable Date Range Parameter = true<\/li>\n\n\n\n<li>Select &#8216;Add&#8217;<\/li>\n<\/ol>\n\n<p>The data source is now available under &#8220;Resources &gt; Data Sources.&#8221; There&#8217;s no luxury of assigning a name to the data source beforehand; this must be done later. The newly created data source is called &#8220;BigQuery.&#8221;   <\/p>\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"339\" data-id=\"1260\" src=\"https:\/\/webmasterei-prange.de\/wp-content\/uploads\/2025\/09\/BigQueryConnector-im-Google-Datastudio-Benutzerdefinierte-Abfrage-600x339.png.webp\" alt=\"BigQueryConnector in Google DataStudio custom query 600x339.png\" class=\"wp-image-1260\"\/><figcaption class=\"wp-element-caption\">BigQueryConnector in Google Datastudio<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"258\" data-id=\"1259\" src=\"https:\/\/webmasterei-prange.de\/wp-content\/uploads\/2025\/09\/BigQueryConnector-im-Google-Datastudio-600x258.png.webp\" alt=\"Bigqueryconnector in google datastudio 600x258.png\" class=\"wp-image-1259\"\/><figcaption class=\"wp-element-caption\">BigQueryConnector in Google Data Studio Custom Query<\/figcaption><\/figure>\n<\/figure>\n\n<p>The data source is now rudimentarily ready, and you can start creating corresponding reporting tables.<\/p>\n\n<p>The SEA team can now see which products are new, but they still have to access each product individually in the Merchant Center and use the shop search. It&#8217;s kind of&#8230; uncool \u2013 considering the Merchant Center has its own product pages and the products have their own websites. And while we&#8217;re at it&#8230; would product images work? So they don&#8217;t have to read whether it&#8217;s a jacket or a sweater?   <\/p>\n\n<p>Yes. It&#8217;s possible. <\/p>\n\n<h3 class=\"wp-block-heading\" id=\"toc_HYPERLINK_Funkion_fur_Verlinkung_aus_Google_Datastudio_Tabellen\">HYPERLINK() function for linking from Google Data Studio tables<\/h3>\n\n<p>One of my new favorites has become the HYPERLINK() function in Google Data Studio.<\/p>\n\n<p>Google&#8217;s short help is:<\/p>\n\n<p>HYPERLINK(URL, Link Label)<\/p>\n\n<p>Examples<br\/> HYPERLINK(CONCAT(\u2018https:\/\/www.youtube.com\/watch?v=&#8217;, External Video Id), Video Title)<\/p>\n\n<p>Back in the data source you just created via Resources &gt; Data Sources &gt; Edit<\/p>\n\n<p>You can now create a new field and use the Hyperlink function to create a linked title.<\/p>\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">HYPERLINK(link,title)<\/pre>\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"902\" height=\"185\" src=\"https:\/\/webmasterei-prange.de\/wp-content\/uploads\/2025\/09\/hyperlkink-funktion-datastudio.png.webp\" alt=\"Hyperlink function datastudio.png\" class=\"wp-image-1261\"\/><\/figure>\n\n<p>And because it works so well, we&#8217;ll do the same for the Merchant Center page. This way, we have a field called &#8220;View in Merchant Center&#8221; that links directly to the product detail page. <\/p>\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">HYPERLINK(CONCAT('https:\/\/merchants.google.com\/mc\/items\/details?a=123456&amp;offerId=',id,'-S&amp;country=CH&amp;language=de&amp;channel=0'), 'View in Merchant Center')<\/pre>\n\n<h3 class=\"wp-block-heading\" id=\"toc_Kreuzfilterung_im_Google_Datastudio\">Cross-filtering in Google Data Studio<\/h3>\n\n<p>Cross-filtering in Google Data Studio offers even more value. It makes the tables interactive. If we activate this option for the brand list, clicking on a brand in the first table will cause the article table to display only articles of that brand.  <\/p>\n\n<figure class=\"wp-block-gallery has-nested-images columns-default wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"460\" data-id=\"1263\" src=\"https:\/\/webmasterei-prange.de\/wp-content\/uploads\/2025\/09\/Kreuzfilterung-im-Google-Datastudio-600x460.png.webp\" alt=\"Cross-filtering in Google Data Studio 600x460.png\" class=\"wp-image-1263\"\/><figcaption class=\"wp-element-caption\">Cross-filtering in Google Data Studio<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"425\" height=\"1100\" data-id=\"1262\" src=\"https:\/\/webmasterei-prange.de\/wp-content\/uploads\/2025\/09\/Kreuzfilterung-im-Google-Datastudio-aktivieren.png.webp\" alt=\"Enable cross-filtering in Google Data Studio.png\" class=\"wp-image-1262\"\/><figcaption class=\"wp-element-caption\">Enable cross-filtering in Google Data Studio<\/figcaption><\/figure>\n<\/figure>\n\n<h3 class=\"wp-block-heading\" id=\"toc_Bilder_im_Google_Datastudio\">Images in Google Data Studio<\/h3>\n\n<p>Displaying images in Google Data Studio tables is very easy.<\/p>\n\n<p>In the data source, you can define what kind of value this is. For URL values, you can choose &#8220;URL&#8221; or &#8220;Image.&#8221; We configure the image link for the reports as an image, which provides a quicker understanding of what the product is.  <\/p>\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69d175787e434&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69d175787e434\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/webmasterei-prange.de\/wp-content\/uploads\/2025\/09\/URI-als-Bild-ing-Google-Datastudio-Datenquelle.png-1024x576.webp\" alt=\"Uri as image ing google datastudio data source.png\" class=\"wp-image-1264\"\/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">URI as image ing Google Datastudio data source<\/figcaption><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Who hasn&#8217;t experienced this in everyday agency life? A client&#8217;s online shop releases new products, but no one at the ads agency notices because the people responsible for product maintenance don&#8217;t communicate regularly with the various agency partners. In the end, such new products are casually mentioned at the next&#8230;<\/p>\n","protected":false},"author":1,"featured_media":1950,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","slim_seo":{"title":"Merchant Center Insights via BigQuery & Datastudio","description":"How to create a daily report with Datastudio & BigQuery that shows new and removed products in the Merchant Center."},"footnotes":""},"categories":[28,29,31],"tags":[],"class_list":["post-1956","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-big-query","category-google-data-studio","category-google-shopping"],"taxonomy_info":{"category":[{"value":28,"label":"Big Query"},{"value":29,"label":"Google Data Studio"},{"value":31,"label":"Google Shopping"}]},"featured_image_src_large":["https:\/\/webmasterei-prange.de\/wp-content\/uploads\/2025\/09\/Produkt-Differenz-im-Google-Merchant-Center-im-Datastudio-darstellen.png-1024x741.webp",1024,741,true],"author_info":{"display_name":"admin","author_link":"https:\/\/webmasterei-prange.de\/en\/author\/admin\/"},"comment_info":0,"category_info":[{"term_id":28,"name":"Big Query","slug":"big-query","term_group":0,"term_taxonomy_id":28,"taxonomy":"category","description":"","parent":0,"count":12,"filter":"raw","cat_ID":28,"category_count":12,"category_description":"","cat_name":"Big Query","category_nicename":"big-query","category_parent":0},{"term_id":29,"name":"Google Data Studio","slug":"google-data-studio","term_group":0,"term_taxonomy_id":29,"taxonomy":"category","description":"","parent":0,"count":4,"filter":"raw","cat_ID":29,"category_count":4,"category_description":"","cat_name":"Google Data Studio","category_nicename":"google-data-studio","category_parent":0},{"term_id":31,"name":"Google Shopping","slug":"google-shopping","term_group":0,"term_taxonomy_id":31,"taxonomy":"category","description":"","parent":0,"count":7,"filter":"raw","cat_ID":31,"category_count":7,"category_description":"","cat_name":"Google Shopping","category_nicename":"google-shopping","category_parent":0}],"tag_info":false,"_links":{"self":[{"href":"https:\/\/webmasterei-prange.de\/en\/wp-json\/wp\/v2\/posts\/1956","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webmasterei-prange.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webmasterei-prange.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webmasterei-prange.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webmasterei-prange.de\/en\/wp-json\/wp\/v2\/comments?post=1956"}],"version-history":[{"count":1,"href":"https:\/\/webmasterei-prange.de\/en\/wp-json\/wp\/v2\/posts\/1956\/revisions"}],"predecessor-version":[{"id":1960,"href":"https:\/\/webmasterei-prange.de\/en\/wp-json\/wp\/v2\/posts\/1956\/revisions\/1960"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webmasterei-prange.de\/en\/wp-json\/wp\/v2\/media\/1950"}],"wp:attachment":[{"href":"https:\/\/webmasterei-prange.de\/en\/wp-json\/wp\/v2\/media?parent=1956"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webmasterei-prange.de\/en\/wp-json\/wp\/v2\/categories?post=1956"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webmasterei-prange.de\/en\/wp-json\/wp\/v2\/tags?post=1956"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}