两个简单的数据模型技巧

Google Analytics Haran 6年前 (2018-08-07) 3269次浏览 0个评论

 

GTM中最难的一个概念就是数据模型,实际上,GTM中的数据模型使用最多的是数据层变量,你可以能会认为这两个东西在数据层中是相同的东西,但实际上不是的。

数据模型代表着你推送到数据层的键值对,你推送到数据层的所有键值对,GTM会获取到这个键并且会将值更新到数据模型里面,或是将对象或数组合并到一起。其实就是对应的键匹配到,就将值上的数据更新进去。

在这篇GTM文章中,我参考了来自Snowflake Analytics的 Mr. Jethro Nederhof ,他发表了这两个技巧在Measure Slack,我也征求了对方是否同意在我的博客中发表,他非常愉快的同意了,因为他的慷慨促使了我们后面合作共同署名写了一篇关于跟踪浏览器行为的文章。

 

 

两个简单的数据模型技巧

两个简单的数据模型技巧

两个技巧都是关于数据模型如何处理键值对的,如何推送。

第一个技巧是防止过快的数据递归合并,特别是在单页应用中应用中你不想过快的发送数据的地方。

第二个技巧是可以让你知道数据模型当前的状态,这个的用处非常大,特别是你调试的是时候,你可以知道键值对在数据表具体位置。

 

技巧1:用_clear:true去防止对象中的递归合并

例如,我们想要将一些产品展示类数据推送到数据层,第一个推送的结果会如下:

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
  products: [{
    sku: '123',
    name: 'Thick as a Brick'
  },{
    sku: '234',
	name: 'Aqualung'
  }]
});

在这里,数据模型中最重要的product有两个对象(也就是产品)被推送出去,如果你为products创建一个数据层变量,这个变量就可以获取返回的值。

如果访客在页面还没有完全加载时候跳转到另一个网站,页面上只展示了一个产品,所以这时候站点执行的代码应该如下:

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
  products: [{
    sku: '345',
	name: 'Close to the Edge'
  }]
});

你期望的是products里面只传递一个产品的展示,但是递推合并,实际的数据结果如:

{
  products: [{
    sku: '345',
	name: 'Close to the Edge'
  },{
    sku: '234',
	name: 'Aqualung'
  }]
}

正如你看到的那样,第二个产品的在第一次就被一起发送出去,因为第二个产品的数据被合并到前一个数组里面。

下面就是使用技巧,为了防止数据递归合并,你需要添加_clear:true到你不想递归合并的地方,所以上面的例子推送的代码应该是:

window.dataLayer = window.dataLayer.push({
  products: [{
    sku: '345',
	name: 'Close to the Edge'
  }],
  _clear: true
});

现在,products数组里面就只有一个产品的展示数据。

 

 

技巧2:获取传递数据模型的当前状态

我们可以用window.google_tag_manager[‘GTM-XXXXX’].dataLayer.get(key)

去获取数据模型中的所有键,如果你要获取当前数据模型所有内容,你可以执行如下代码:

var dataModel = window.google_tag_manager['GTM-XXXXX'].dataLayer.get({
  split: function() { return []; }
});
console.table(dataModel);

如果你在浏览器的控制后台执行上述js,你就可以当前数据模型的一个表格:

两个简单的数据模型技巧

这种简单的方式就可以看到当前的数据。

 

总结:

有些具有非常强技术性或技巧性的东西,可能你并不会经常在日常工作应用,但我坚信只有理解数据模型的运行模型,才能真正领会到GTM的强大。

 

点评:

第一个技巧的作用是防止数据还没展示但是被发送的情况,第二个是看数据模型里面的数据的操作方式,这个也可以通过GTM的预览模型去查看。

 

 

来源:https://www.simoahava.com/


如有疑问,可以在文章底部留言或邮件(haran.huang@ichdata.com) 我~
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址