У меня есть значения, разделенные запятыми, в поле базы данных - в данном случае названия городов. Это выглядит так (без кавычек или пробелов рядом с запятыми):
Cities
Row 1: New York City,Boston,Miami
Row 2: Los Angeles,San Francisco
Row 3: Chicago,New York City,Los Angeles
Row 4: Seattle
Row 5: Philadelphia,New York City,Boston,Chicago
Я хотел бы вывести в таблице, которая подсчитывает общее количество экземпляров города в поле. Примерно так:
New York City 3
Boston 2
Chicago 2
Los Angeles 2
Miami 1
Philadelphia 1
San Francisco 1
Seattle 1
Я могу извлекать названия городов в зависимости от их положения в массиве. Например, эта формула извлекает каждый город в позиции 0:
REGEXP_EXTRACT(dimension,"^(?:[^,]*,){0}([^,]*)")
Затем таблица суммирует все экземпляры Нью-Йорка, Лос-Анджелеса и т. Д. c. в позиции 0.
Я пробовал комбинировать выражения, чтобы получить значения в позициях 0 и 1, но эта формула не сумела их правильно:
REGEXP_EXTRACT(dimension,"^(?:[^,]*,){0}([^,]*)(?:[^,]*,){1}([^,]*)")
Я также пробовал следующую формулу, но он также захватывает значения только в позиции 0:
REGEXP_EXTRACT(dimension,"([^,]+)")
Эти формулы не учитывают многочисленные экземпляры городов, поскольку они не извлекают значения в позициях 1, 2, 3 и т.д. c.
Набор данных в этом случае огромен, и в каждом массиве могут быть десятки городов, поэтому разделение поля в источнике данных не идеально.
Кто-нибудь знает формулу REGEX, которая извлечет все значения в каждом массиве?