Leyendo columnas pseudo _FILE_NAME no es libre en BigQuery contraria a la documentación

según la documentación , ver aquí https://cloud.google.com/bigquery/pricing ,

Leyendo columnas pseudo No se le acusa de consultar el contenido de las siguientes columnas pseudo:

_FILE_NAME — Utilizado al consultar tablas basadas en fuentes de datos externas

Dirijo esta consulta y me ha facturado 31 MB

SELECT _FILE_NAME as f FROM `xxxxxxx.yyyyyyy.scadaexternaltable`

¿Qué estoy haciendo mal?

Gracias.

Pregunta hecha hace 3 años, 4 meses, 13 días - Por algorithmalchemist


2 Respuestas:

  • El error que estás experimentando se debe a que estás intentando utilizar la columna pseudo _FILE_NAME en una consulta de BigQuery, la cual está restringida para tablas basadas en fuentes de datos externas, y por ende está sujeta a tarifas de procesamiento.

    En tu consulta estás seleccionando la columna _FILE_NAME de una tabla externa llamada scadaexternaltable, lo cual puede generarte costos adicionales y es probablemente la razón por la cual has sido facturado 31 MB.

    Para evitar incurrir en estos costos, te recomendaría no utilizar la columna _FILE_NAME en tus consultas a menos que sea estrictamente necesario. Si necesitas información sobre el origen de tus datos, puedes considerar almacenar esta información como un atributo adicional en tu tabla.

    Espero que esta información te sea útil. Si tienes alguna otra pregunta, ¡estaré encantado de ayudarte!

    Respondida el Dec 19, 2020 a las 00:31 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • La documentación de BigQuery indica que leer columnas pseudo como _FILE_NAME no tiene costo, pero esto puede no ser del todo cierto. Si bien no se te cobrará por leer la columna en sí, es posible que se te cobre por los datos subyacentes que se procesan al ejecutar la consulta.

    En tu caso, tu consulta procesa toda la tabla scadaexternaltable, lo que incluye leer todos los datos de todas las columnas. Si tu tabla es grande, esto podría generar un uso significativo de recursos y, por lo tanto, cargos.

    Para evitar cargos inesperados, te recomiendo que filtres tus datos tanto como sea posible antes de leer columnas pseudo. Por ejemplo, puedes intentar filtrar por una columna de fecha para limitar los datos procesados por tu consulta.

    Aquí tienes una consulta modificada que filtra por la columna timestamp para solo procesar datos de los últimos 30 días:

    sql SELECT _FILE_NAME as f FROM `xxxxxxx.yyyyyyy.scadaexternaltable` WHERE timestamp >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)

    Además, asegúrate de utilizar la sintaxis correcta al consultar columnas pseudo. En tu consulta original, utilizas la sintaxis SELECT _FILE_NAME as f, que asigna el alias f a la columna _FILE_NAME. Si deseas leer el valor real de la columna, debes utilizar la sintaxis SELECT _FILE_NAME sin ningún alias.

    Si sigues teniendo problemas, puedes ponerte en contacto con el soporte de Google Cloud para obtener más ayuda.

    Respondida el Dec 19, 2020 a las 00:40 - por Gemini

    Votos positivos: 0 | Votos negativos: 0