过滤

如果报告包含过滤条件,但社区连接器返回未过滤的数据 请求的所有字段,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,因为所有过滤器都可以 已成功应用。

原始数据

来源 会话数 国家/地区
Social 60 USA
Social 50 Canada
Social 40 UK
Organic 90 USA
Organic 80 Canada
Organic 70 UK
Newspaper 30 USA
Newspaper 20 Canada
Newspaper 10 UK

过滤后的数据

来源 会话数
Social 60
Social 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
}