vacuesta
Hola. Necesito ayuda para que los usuarios puedan ingresar un valor a través de un parámetro de fecha (es decir, ‘Mes anterior’, ‘Trimestre anterior’, ‘Año hasta la fecha’, ‘3 meses anteriores’, etc.).
Ahora mismo tengo el código:
let
Source = MySQL.Database("206.197.200.161:7706", "master_dev", [ReturnSingleDatabase=true, Query="select hourly_if_util.collection_time, dev.roa_id,org.company,dev.device,dev.ip,tagname.tag_name,dev.active,hourly_if_util.if_id,hourly_if_util.did,tags.tag_id,hourly_if_util.avg_d_perc_in,hourly_if_util.avg_d_perc_out,hourly_if_util.avg_d_perc_in + hourly_if_util.avg_d_perc_out as avg_d_perc_inout,hourly_if_util.max_d_perc_in,hourly_if_util.max_d_perc_out,hourly_if_util.max_d_perc_in + hourly_if_util.max_d_perc_out as max_d_perc_inout,interface.if_id as iftbl_if_id,tags.tag_id,tagname.tag_name,interface.did,interface.roa_id,interface.ifIndex,interface.ifPhysAddress,interface.ifType,interface.ifSpeed,interface.ifHighSpeed,interface.ifDescr,interface.alias,interface.name,interface.ifOperStatus,interface.ifAdminStatus,interface.ifConnectorPresent,interface.ifLastChange#(lf) from master_dev.device_interfaces interface #(lf) left join master_dev.device_interface_tags_map tags ON (interface.if_id = tags.if_id)#(lf) left join master_dev.device_interface_tags tagname ON (tags.tag_id = tagname.tag_id)#(lf) left join data_ifutil.normalized_hourly hourly_if_util ON (hourly_if_util.if_id = interface.if_id)#(lf) JOIN master_dev.legend_device dev ON (dev.id = interface.did)#(lf) JOIN master_biz.organizations org ON (dev.roa_id = org.roa_id)#(lf)#(tab)#(lf) where org.company IN ('"&company_pick&"') AND tagname.tag_name in ('"&tag_pick&"') AND hourly_if_util.collection_time>= '"&date_start&" 00:00:00' and hourly_if_util.collection_time<='"&date_end&" 23:00:00'#(lf)#(lf) "])
in
Source
Si observa las filas inferiores del código, hay parámetros que pasé llamados: &date_start& y &date_end&. Actualmente, esto permite a los usuarios ingresar un rango de fechas (es decir, ‘2019-11-01’ y ‘2019-11-30’) después de abrir el archivo .pbit.
Esta es una captura de pantalla de lo que los usuarios pueden ingresar en el momento en que abren el archivo .pbit para que los valores de los parámetros pasen a través de la consulta:
¿Hay alguna manera de crear funcionalidad para un parámetro en el que los usuarios puedan pasar valores en un parámetro de fecha como ‘Mes anterior’, Trimestre anterior’, ‘3 meses anteriores’, etc.? Parece que se necesita hacer mucha funcionalidad de antemano.
¿Cómo crearía un parámetro donde los usuarios puedan pasar dichos valores a través de esta consulta MYSQL?
Por favor hagamelo saber.
v-juanli-msft
En respuesta a vacuesta
Hola @vacuesta
Según lo probado, es posible de mi lado.
Pruebo con la base de datos de SQL Server, creo código en el editor avanzado como se muestra a continuación.
let
Source =
if Parameter1="previous month"
then
let
Source1 = Sql.Database("WS-maggiel-02", "power bi test", [Query="select * from ss where DATEPART(m, [date]) = DATEPART(m, DATEADD(m, -1, getdate()))#(lf)AND DATEPART(yyyy, [date]) = DATEPART(yyyy, DATEADD(m, -1, getdate()))"])
in
Source1
else
if Parameter1="previous quarter"
then let
Source2 = Sql.Database("WS-maggiel-02", "power bi test", [Query="select * from ss where DATEPART(q, [date]) = DATEPART(q, DATEADD(q, -1, getdate()))#(lf)AND DATEPART(yyyy, [date]) = DATEPART(yyyy, DATEADD(q, -1, getdate()))"])
in
Source2
else
let
Source3 = Sql.Database("WS-maggiel-02", "power bi test", [Query="select * from ss"])
in
Source3
in
Source
Atentamente
Maggie
Equipo de apoyo comunitario _ Maggie Li
Si esta publicación le ayuda, considere aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
v-juanli-msft
Hola @vacuesta
Por ejemplo, quiero mostrar datos de los 9 años anteriores (de 2011 a 2019),
Cree un parámetro para «año», ingrese 1,2,,,,11 como su valor,
Modificar mi código en el editor avanzado,
ss=Table.SelectRows(#"Added Custom",each [as_of_date]>=#date(Date.Year(DateTime.LocalNow())-#"previous year",1,1))
una vez que selecciono el parámetro «año» como 9, la tabla se muestra a continuación
Con el conjunto de parámetros de consulta, podríamos reducir los datos importados en Power BI Desktop, lo que puede mejorar el rendimiento del informe.
Pero si desea filtrar datos para verlos o analizarlos, puede crear medidas y usar segmentaciones para controlar los valores que se muestran en las tablas.
Podrías usar «Cortador relativo».
Además, hay algunos hilos a los que podrías referirte:
https://carldesouza.com/creating-a-power-bi-chart-comparing-each-year-vs-previous-year/
https://community.powerbi.com/t5/Desktop/Showing-Previous-Month-and-Week-Data/td-p/627808
Atentamente
Maggie
Equipo de apoyo comunitario _ Maggie Li
Si esta publicación le ayuda, considere aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
vacuesta
En respuesta a v-juanli-msft
Hola. Esto no es necesariamente lo que quiero hacer. Quería saber si había alguna forma de que los usuarios finales pasaran un valor de parámetro como «Mes anterior» o «Trimestre anterior» a través del código de consulta mysql que tengo en mi pregunta.
¿Hay alguna forma de hacer esto?
v-juanli-msft
En respuesta a vacuesta
Hola @vacuesta
Según lo probado, es posible de mi lado.
Pruebo con la base de datos de SQL Server, creo código en el editor avanzado como se muestra a continuación.
let
Source =
if Parameter1="previous month"
then
let
Source1 = Sql.Database("WS-maggiel-02", "power bi test", [Query="select * from ss where DATEPART(m, [date]) = DATEPART(m, DATEADD(m, -1, getdate()))#(lf)AND DATEPART(yyyy, [date]) = DATEPART(yyyy, DATEADD(m, -1, getdate()))"])
in
Source1
else
if Parameter1="previous quarter"
then let
Source2 = Sql.Database("WS-maggiel-02", "power bi test", [Query="select * from ss where DATEPART(q, [date]) = DATEPART(q, DATEADD(q, -1, getdate()))#(lf)AND DATEPART(yyyy, [date]) = DATEPART(yyyy, DATEADD(q, -1, getdate()))"])
in
Source2
else
let
Source3 = Sql.Database("WS-maggiel-02", "power bi test", [Query="select * from ss"])
in
Source3
in
Source
Atentamente
Maggie
Equipo de apoyo comunitario _ Maggie Li
Si esta publicación le ayuda, considere aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
vacuesta
En respuesta a v-juanli-msft
Como pregunta de seguimiento. Quería saber cuál era el nombre del servidor y el nombre de la base de datos a los que puedo conectarme para obtener estos datos.
vacuesta
En respuesta a v-juanli-msft
Tengo una pregunta de aclaración. En el código que usaste esta línea
Source1 = Sql.Database("WS-maggiel-02"
¿Es esta una base de datos a la que puedo acceder?
Por favor hagamelo saber. Gracias.
v-juanli-msft
En respuesta a vacuesta
Hola @vacuesta
Este es el nombre del servidor de mi base de datos (SQL Server), no puede acceder a eso.
Cambie la consulta de conexión con su base de datos (MySQL).
Atentamente
Maggie