es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , ,

Answer

  1. Avatar for 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ámetro top_ids. Aquí tienes un ejemplo de consulta que utiliza este enfoque:

    SELECT regexp_substr(url, 'top_ids=([0-9]+)', 1, 1, 'i') as id
    FROM my_table
    WHERE url LIKE '%top_ids%';
    

    En esta consulta, utilizamos la expresión regular 'top_ids=([0-9]+)' para capturar el valor del parámetro top_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ón i 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 columna url de la tabla my_table.

    Finalmente, agregamos una cláusula WHERE para filtrar las filas donde la URL no contiene el parámetro top_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.

Comments are closed.