BigQuery REGEXP_EXTRACT из URL — извлечь значения параметров

#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;#]*)')