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.

Problema: El procedimiento almacenado de Bigquery no filtra adecuadamente.

Pregunta

Estoy intentando usar un procedimiento almacenado para obtener algunos datos de mis clientes filtrando una tabla por fecha y canal de compra en una consulta que se ve algo así:

CREATE OR REPLACE PROCEDURE `sandbox.clients.dateandchannel`
    (IN DT DATE, 
     IN CH STRING)
BEGIN
    SELECT 
        client_id,
        purchase_id,
        purchase_date,
        channel
    FROM 
        `trusted-zone.clients_purchases`
    WHERE 
        channel = CH
        AND purchase_date = DT;
END

Después de ejecutar el procedimiento, uso la siguiente llamada:

CALL `sandbox.clients.dateandchannel`('2021-09-11','Ecommerce');

La llamada se ejecuta y devuelve una tabla, pero el resultado nunca se filtra.

Las fechas no corresponden a '2021-09-11' y el canal no corresponde a 'Ecommerce'

No entiendo si es un problema con la consulta, o si estoy haciendo algo conceptualmente incorrecto, pero me encantaría si alguien tuviera una idea de por qué está sucediendo esto.

También el siguiente paso para mí sería extraer la tabla resultante a una tabla temporal o similar para utilizar este resultado en otros pasos de múltiples consultas. Dentro de un with, por ejemplo.

Gracias de antemano

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    ¡Hola! Parece que tienes problemas para obtener los resultados correctos de tu procedimiento almacenado. Es posible que haya un problema con la consulta en sí misma o que te falte algo conceptualmente.

    Si estás buscando extraer la tabla resultante a una tabla temporal, puedes utilizar la sentencia CREATE TEMPORARY TABLE. Por ejemplo:

    CREATE TEMPORARY TABLE temp_table AS
        SELECT 
            client_id,
            purchase_id,
            purchase_date,
            channel
        FROM 
            `trusted-zone.clients_purchases`
        WHERE 
            channel = CH
            AND purchase_date = DT;
    

    Luego puedes utilizar la tabla temporal temp_table en otras consultas.

    Si sigues teniendo problemas para obtener los resultados correctos de tu procedimiento almacenado, proporcione más información sobre la consulta y los datos con los que estás trabajando.

Comments are closed.