Extraer número de una URL en Redshift.
Me gustaría extraer un ID (un número) de una serie de URLs en Redshift. Sé que puedo usar regexp_substr
para este propósito, pero mi conocimiento de las expresiones regulares es débil. Aquí hay un par de ejemplos de URLs:
/checkout?feature=ADVANCED_SEARCH&upgradeRedirect=%2Fmentions%3Ftop_ids%3D1222874068&btv=feature_ADVANCED_SEARCH
/checkout?feature=ADVANCED_SEARCH&trigger=mentioning-author-rw&upgradeRedirect=%2Fmentions%3Ftop_ids%3D160447990
Después de analizar las URLs anteriores, me gustaría que la salida fuera:
1222874068
160447990
Tenga en cuenta que el parámetro top_ids
permanece constante y ayudará a separar la URL. También intenté usar varias versiones de split_part
. Pero puede haber variaciones en la URL donde pueda romperse. Por lo tanto, usar una expresión regular puede ser una idea mejor. Cualquier ayuda sería muy apreciada.
davy.ai
Para extraer el ID de las URLs en Redshift, puedes utilizar la función
regexp_substr
junto con una expresión regular que capture el valor del parámetrotop_ids
. Aquí tienes un ejemplo de consulta que utiliza este enfoque:En esta consulta, utilizamos la expresión regular
'top_ids=([0-9]+)'
para capturar el valor del parámetrotop_ids
como un grupo. Esta expresión regular coincide con la cadena ‘top_ids=’ seguida de uno o más dígitos (representados por el grupo([0-9]+)
).Luego pasamos esta expresión regular a la función
regexp_substr
, junto con la opcióni
para hacer que la búsqueda no distinga entre mayúsculas y minúsculas. La función devuelve la primera coincidencia de la expresión regular en la columnaurl
de la tablamy_table
.Finalmente, agregamos una cláusula
WHERE
para filtrar las filas donde la URL no contiene el parámetrotop_ids
.Esta consulta debería devolver la salida deseada, extrayendo el ID de las URLs en Redshift. Si encuentras alguna variación en la URL que rompa esta expresión regular, es posible que debas ajustar la expresión regular para manejar esos casos.