こんにちは、エキサイト株式会社メディア事業部所属のエンジニアの岩藤です。
Universal Analyticsを利用できるのも後少しですね。
GoogleAnalytics4(以下GA4)へ移行中方も多いのではないでしょうか。 私もランキングプログラムの移行真っ最中です。
今回GA4でランキング生成を行うにあたり、言語もPHP からJavaへの切り替えも行いました。 その際に複数条件を書く方法にハマってしまったので、備忘録を残したいと思います。
切り替えは下記をもとに行いました。 developers.google.com github.com
Betaという名前が気になりますが、とりあえず入れたら動きました。
PVレポートを作るときはURLの絞り込みを行うことが多いと思います。 絞り込みを行う場合は、FilterExpressionクラスを使うようです(下記はurlパターンで絞り込みしてます)
FilterExpression filterExpression = FilterExpression.newBuilder() .setFilter( Filter.newBuilder() .setFieldName("pagePath") .setStringFilter( Filter.StringFilter.newBuilder() .setMatchType(Filter.StringFilter.MatchType.PARTIAL_REGEXP) .setValue(pathRegex) ).build() ).build(); RunReportRequest request = RunReportRequest.newBuilder() .setProperty("properties/" + propertyId) .addDimensions(Dimension.newBuilder().setName("pagePath")) .addMetrics(Metric.newBuilder().setName("screenPageViews")) .setDimensionFilter(filterExpression) .addDateRanges( DateRange.newBuilder() .setStartDate(startDate) .setEndDate(endDate) ) .build();
そして、条件が一つの場合は上記でいいのですが、複数条件を書くFilterを場合は別の書き方が必要でした。 FilterExpressionListとFilterExpressionを使い、複数のFilterExpressionをAndもしくはOrで纒める事で、 複数条件を指定できました。
FilterExpression filter1 = FilterExpression.newBuilder() .setFilter( Filter.newBuilder() .setFieldName("pagePath") .setStringFilter( Filter.StringFilter.newBuilder() .setMatchType(Filter.StringFilter.MatchType.PARTIAL_REGEXP) .setValue(pathRegex) ).build() ).build(); FilterExpression filter2 = FilterExpression.newBuilder() .setFilter( Filter.newBuilder() .setFieldName("session") .setStringFilter( Filter.StringFilter.newBuilder() .setMatchType(Filter.StringFilter.MatchType.EXACT) .setValue("session_p") ).build() ).build(); FilterExpressionList expressionList = FilterExpressionList.newBuilder() .addExpressions(filter1) .addExpressions(filter2) .build(); FilterExpression filterExpression = FilterExpression.newBuilder() .setAndGroup(expressionList) .build();
setAndGroupだけでなく、setOrGroup等が用意されています。 これでどんな条件も指定できそうですね!