Использование нескольких выражений в Google Analytics API - PullRequest
2 голосов
/ 28 июня 2019

Я использую Google Analytics Python API и хочу найти несколько частичных совпадений строк в измерении. Что-то вроде следующего отлично работает:

"filters": [
    {
    "dimensionName": "ga:pagePath",
    "operator": "PARTIAL",
    "expressions": ["substring1"]
    },
    {
    "dimensionName": "ga:pagePath",
    "operator": "PARTIAL",
    "expressions": ["substring2"]
    }    
           ]

Но я бы хотел объединить эти выражения, чтобы было проще сделать подобное для большого количества подстрок. Я видел, что «выражения» будет принимать регулярные выражения, поэтому я попытался использовать приведенный ниже код, но он не работает. Кто-нибудь может помочь?

"filters": [
    {
    "dimensionName": "ga:pagePath",
    "operator": "PARTIAL",
    "expressions": ["substring1|substring2"]
    }    
           ]

Я уверен, что это простой вопрос, но я нигде не могу найти ответ. Я думаю, что могу использовать неправильный метод.

1 Ответ

0 голосов
/ 28 июня 2019

Инициализация данных в виде списка словарей:

filters = [{
    "dimensionName": "ga:pagePath",
    "operator": "PARTIAL",
    "expressions": ["substring1"]
    },
    {
    "dimensionName": "ga:pagePath",
    "operator": "PARTIAL",
    "expressions": ["substring2"]
    }    
           ]

Группировка с использованием itertools:

import itertools

records = []

for key, group in itertools.groupby(filters, lambda x: x['dimensionName']):
    groups = list(group)
    rec = {'dimensionName':key}

    # assuming there are no duplicates of the operator
    rec['operator'] = min([x['operator'] for x in groups])    

    # the `sum` expression reduces the list of lists of expressions it is slow but readable. For production, revisit
    rec['expressions'] = sum([x['expressions'] for x in groups],[])

    records.append(rec)

print(records)

# [{'dimensionName': 'ga:pagePath',
#  'operator': 'PARTIAL',
#  'expressions': ['substring1', 'substring2']}]
...