Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Anonymous
Not applicable

Filtrar una tabla sql en una lista de valores antes de la importación

Hola a todos

Tengo una tabla SQL > 30 millones de registros (almacenada en una base de datos de Azure). Me gustaría importar solo los registros 10k cuyo ID se puede encontrar en otra tabla que ya está en mi modelo de datos de Power Bi. Importo la tabla externa con una consulta desde el menú Transformar datos:

my_external_table= Sql.Database(parameter_servername, parameter_dbname, [Query=" SELECT record_ID, text FROM external_table WHERE record_ID IN (...) " ])

No sé cómo escribir correctamente esa cláusula WHERE. ¿Hay alguna manera de pasar la columna de mi tabla power bi en la consulta? Como, digamos, ¿guardarlo en un contenedor de algún tipo?

En SQL puro un simple JOIN con la tabla externa en los ID de mi tabla power bi sería suficiente, pero no sé cómo lograr lo que quiero sin tener que importar primero los 30 millones de registros.

EDITAR: También pensé en crear un parámetro con una lista de valores, siendo la lista toda la columna de mi record_IDs. De esta manera debería ser abke para usarlo como argumento para la cláusula IN. Aún así, si voy a Administrar parámetros -> Nuevo parámetro -> Consultar la tabla donde está la lista de IDs no aparece en el menú desplegable. De todo el modelo de datos, solo aparecen 4 tablas.

3 REPLIES 3
amitchandak
Super User
Super User

Anonymous
Not applicable

hola @amitchandak, gracias por tu ayuda.

No estoy seguro de entender: si creo un parámetro de mi lista, todavía necesito asignar un valor y, cuando ejecuto la consulta, el parámetro tiene ese valor y se filtrará en función de ese valor solamente. ¿Me estoy equivocando?

En las propiedades avanzadas de la consulta, ¿cómo debo escribir mi consulta para incluir una lista de valores que ya está en el modelo de datos?

editar: permítanme añadir que mi lista es de 10k elementos de largo, por lo que no puedo agregarlo manualmente. Seguí el procedimiento en uno de los artículos que vinculó(haga clic con el botón derecho en la columna -> agregar como nueva consulta -> usarlo para crear un parámetro)pero todavía tengo el problema de que luego tengo que asignar un solo valor al parámetro, por lo que no puedo usarlo en la consulta.

Hola @s914 ,

Pruebe una función personalizada e invoque con una columna que existe.

El código M puede gustar esto:

(Year as number)as table=>
let 
    Source = Sql.Database("******", "test", [Query="SELECT *  FROM test_11#(lf) WHERE Year IN ("&Number.ToText(Year)&")", CreateNavigationProperties=false])
in
    Source

test_Filtering a sql table on a list of values before import2.PNG

Al invocar la consulta, recibirá un mensaje solicitando permiso para ejecutar una consulta de base de datos nativa. Esto es una precaución para advertirle de que se está ejecutando algún SQL que podría realizar cambios en la base de datos.

Esta solicitud de permiso se puede desactivar. Haga clic en Archivo y, a continuación, en Opciones y, a continuación, en Seguridad.

test_Filtering a sql table on a list of values before import.PNG

Saludos
Liang
Si este post ayuda, entonces considera Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.