こんにちは、エキサイト株式会社メディア事業部所属のエンジニアの岩藤です。
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等が用意されています。 これでどんな条件も指定できそうですね!