过滤条件

如果报告包含过滤条件,并且社区连接器为所有请求的字段返回未过滤的数据,则 Looker Studio 会将过滤条件应用于连接器响应。不过,您可以在社区连接器级别应用过滤器,这在某些情况下可以显著提高性能。过滤器信息通过 getData() 请求对象传递,连接器可以使用此信息过滤数据,然后再将其发送回 Looker Studio。

例如,如果您要连接到 SQL 数据库,直接在 WHERE 子句中应用过滤条件(下图中的 B3)可以大幅减少返回 Looker Studio 的行数。这反过来又限制了需要处理并发送到 Looker Studio 的数据量 (B5)。

过滤器流程图

应用过滤器的规则

  1. 要么应用全部过滤器,要么一个也不应用。请参阅不支持的过滤器
  2. 请勿在响应中包含 forFilterOnly 字段。
  3. request.dimensionsFilters 数组中的每个条目通过 AND 运算结合到一起。

    例如,对于下面的过滤器,连接器应仅包含 countryUSA sourceSocial 的值。

    {
      "dimensionsFilters": [
        [{
          "fieldName": "country",
          "values": ["USA"],
          "type": "INCLUDE",
          "operator": "EQUALS"
        }],
        [{
          "fieldName": "source",
          "values": ["Social"],
          "type": "INCLUDE",
          "operator": "EQUALS"
        }]
      ]
    }
    
  4. request.dimensionsFilters 数组中的每个子数组通过 OR 运算结合到一起。

    例如,对于下面的过滤器,连接器应仅包含 countryUSA countryCanada 的值。

    {
      "dimensionsFilters": [
        [{
          "fieldName": "country",
          "values": ["Canada"],
          "type": "INCLUDE",
          "operator": "EQUALS"
        }, {
          "fieldName": "country",
          "values": ["USA"],
          "type": "INCLUDE",
          "operator": "EQUALS"
        }]
      ]
    }
    

示例

以下示例演示了从报告用户定义过滤器到社区连接器返回过滤后的数据的端到端流程。

过滤条件示例

  1. 报告用户已配置两个过滤器:

    1. countryCanada, USAIN_LIST
    2. sourceSocial, OrganicIN_LIST
  2. 报告用户已使用 source 维度和 sessions 指标配置了图表组件

  3. getData() 由 Looker Studio 使用以下请求对象执行:

    {
      "fields": [
        {"name": "source"},
        {"name": "sessions"},
        {"name": "country", "forFilterOnly": true}
      ],
      "dimensionsFilters": [
        [{
          "fieldName": "country",
          "values": ["Canada", "USA"],
          "type": "INCLUDE",
          "operator": "IN_LIST"
        }],
        [{
          "fieldName": "source",
          "values": ["Social", "Organic"],
          "type": "INCLUDE",
          "operator": "IN_LIST"
        }]
      ]
    }
    
  4. 连接器做出响应,返回过滤后的数据。

    对于示例请求,返回 sourcesessions,其中 country"Canada""USA" source"Social""Organic"。由于所有过滤器都能成功应用,因此将 filtersApplied 设为 true

原始数据

来源 会话数 国家/地区
社交媒体 60 美国
社交媒体 50 加拿大
社交媒体 40 UK
Organic 90 美国
Organic 80 加拿大
Organic 70 UK
Newspaper 30 美国
Newspaper 20 加拿大
Newspaper 10 UK

过滤后的数据

来源 会话数
社交媒体 60
社交媒体 50
Organic 90
Organic 80

getData() 响应

{
  "schema": [
    {"name": "source",   "dataType": "STRING"},
    {"name": "sessions", "dataType": "NUMBER"},
  ],
  "rows": [
    {"values": ["Social", 60]},
    {"values": ["Social", 50]},
    {"values": ["Organic", 90]},
    {"values": ["Organic", 80]}
  ],
  "filtersApplied": true
}

不支持的过滤器

如果连接器无法在请求中应用所有过滤器,则不应执行任何过滤。返回所有请求的字段(包括 forFilterOnly 字段),并将响应中的 filtersApplied 键设置为 false

例如:

{
  "schema": [
    {"name": "source",   "dataType": "STRING"},
    {"name": "sessions", "dataType": "NUMBER"},
    {"name": "country",  "dataType": "STRING"}
  ],
  "rows": [
    {"values": ["Social", 60, "USA"]},
    {"values": ["Social", 50, "Canada"]},
    {"values": ["Social", 40, "UK"]},
    {"values": ["Organic", 90, "USA"]},
    {"values": ["Organic", 80, "Canada"]},
    {"values": ["Organic", 70, "UK"]},
    {"values": ["Newspaper", 30, "USA"]},
    {"values": ["Newspaper", 20, "Canada"]},
    {"values": ["Newspaper", 10, "UK"]},
  ],
  "filtersApplied": false
}