#sql #regex #url #parameters #google-bigquery
#sql #регулярное выражение #url #параметры #google-bigquery
Вопрос:
Мне нужно использовать REGEXP_EXTRACT для различных URL-адресов, которые у меня есть в BigQuery, и извлекать из них разные строки.
Для exmaple у меня есть этот URL:
url = https://www.whatever.com/record-a-beautiful-and-professional-voice-over?sec_context=recommendationamp;context_alg=nodesamp;sec_context_referrer=search
Я хочу использовать функцию BigQuery REGEXP_EXTRACT
и извлечь строку, которая идет после имени параметра context_alg=
(представленного после первого amp;
в URL). Значение — мой вывод будет nodes
.
( context_alg
является параметром в URL и всегда имеет одно и то же имя)
Так что на самом деле мне нужно использовать что-то вроде:
REGEXP_EXTRACT(url, "REGEXP that bring back 'nodes')
Спасибо!
Комментарии:
1. ваш вопрос недостаточно ясен… пожалуйста, уточните с правильным вводом и точным выводом, который вы хотите… если вы не можете лучше объяснить, тогда укажите два набора входных данных и два набора выходных данных соответственно
Ответ №1:
Если вам нужно извлечь все параметры из URL-адреса, вы также можете использовать REGEXP_EXTRACT_ALL следующим образом:
REGEXP_EXTRACT_ALL(query,r'(?:?|amp;)((?:[^=] )=(?:[^amp;]*))') as params
Это вернет результат в виде массива (см. Как извлечь параметры URL в виде МАССИВА в Google BigQuery):
Комментарии:
1. Большое спасибо за то, что поделились этим кодом. просто добавляю одну вещь, чтобы сэкономить время ppl: если вы хотите получить значение определенного параметра,. используйте это регулярное выражение
r'(?:?|amp;)(?:(?:[myparameter=] )=([^amp;]*))'
Ответ №2:
попробуйте использовать BigQuery ниже
REGEXP_EXTRACT(url, r'context_alg=([^?amp;#]*)')