You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Data Studio中如何以字段形式表示字符串/数字数组?

处理Google Data Studio连接器中的数组字段:比逗号分隔更优的方案

好问题!我在开发Looker Studio(原Google Data Studio)连接器时也踩过同样的坑——把数组转成逗号分隔字符串确实能凑合用,但在计算字段里拆分、统计都特别麻烦,完全发挥不了数组的优势。下面分享两个我亲测好用的方案,优先推荐第一个官方原生方案:

方案1:使用官方支持的「重复字段(Repeating Fields)」

这是Looker Studio专门为数组类型数据设计的原生解决方案,能让数组字段在报表中直接被识别和操作,灵活性拉满。

实现步骤:

  1. 在Schema中标记重复字段
    在getSchema方法里,给数组对应的字段加上repeating: true属性,比如处理字符串数组的例子:
    function getSchema(request) {
      return {
        schema: [
          {
            name: 'order_id',
            dataType: 'STRING',
            label: '订单ID'
          },
          {
            name: 'product_tags',
            dataType: 'STRING',
            label: '商品标签',
            repeating: true // 标记为重复字段
          }
        ]
      };
    }
    
  2. 在getData中返回数组值
    不需要再把数组转成字符串,直接返回原始数组即可:
    function getData(request) {
      // 假设从数据源获取的原始记录
      const rawData = [
        { order_id: 'ORD001', product_tags: ['新品', '电商', '促销'] },
        { order_id: 'ORD002', product_tags: ['清仓', '线下'] }
      ];
    
      // 转换为连接器要求的行格式
      const rows = rawData.map(item => [
        item.order_id,
        item.product_tags // 直接传入数组
      ]);
    
      return {
        fields: request.fields.map(field => field.name),
        rows: rows
      };
    }
    

优势:

  • 在报表中可以直接使用ARRAY_LENGTH(product_tags)统计数组长度,ARRAY_AGG(product_tags)做聚合,甚至在表格中展开重复字段为多行;
  • 完全避免了拆分逗号字符串的繁琐操作,计算字段的实用性大幅提升。

注意事项:

  • 重复字段目前仅支持STRING、NUMBER、BOOLEAN这几种基础数据类型,不支持嵌套数组;
  • 返回的数组值不能为null,如果是空数组直接返回[]即可。

方案2:预计算数组衍生字段(兼容旧场景)

如果因为某些限制无法使用重复字段(比如数据源结构特殊或报表有旧兼容需求),可以在连接器层面提前计算数组的常用衍生值,作为独立字段返回给报表:

function getData(request) {
  const rawData = [
    { order_id: 'ORD001', product_tags: ['新品', '电商', '促销'] },
    { order_id: 'ORD002', product_tags: ['清仓', '线下'] }
  ];

  const processedData = rawData.map(item => ({
    order_id: item.order_id,
    tags_str: item.product_tags.join(','), // 保留原逗号分隔字符串
    tag_count: item.product_tags.length,
    has_promotion: item.product_tags.includes('促销') ? '是' : '否',
    first_tag: item.product_tags[0] || ''
  }));

  const rows = processedData.map(item => [
    item.order_id,
    item.tags_str,
    item.tag_count,
    item.has_promotion,
    item.first_tag
  ]);

  return {
    fields: request.fields.map(field => field.name),
    rows: rows
  };
}

这种方式可以让用户在报表里直接使用tag_count、has_promotion这些预计算字段,不用再手动拆分字符串做计算,虽然不如重复字段灵活,但也能解决大部分实用场景的需求。


内容的提问来源于stack exchange,提问作者user458729

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:28:30