Join us for an expert-led overview of the tools and concepts you'll need to pass exam PL-300. The first session starts on June 11th. See you there!
Get registeredPower BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. Register now.
Hola
Estoy trabajando en un informe que obtiene los datos de una función con valores de tabla hospedada en un servidor SQL de Azure. Esa función tiene cuatro parámetros: "TeamList", "OwnerNameList", "AnalysisBeginDate" y "AnalysisEndDate".
Me gustaría usar parámetros de consulta M dinámicos para que cuando los usuarios cambien un valor en los controles que se muestran en el informe, llamen a la función con los valores de los parámetros actualizados. Bueno, justo lo que la funcionalidad parece estar ofreciendo.
Logré hacerlo para los dos primeros parámetros de texto ("TeamList" y "OwnerNameList") pero no puedo hacer lo mismo para los dos últimos. Aparentemente, es porque tienen un formato de fecha. Trataré de compartir tantos detalles como sea posible, no solo por el bien de presentar mi problema, sino también para las personas que intentan usar parámetros M dinámicos porque, para mí, eso fue una lucha.
Me centraré en la lista desplegable "Equipo", una de las dos que realmente funciona.
Puede ver, en la parte superior de la tabla, agregué cuatro controles que permiten al usuario cambiar los parámetros enviados a la función SQL. Por ahora solo funciona para "Equipo" y "Propietario del formulario de control".
El menú desplegable "Equipo" se rellena con una llamada de función en modo DirectQuery (hice esa DirectQuery porque pensé que era obligatoria para los parámetros M dinámicos, aunque creo que solo se aplica a la llamada de función de datos principal):
let
Source = Sql.Database("<server>", "<database>", [Query="SELECT TOP 100 PERCENT *#(lf)FROM dbo.GetTeamList()#(lf)ORDER BY 1"])
in
Source
La lista desplegable "Equipo" es una segmentación de datos vinculada a la columna "Equipo" de la tabla "TeamListQuery".
Y, por último, así es como se envía el valor de "TeamParameter" a la función de datos principal (también DirectQuery).
let
selectedTeams = if TeamParameter = null then
"default"
else
if Type.Is(Value.Type(TeamParameter), List.Type) then
Text.Combine({"'", Text.Combine(TeamParameter, "|"), "'"})
else
Text.Combine({"'", TeamParameter, "'"}),
selectedUsers = if UserNameParameter = null then
"default"
else
if Type.Is(Value.Type(UserNameParameter), List.Type) then
Text.Combine({"'", Text.Combine(UserNameParameter, "|"), "'"})
else
Text.Combine({"'", UserNameParameter, "'"}),
selectedAnalysisStartDate = if AnalysisBeginDateParameter = null then
"default"
else
Text.Combine({"'", DateTime.ToText(AnalysisBeginDateParameter, "yyyy-MM-dd"), "'"}),
selectedAnalysisEndDate = if AnalysisEndDateParameter = null then
"default"
else
Text.Combine({"'", DateTime.ToText(AnalysisEndDateParameter, "yyyy-MM-dd"), "'"}),
finalQuery = Text.Combine({"SELECT * FROM ",
"dbo.GetControlFormStatus(",
selectedTeams, ",",
selectedUsers, ",",
selectedAnalysisStartDate, ",",
selectedAnalysisEndDate, ")"}),
Source = Sql.Database("<server>", "<database>", [Query=finalQuery])
in
Source
Si sigo exactamente los mismos pasos para "AnalysisBeginDate" y "AnalysisEndDate", me refiero a: recopilar la lista de fechas a través de una llamada de función de modo DirectQuery (que devuelve una columna SQL DATE) y crear un parámetro Date. La lista desplegable "Enlazar al parámetro" no se muestra en la columna correspondiente.
let
Source = Sql.Database("<server>", "<database>", [Query="SELECT *#(lf)FROM dbo.GetAnalysisBeginDateList()"])
in
Source
Y parece ser solo porque la columna es de tipo "Fecha", porque, si cambio el tipo a "Texto", la lista desplegable "Vincular al parámetro" aparece en la sección "Avanzado" :
He seguido este artículo sobre el parámetro de consulta M dinámico:
https://learn.microsoft.com/en-us/power-bi/connect-data/desktop-dynamic-m-query-parameters
Hay algo sobre el tipo de datos "Fecha/Hora" en la sección "Limitaciones", pero creo que se aplica a la llamada a la función de datos, cuando estoy atascado en el flujo ascendente.
También me gustaría decir que he seguido el ejemplo de este artículo que está usando una tabla de fechas y esto no funciona para mí. "Enlazar al parámetro" tampoco aparece.
He buscado minuciosamente en la web y he pedido ayuda a un par de IA. No tuvo éxito.
Si alguien puede ayudarme a hacer que funcione, será increíble. De lo contrario, tendré que reducir mis expectativas.
Bien
L
Gracias por su mensaje. Para quitar los datos y la información de la base de datos del archivo PBIX, abra el archivo en Power BI Desktop, vaya a Transformar datos y elimine las consultas o quite todos los pasos aplicados.
Además, puede borrar las credenciales almacenadas en Configuración de la fuente de datos seleccionando la conexión y eligiendo Borrar permisos.
Una vez hecho esto, guarde el archivo para asegurarse de que los datos y los detalles de la conexión ya no se conserven.
Háganos saber si necesita más orientación.
Si la información anterior es útil, por favor felicitaciones y marque la respuesta como Aceptada como solución.
Saludos
Equipo de apoyo a la comunidad _ C Srikanth.
Hola @Loy
Perdón por la respuesta tardía.
¿Podría proporcionar el recurso compartido de archivos pbix si no hay información confidencial?
Para que haga todo lo posible para resolver su problema.
Saludos
Cheri Srikanth
Hola @v-csrikanth,
Eché un vistazo, pero tengo problemas para eliminar los datos y la información de la base de datos del archivo.
¿Tiene algún consejo sobre cómo lograr esto, por favor?
Bien
L
Gracias por formar parte de la comunidad de Microsoft Fabric.
Como se destaca en @lbendlin, el enfoque propuesto parece abordar eficazmente sus necesidades. ¿Podría confirmar si su problema se ha resuelto?
Si aún enfrenta algún desafío, proporcione más detalles y estaremos encantados de ayudarlo.
Si la información anterior es útil, por favor felicitaciones y marque la respuesta como Aceptada como solución.
Saludos
Equipo de apoyo a la comunidad _ C Srikanth.
Hola
Lo siento, pero todavía no he podido hacer que funcione. Para mí no es posible o las explicaciones dadas fueron demasiado vagas. Así que no puedo aceptar ninguna respuesta como solución.
L
Creé un informe en blanco y seguí los pasos descritos en el texto de este artículo para un parámetro de fecha / hora y no funciona :
Parámetros de consulta M dinámicos en Power BI Desktop
En el vídeo solo se utiliza un parámetro de texto.
¿Alguien lo ha hecho con un parámetro de fecha y hora?
L
Cambié el modo de almacenamiento a Importar para que esa consulta lo probara. El informe sigue funcionando, pero la lista desplegable ahora es el modo de selección única y, si intento desactivarlo, se vuelve a activar por sí solo. Raro, pero eso no es lo que me preocupa.
¿Alguna sugerencia sobre el problema principal con respecto a una tabla de fechas?
Bien
L
The "Team" dropdown is populated using a function call in DirectQuery mode (I've made that DirectQuery because I thought it was mandatory for dynamic M parameters though I think it only applies for the main data function call) :
Todo lo contrario. El uso de Direct Query para alimentar una segmentación que luego afecta a un parámetro de Dynamic M Query es similar a una serpiente que se come la cola. O tú mismo cortando la rama en la que estás sentado.
Lo ideal es que los valores presentados al parámetro M dinámico provengan de una lista estática (es decir, el modo de importación).