Parametro en consulta nativa Fechas

  • Christian

    Estimados estoy tratando de asignar un parámetro dentro de la consulta de SQL en power BI, para que filtre por rango de fechas a definir como parametro:
    Encontré como hacerlo para poner como parámetro un campo texto (Uso de parámetros en consulta SQL nativa - Power Bi University 4 pero para fechas no lo encuentro.

    Por favor si me pueden ayudar

  • MaruSolis

    Hola Christian:

    Veo dos posibles opciones:

    1.- La primera es utilizar la funcion Value.NativeQuery() donde guarda la consulta como se ve en SQL y variables con los datos de búsqueda, en este link se explica más a detalle Chris Webb's BI Blog: Passing Parameters To SQL Queries With Value.NativeQuery() In Power Query And Power BI Chris Webb's BI Blog

    2.- Probar con la función Date.FromText() que funciona de manera similar a Text.From , para conocer la sintaxis y uso lo puedes revisar en esta documentación Date.FromText - PowerQuery M | Microsoft Docs

    Espero te sea de utilidad.

    Saludos

    Christian

    Gracias MaruSolis, si lo intente pero me sale un error, en M y me sale este error:

    DataSource.Error: ODBC: ERROR [HY000] [Oracle][ODBC][Ora]ORA-00933: SQL command not properly ended

    Esta es la consulta en M y en amarillo lo que reemplace

    let
    Origen = Odbc.Query(“dsn=1CONCLINA”, “–Busqueda Cargos Duplicados#(lf)select a.fk_paciente,a.fk_admision,a.fk_paciente||’-’||a.fk_admision Clave,fun_busca_nombre_pte(a.fk_paciente) Nombre_paciente,a.fecha,#(lf)b.fk_arinda_no_arti,da.descripcion Desc_Articulo,b.pk_fk_arinvtm_tipo_m,count()#(lf)from ccp_transacciones a,ccp_detalles_transaccion b,ARINDA da#(lf)where a.pk_numero_transaccion = b.pk_fk_transaccion #(lf)and trunc(a.fecha) = to_date Date.FromText(FechaAnalisisDuplicados)#(lf)and a.pk_fk_arinvtm_tipo_m = b.pk_fk_arinvtm_tipo_m#(lf)and b.fk_arinda_no_arti = da.no_arti#(lf)and b.pk_fk_arinvtm_tipo_m = ‘SC’#(lf)and a.fk_paciente not in (76391901,4582701,47030801,83427701,47774401,76274801,72363701,83473701,83970401,75793501#(lf))#(lf)group by a.fk_paciente,a.fk_admision,fun_busca_nombre_pte(a.fk_paciente),a.fecha,b.fk_arinda_no_arti,da.descripcion,b.pk_fk_arinvtm_tipo_m #(lf)having count()>1”),
    #“Tipo cambiado” = Table.TransformColumnTypes(Origen,{{“FECHA”, type date}, {“FK_PACIENTE”, type text}})
    in
    #“Tipo cambiado”

    Esta es la consulta nativa sin modificar

    let
    Origen = Odbc.Query(“dsn=1CONCLINA”, “–Busqueda Cargos DuplicadosPrefacturas#(lf)select #(lf)pf.fk_paciente,pf.fk_admision,pf.fk_paciente||’-’||pf.fk_admision Clave,#(lf)fun_busca_nombre_pte(pf.fk_paciente) Nombre_paciente,pf.fecha_real,#(lf)dpf.no_arti,da.descripcion Desc_Articulo,dpf.arinvtm_tipo_m#(lf),count()#(lf)from ccf_prefacturas pf,ccf_detalles_prefactura dpf,ARINDA da#(lf)where pf.pk_numero_prefactura = dpf.pk_fk_prefactura_numero#(lf)and dpf.no_arti = da.no_arti#(lf)and dpf.arinvtm_tipo_m = ‘SC’#(lf)and pf.estado = ‘FA’ #(lf)and pf.fk_paciente not in (76391901,4582701,47030801,83427701,47774401,76274801,72363701,83473701,83970401,75793501)#(lf)–and pf.fk_paciente||pf.fk_admision = ‘858803011’#(lf)and trunc(pf.fecha_real) between to_date (‘01/01/2020’,‘dd/mm/yyyy’) and to_date (‘31/12/2020’,‘dd/mm/yyyy’)#(lf)group by #(lf)pf.fk_paciente,pf.fk_admision,pf.fk_paciente||’-’||pf.fk_admision,#(lf)fun_busca_nombre_pte(pf.fk_paciente),pf.fecha_real,#(lf)dpf.no_arti,da.descripcion,dpf.arinvtm_tipo_m #(lf)having count()>1”),
    #“Tipo cambiado” = Table.TransformColumnTypes(Origen,{{“FK_PACIENTE”, type text}, {“FK_ADMISION”, type text}})
    in
    #“Tipo cambiado”

    Si me puedes ayudar te lo agradeceria mucho.

    Saludos desde Ecuador

    MaruSolis

    Hola Christian:

    Veo que usas la función to_date sin los paréntesis, podría ser algo por lo que te marca el error.

    to_date Date.FromText(FechaAnalisisDuplicados)

    Saludos

Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)
  • Debes estar registrado para responder a este debate.