View source: R/ga_data_filter.R
ga_data_filter | R Documentation |
Use with ga_data to create filters
ga_data_filter(x)
x |
Filter DSL enabled syntax or the output of a previous call to this function - see examples |
This uses a specific filter DSL syntax to create GA4 filters that can be passed to ga_data arguments dim_filters
or met_filters
. Ensure that the fields you use are either all metrics or all dimensions.
The syntax uses operators and the class of the value you are setting (string, numeric or logical) to construct the filter expression object.
Fields including custom fields for your propertyId can be imported if you fetch them via ga_meta("data", propertyId = 12345)
before you construct a filter. If you do not want filters to be validated, then send them in as strings ("field").
The DSL rules are:
Single filters can be used without wrapping in filter expressions
A single filter syntax is (field) (operator) (value)
(field) is a dimension or metric for your web property, which you can review via ga_meta
(field) can be validated if you fetch metadata before you construct the filter. If you do this, you can call the fields without quote strings e.g. city
and not "city"
(operator) for metrics can be one of: ==, >, >=, <, <=
(operator) for dimensions can be one of: ==, \%begins\%, \%ends\%, \%contains\%, \%in\%, \%regex\%, \%regex_partial\%
for dimensions
dimension (operator) are by default case sensitive. Make them case insensitive by using UPPER case variations \%BEGINS\%, \%ENDS\%, ...
or ===
for exact matches
(value) can be strings ("dim1"
), numerics (55
), string vectors (c("dim1", "dim2")
), numeric vectors (c(1,2,3)
) or boolean (TRUE
) - the type will created different types of filters - see examples
Create filter expressions for multiple filters when using the operators: &, |, !
for logical combinations of AND, OR and NOT respectively.
A FilterExpression
object suitable for use in ga_data
Other GA4 functions:
ga_data()
,
ga_data_order()
## Not run:
# start by calling ga_meta("data") to put valid field names in your environment
meta <- ga_meta("data")
# if you have custom fields, supply your propertyId to ga_meta()
custom_meta <- ga_meta("data", propertyId = 206670707)
custom_meta[grepl("^customEvent", custom_meta$apiName),]
## End(Not run)
## filter clauses
# OR string filter
ga_data_filter(city=="Copenhagen" | city == "London")
# inlist string filter
ga_data_filter(city==c("Copenhagen","London"))
# AND string filters
ga_data_filter(city=="Copenhagen" & dayOfWeek == "5")
# ! - invert string filter
ga_data_filter(!(city=="Copenhagen" | city == "London"))
# multiple filter clauses
f1 <- ga_data_filter(city==c("Copenhagen","London","Paris","New York") &
(dayOfWeek=="5" | dayOfWeek=="6"))
# build up complicated filters
f2 <- ga_data_filter(f1 | sessionSource=="google")
f3 <- ga_data_filter(f2 & !sessionMedium=="cpc")
f3
## numeric filter types
# numeric equal filter
ga_data_filter(sessions==5)
# between numeric filter
ga_data_filter(sessions==c(5,6))
# greater than numeric
ga_data_filter(sessions > 0)
# greater than or equal
ga_data_filter(sessions >= 1)
# less than numeric
ga_data_filter(sessions < 100)
# less than or equal numeric
ga_data_filter(sessions <= 100)
## string filter types
# begins with string
ga_data_filter(city %begins% "Cope")
# ends with string
ga_data_filter(city %ends% "hagen")
# contains string
ga_data_filter(city %contains% "ope")
# regex (full) string
ga_data_filter(city %regex% "^Cope")
# regex (partial) string
ga_data_filter(city %regex_partial% "ope")
# by default string filters are case sensitive.
# Use UPPERCASE operator to make then case insensitive
# begins with string (case insensitive)
ga_data_filter(city %BEGINS% "cope")
# ends with string (case insensitive)
ga_data_filter(city %ENDS% "Hagen")
# case insensitive exact
ga_data_filter(city %==%"coPENGhagen")
# avoid validation by making fields strings
ga_data_filter("city" %==%"coPENGhagen")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.