2012-06-15 20 views
9

¿Hay alguna forma de obtener el número de fila para cada registro en BigQuery? (De las especificaciones, no he visto nada al respecto) Hay una función NTH(), pero eso se aplica a los campos repetidos.¿Número de fila en BigQuery?

Existen algunos casos en los que el número de fila no es necesario en BigQuery, como el uso de la función TOP() o LIMIT. Sin embargo, necesito simular algunas funciones analíticas, como una suma acumulativa(). Para ese propósito, necesito identificar cada registro con un número secuencial. ¿Alguna solución en esto?

Gracias de antemano por su ayuda!

Leo

Respuesta

0

No mostramos un identificador de fila. ¿Puedes simplemente agregar uno a tus datos cuando lo importes?

+0

Gracias por su respuesta Ryan. Incluso si pudiéramos importar el identificador de fila en nuestras importaciones, no sería útil ya que necesitamos el número de fila después de aplicar una función de grupo sobre los datos originales. –

+0

¿Está buscando una fila de resultados #, no una fila que representa cada fila de los datos subyacentes? –

+1

Agregar un _row id_ al agregar datos a una tabla no suena práctico .... – user454322

0

Pensé que tal vez podría evitar la falta de una función ROW_NUMBER() al unirme a una tabla en un < = y luego hacer un recuento (*) en los resultados (que es cómo lo haces a veces en MySQL) Resulta que BigQuery solo admite combinaciones en "=" directo.

Foiled again. Creo que esto es imposible en BQ.

19

Buenas noticias: BigQuery ahora tiene una función row_number.

ejemplo simple:

SELECT [field], ROW_NUMBER() OVER() 
FROM [table] 
GROUP BY [field] 

más compleja, ejemplo de trabajo:

SELECT 
    ROW_NUMBER() OVER() row_number, 
    contributor_username, 
    count, 
FROM (
    SELECT contributor_username, COUNT(*) count, 
    FROM [publicdata:samples.wikipedia] 
    GROUP BY contributor_username 
    ORDER BY COUNT DESC 
    LIMIT 5) 
+0

Agregado como una función de ventana: https://cloud.google.com/bigquery/query-reference –

+0

¿Cómo filtramos eso? ROW_NUMBER columna? (es decir, ROW_NUMBER()> 10, etc.) – Praxiteles

+0

Sub consulta. Por favor, publique una nueva pregunta para una respuesta completa, si es necesario. –

Cuestiones relacionadas