Forum Discussion
Declaración SQL a DAX
- 5 years ago
@scheri Ok, pude hacer las dos segundas tablas, pero tienen que ser todas tablas DAX separadas, no en una como yo estaba tratando de hacer.
PASO 2 ?
COLUMNAS DE RESUMEN (
CURRENT_SRC[RPT_PRD_END_DT],
CURRENT_SRC[BRWR_RPT_RIC_SMY_DSC],
FILTRO ( CURRENT_SRC, CURRENT_SRC[MTH_CTGRY] á "M" ),
"WAPD_PCT",
SI (
SUM ( CURRENT_SRC[WAPD_DEN] ) a 0,
BLANK (),
DIVIDE ( SUM ( CURRENT_SRC[WAPD_NUM] ), SUM ( CURRENT_SRC[WAPD_DEN] ) )
)
)AVGTABLE ?
COLUMNAS DE RESUMEN (
STEP2[BRWR_RPT_RIC_SMY_DSC],
"WAPD_PCT", PROMEDIO ( STEP2[WAPD_PCT] )
)Y para @AllisonKennedy, puede que no sea la mejor manera de hacer el trabajo. El objetivo final que está buscando es ese promedio por BRWR_DSC de la WAPD_PCT que RPT_PRD_END_DT da. Esto se puede hacer en una sola medida (utilicé M porque no había Q en la tabla de muestras):
Promedio de WAPD_PCT por BRWR_DSC
AVERAGEX (
VALUES ( CURRENT_SRC[BRWR_RPT_RIC_SMY_DSC] ),
AVERAGEX (
CALCULATETABLE (
VALUES ( CURRENT_SRC[RPT_PRD_END_DT] ),
CURRENT_SRC[MTH_CTGRY] á "M"
),
DIVIDE (
ROUND ( SUM ( CURRENT_SRC[WAPD_NUM] ), 2 ),
ROUND ( SUM ( CURRENT_SRC[WAPD_DEN] ), 2 ),
BLANK ()
)
)
)Por favor, eche un vistazo al PBIX adjunto.
@DataZoe Aquí tienes, Paso 1 al Paso 3, con datos y consulta.
(Estas consultas forman parte de SP; Puedo crear vistas y obtener el promedio, pero no quería crear objetos adicionales en DB). Otra pregunta :-), para la primera consulta, ¿Hay alguna manera de reemplazar la fecha con una fecha de segmentación de entrada en powerbi(Algo como: rpt_prd_end_dt entre ('SlicerRptDt'[InputRptDt], -61) y ('SlicerRptDt'[InputRptDt])? (El informe se basa en una lista desplegable de fechas, elegida por el usuario)
¡Gracias de nuevo!
1) 20 filas de la siguiente consulta:
SELECCIONAR TOP 20 RPT_PRD_END_DT , MTH_CTGRY ,BRWR_RPT_RIC_SMY_DSC ,WAPD_NUM ,WAPD_DEN
INTO #CURRENT_SRC FROM (SELECCIONESELECT RPT_PRD_END_DT , MTH_CTGRY , BRWR_RPT_RIC_SMY_DSC , BRWR_RPT_RIC_DTL_DSC ,ROUND(WAPD_NUM, 2) COMO WAPD_NUM ,ROUND(WAPD_DEN, 2) COMO WAPD_DEN DESDE [ENT_RSK]. [RECESSION_INDUSTRY_SUMMARY] DONDE 1 X 1 Y RPT_PRD_END_DT ENTRE EOMONTH('30-APR-2020', - 61)Y '30-APR-2020' Y ESR_LNDG_TXN_FLG 1)kk =
| RPT_PRD_END_DT | MTH_CTGRY | BRWR_RPT_RIC_SMY_DSC | WAPD_NUM | WAPD_DEN |
| 31/03/2015 | M | Fabricación | 315731.1 | 162958710.2 |
| 31/03/2015 | M | Minería | 303984 | 379980000 |
| 31/03/2015 | M | ACEITE & GAS | 39770074.7 | 6332894227 |
| 31/03/2015 | M | ACEITE & GAS | 114025.12 | 142531403.6 |
| 31/03/2015 | M | ACEITE & GAS | 2114000.11 | 1731537396 |
| 31/03/2015 | M | Otro | 790821.64 | 88329256.89 |
| 31/03/2015 | M | Transporte | 335947.26 | 239962325.2 |
| 31/03/2015 | M | Utilidades | 678448.5 | 199997000 |
| 31/03/2015 | M | Utilidades | 1562312.21 | 1055446037 |
| 31/03/2015 | M | COMERCIO AL POR MAYOR | 363199.09 | 30266590.99 |
| 31/03/2015 | M | Fabricación | 1049312.84 | 512614355.1 |
| 31/03/2015 | M | ACEITE & GAS | 289164.78 | 24097065 |
| 31/03/2015 | M | ACEITE & GAS | 363572.12 | 454465152.6 |
| 31/03/2015 | M | Otro | 31393.16 | 3496545.68 |
| 31/03/2015 | M | Utilidades | 6101.76 | 2652941.17 |
| 31/03/2015 | M | Utilidades | 50561.08 | 21983077.7 |
| 31/03/2015 | M | COMERCIO AL POR MAYOR | 161248.07 | 13437339.33 |
| 31/03/2015 | M | PRODUCTOS FOREST | 38896.53 | 8643672.3 |
| 31/03/2015 | M | Fabricación | 1905.12 | 2381400.52 |
| 31/03/2015 | M | Otro | 250355.26 | 20862938.65 |
Paso 2) Calcular la suma (wapd_num) / suma (wapd_den):
SELECCIONAR RPT_PRD_END_DT ,BRWR_RPT_RIC_SMY_DSC ,CASO CUANDO SUMA(WAPD_den) - 0 A CONTINUACIÓN, NULL ELSE SUM(WAPD_NUM) / SUM(WAPD_den) END AS WAPD_PCT INTO #STEP2 DESDE #CURRENT_SRC GRUPO POR RPT_PRD_END_DT , BRWR_RPT_RIC_SMY_DSC
| RPT_PRD_END_DT | BRWR_RPT_RIC_SMY_DSC | WAPD_PCT |
| 31/03/2015 | PRODUCTOS FOREST | 0.0045 |
| 31/03/2015 | Fabricación | 0.002016 |
| 31/03/2015 | Minería | 0.0008 |
| 31/03/2015 | ACEITE & GAS | 0.00491 |
| 31/03/2015 | Otro | 0.009517 |
| 31/03/2015 | Transporte | 0.0014 |
| 31/03/2015 | Utilidades | 0.001794 |
| 31/03/2015 | COMERCIO AL POR MAYOR | 0.011999 |
Paso 3) Calcular el promedio para cada industria:
SELECCIONAR BRWR_RPT_RIC_SMY_DSC , ,AVG(WAPD_PCT)COMO LONG_RUN_WAPD_PCT DE #STEP2 GRUPOPOR BRWR_RPT_RIC_SMY_DSC
| BRWR_RPT_RIC_SMY_DSC | LONG_RUN_WAPD_PCT |
| PRODUCTOS FOREST | 0.0045 |
| Fabricación | 0.002016 |
| Minería | 0.0008 |
| ACEITE & GAS | 0.00491 |
| Otro | 0.009517 |
| Transporte | 0.0014 |
| Utilidades | 0.001794 |
| COMERCIO AL POR MAYOR | 0.011999 |
@scheri Ok, pude hacer las dos segundas tablas, pero tienen que ser todas tablas DAX separadas, no en una como yo estaba tratando de hacer.
COLUMNAS DE RESUMEN (
CURRENT_SRC[RPT_PRD_END_DT],
CURRENT_SRC[BRWR_RPT_RIC_SMY_DSC],
FILTRO ( CURRENT_SRC, CURRENT_SRC[MTH_CTGRY] á "M" ),
"WAPD_PCT",
SI (
SUM ( CURRENT_SRC[WAPD_DEN] ) a 0,
BLANK (),
DIVIDE ( SUM ( CURRENT_SRC[WAPD_NUM] ), SUM ( CURRENT_SRC[WAPD_DEN] ) )
)
)
COLUMNAS DE RESUMEN (
STEP2[BRWR_RPT_RIC_SMY_DSC],
"WAPD_PCT", PROMEDIO ( STEP2[WAPD_PCT] )
)
Y para @AllisonKennedy, puede que no sea la mejor manera de hacer el trabajo. El objetivo final que está buscando es ese promedio por BRWR_DSC de la WAPD_PCT que RPT_PRD_END_DT da. Esto se puede hacer en una sola medida (utilicé M porque no había Q en la tabla de muestras):
AVERAGEX (
VALUES ( CURRENT_SRC[BRWR_RPT_RIC_SMY_DSC] ),
AVERAGEX (
CALCULATETABLE (
VALUES ( CURRENT_SRC[RPT_PRD_END_DT] ),
CURRENT_SRC[MTH_CTGRY] á "M"
),
DIVIDE (
ROUND ( SUM ( CURRENT_SRC[WAPD_NUM] ), 2 ),
ROUND ( SUM ( CURRENT_SRC[WAPD_DEN] ), 2 ),
BLANK ()
)
)
)
Por favor, eche un vistazo al PBIX adjunto.
- Anonymous5 years agoNot applicable