フィルタ

レポートにフィルタが含まれていて、リクエストされたすべてのフィールドに対してフィルタされていないデータがコミュニティ コネクタから返された場合、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. レポート ユーザーは 2 つのフィルタを作成しました。

    1. country は、Canada, USAIN_LIST になります。
    2. source は、Social, 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" です。すべてのフィルタが正常に適用されたため、filtersAppliedtrue に設定します。

元のデータ

source sessions country
ソーシャル 60 米国
ソーシャル 50 カナダ
ソーシャル 40 英国
Organic 90 米国
Organic 80 カナダ
Organic 70 UK
Newspaper 30 米国
Newspaper 20 カナダ
Newspaper 10 英国

フィルタされたデータ

source sessions
ソーシャル 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
}