Legato
Google Analytics の API を扱うときに便利な gem です。
検索結果に対して「フィルター」をかける
例えば、昨日のサイトのページビュー数を取得したとします。その中から「ページビュー数が1000以上のもの」を抽出したい場合には「フィルター」をかける必要があります。
フィルターの書き方
フィルターの書き方は次のとおりです。filter
というフィルターの生成メソッドに対し、「第一引数にフィルターのメソッド名(自由につけてよい)」、「第二引数にそのフィルターの動作」を書きます。公式のWikiに詳しい説明が載っています。
filter :my_filter_name, &lambda {gte(:searchSessions, 1000)}
上記のように書くことで、「my_filter_name」というフィルター(のメソッド)が定義されました。このフィルターの内容は、「『searchSessions』が1000以上」の結果を抽出するということになります。
フィルターを書く場所
フィルターの定義は前述のように書くことができます。問題は「場所」です。
答えは、「Legato::Model
をextend
したクラス内」に書きます。簡単な例ですが、以下のようになります。
class MyLegatoClient extend Legato::Model dimensions(:date, :searchKeyword) metrics(:searchSessions) filter :my_filter_name, &lambda {gte(:searchSessions, 1000)} end
これでmy_filter_name
というフィルター(のメソッド)が定義されました。
フィルターを適用する
あとはフィルターを適用するだけです。適用する場所は、「クエリのresults
メソッドを用いて検索結果を取得する場所」です。results
メソッドの後ろにチェーンメソッドとしてつなげていきます。メソッドを複数つなげればフィルタを重ねて書けることができます。以下、例です。
search_results = query.results(start_date: start_date, end_date: end_date, limit: limit, sort: sort, sampling_level: sampling_level).my_filter_name
文の最後に.my_filter_name
をチェーンでつなげてフィルタをかけることができました。なお、詳しくは公式のWikiに掲載されています。
より複雑なフィルタリング
公式のドキュメントにあるように、フィルタの条件として各種 NOT
句 が選べますので、それらを定義して組み合わせていけば(フィルタを重ねてかけていけば)、希望通りの検索結果の絞り込みができると思います。