Forum Discussion
Caso SQL anidado
Hola
Así que tengo algo de lógica en diferentes lugares, y estoy tratando de traerla en una instrucción case en SQL. Esto es un poco nuevo para mí, pero pensé que esto puede ser óptimo en comparación con tener un montón de columnas calculadas.
A continuación se muestra un ejemplo de mi consulta actual:
Seleccione
pos.quantity_on_hand,
d.cal_date,
Caso
cuando date_key(Seleccione max(date_key) de edw. D_dates grupo por fiscal_year_nbr, fiscal_week_nbr)
entonces 'Y'
else 'N'
fin Week_end_flag
De
edw.f_pos_daily pos,
edw.d_dates d,
Dónde
pos.pos_date_key á d.date_key
El "problema", es que necesito usar estas "marcas" que he definido a continuación y creo una columna en Power BI que devuelve el d.cal_date MAX de edw.d_dates donde el indicador es una "Y".
Esto es lo que utilicé para el cálculo de mi columna:
Last Inventory Date ? RETURN(CALCULATE(MAXX(Inventory, Inventory[Cal_date]), filter ('D_Dates', 'D_Dates'[Week_end_flag]-"Y")).
Una vez más, estoy buscando una manera de combinar estos juntos. No necesariamente necesito el Week_End_Flag como una columna. Es la última cita que realmente me importa.
Para visualizarlo, la columna D es lo que voy a buscar aquí:
| Cantidad disponible | Cal_Date | Bandera | Fecha del último inventario |
| 350 | 1/18/2021 | N | 1/21/2021 |
| 335 | 1/19/2021 | N | 1/21/2021 |
| 320 | 1/20/2021 | N | 1/21/2021 |
| 400 | 1/21/2021 | Y | 1/21/2021 |
| 380 | 1/22/2021 | N | 1/21/2021 |
| 370 | 1/23/2021 | N | 1/21/2021 |
¡Tia!
¡Muchas gracias por su respuesta Tom!
Por lo tanto, estoy utilizando una importación para extraer los datos de una base de datos de Oracle.
Puede considerar que los datos se organizan en dos importaciones de datos.
1. Una es una tabla de inventario que contiene cantidad, nombre de cliente, número de artículo y número de tienda.
2. También tengo una tabla de fechas que estoy tirando. Donde se pone un poco complejo es que estoy buscando datos para 7 clientes diferentes que todos tienen su propio año calendario / semanas. Esto se llama en la tabla de fechas, por ejemplo, hay una columna que indica "Año fiscal de Walmart, Semana Fiscal de Walmart".
Así que inicialmente, creé esas banderas en mi tabla de fechas (una para cada cliente) para marcar su fin de semana con una "Y". A continuación, creé una columna en Power BI en la tabla de inventario para devolver la fecha máxima que tiene una marca (y tiene datos de inventario). Así que esto esencialmente me daría la fecha máxima (menos que la fecha de hoy) que tiene una bandera "Y".
Al final, estoy después de esta pregunta: "¿Cuál es el inventario actual para este cliente?" Por lo tanto, para llegar aquí, creé una columna calculada que suma la cantidad disponible para esa última fecha de inventario.
Una vez más, todo esto funciona bien, pero siento que son tantos pasos, y tal vez hay una manera de eliminar algunos de ellos para hacer que mi informe se ejecute un poco más eficientemente.
Futuro, también me gustaría poder ver el inventario de la misma semana fiscal del cliente para el año pasado. Pero aún no estoy listo para abordar esto. 😉
2 Replies
- Syndicate_Admin
Administrator
Hey @ldunbarmtd ,
Tengo que admitir que no entiendo lo que quiere crear, por favor puede aclarar esto.
Mi pregunta es acerca de la naturaleza del conjunto de datos de Power BI, si se conecta a los datos de origen subyacentes mediante una consulta directa o se van a importar datos de los datos de origen.
No entiendo por qué, usted quiere / tiene que brig la lógica a la declaración SQL
Suponiendo que va a importar los datos, puede crear una tabla de calendario dedicada dentro del modelo de datos de Power BI.
Dentro de esta tabla puede crear columnas que contengan los valores para la fecha de inicio y la fecha de finalización de una semana, esto se describe aquí: Resuelto: Re: Semana que comienza en DAX - Comunidad de Microsoft Power BI
Después de establecer una relación entre la tabla de calendario y la tabla de hechos, puede crear fácilmente la columna Week_End_Flag mediante un DAX como este
Week_End_Flag - RELACIONADO( 'Calendario'[EoWDate].Para ser honesto en el momento actual, no puedo decir si el DAX crea una columna calculada o se usa para calcular una columna virtual dentro de una medida más compleja.
Esto se debe a que no entiendo la naturaleza/significado de Last la /relación de las tablas utilizadas para la instrucción final.
Tal vez quieras aclarar esto.
Tal vez en este artículo Diseñar un modelo de datos en Power BI - Aprender | Microsoft Docs le ayudará a decidir finalmente si derriba la instrucción DAX a la instrucción SQL o al revés.
saludos
Tom
- Syndicate_Admin
Administrator
¡Muchas gracias por su respuesta Tom!
Por lo tanto, estoy utilizando una importación para extraer los datos de una base de datos de Oracle.
Puede considerar que los datos se organizan en dos importaciones de datos.
1. Una es una tabla de inventario que contiene cantidad, nombre de cliente, número de artículo y número de tienda.
2. También tengo una tabla de fechas que estoy tirando. Donde se pone un poco complejo es que estoy buscando datos para 7 clientes diferentes que todos tienen su propio año calendario / semanas. Esto se llama en la tabla de fechas, por ejemplo, hay una columna que indica "Año fiscal de Walmart, Semana Fiscal de Walmart".
Así que inicialmente, creé esas banderas en mi tabla de fechas (una para cada cliente) para marcar su fin de semana con una "Y". A continuación, creé una columna en Power BI en la tabla de inventario para devolver la fecha máxima que tiene una marca (y tiene datos de inventario). Así que esto esencialmente me daría la fecha máxima (menos que la fecha de hoy) que tiene una bandera "Y".
Al final, estoy después de esta pregunta: "¿Cuál es el inventario actual para este cliente?" Por lo tanto, para llegar aquí, creé una columna calculada que suma la cantidad disponible para esa última fecha de inventario.
Una vez más, todo esto funciona bien, pero siento que son tantos pasos, y tal vez hay una manera de eliminar algunos de ellos para hacer que mi informe se ejecute un poco más eficientemente.
Futuro, también me gustaría poder ver el inventario de la misma semana fiscal del cliente para el año pasado. Pero aún no estoy listo para abordar esto. 😉