mjohnsonuk
¿Alguien sabe cómo puedo hacer referencia a una tabla .csv que he cargado en Power BI?
– El archivo csv que he subido tiene un campo wr_rfa_ID y la tabla se llama NTS_Report
–La tabla que me gustaría cargar es wmis_activity_component_visit
Solo necesito los wr_rfa_ID`s enumerados en el archivo csv, no en toda la tabla (lo he intentado de un par de formas, 1 ejemplo a continuación)
SELECCIONE
a.wr_no + a.wr_rfa_no AS wr_rfa_ID,
a.vst_rpt COMO NTS_vst_rpt,
FROM product_history.job_table a
DONDE a.wr_rfa_ID IN (SELECCIONE wr_rfa_ID FROM NTS_Report)
Y a.acty_cmpnent_vst_date> = ‘2017-01-01 00: 00: 00.0’;
Gracias de antemano
v-yuezhe-msft
@mjohnsonuk,
Realizo una prueba utilizando los siguientes datos de origen csv y datos de origen SQL.
Puede realizar los siguientes pasos:
1. Elimine todas las demás columnas excepto la columna wr_rfa_ID en la consulta CSV, agregue una nueva columna personalizada usando la fórmula: “’” & [wr_rfa_ID] & “’”.
El código generado en el Editor avanzado de la consulta csv es el siguiente.
let Source = Csv.Document(File.Contents("yourpathcsvname.csv"),[Delimiter=",", Columns=2, Encoding=1252, QuoteStyle=QuoteStyle.None]), #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]), #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"wr_rfa_ID", type text}, {"Index", Int64.Type}}), #"Removed Columns" = Table.RemoveColumns(#"Changed Type",{"Index"}), #"Added Custom" = Table.AddColumn(#"Removed Columns", "Custom", each "'"&[wr_rfa_ID]&"'") in #"Added Custom"
2. Agregue los pasos resaltados en el Editor avanzado de la consulta csv actual.
let Source = Csv.Document(File.Contents("yourpathcsvname.csv"),[Delimiter=",", Columns=2, Encoding=1252, QuoteStyle=QuoteStyle.None]), #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]), #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"wr_rfa_ID", type text}, {"Index", Int64.Type}}), #"Removed Columns" = Table.RemoveColumns(#"Changed Type",{"Index"}), #"Added Custom" = Table.AddColumn(#"Removed Columns", "Custom", each "'"&[wr_rfa_ID]&"'"), keylist= Text.Combine(#"Added Custom"[Custom],","), select1="SELECT a.wr_no + a.wr_rfa_no ID, a.vst_rpt FROM servername.databasename.dbo.wmis_activity_component_visit a WHERE a.wr_no + a.wr_rfa_no IN (" & keylist & ") AND a.acty_cmpnet_vst_date >='2017-01-01 00:00:00.0'", Source1 = Sql.Database("Servername", "databasename", [Query=select1]) in Source1
3. Entonces puede obtener los datos esperados.
Saludos,
Lydia
v-yuezhe-msft
@mjohnsonuk,
Cree dos consultas en blanco en Power BI Desktop para solucionar este problema.
Primero:
let Source = Salesforce.Reports(), #"00O1o000005J5ixEAC" = Source{[Name="00O1o000005J5ixEAC"]}[Data], #"Removed Columns" = Table.RemoveColumns(#"00O1o000005J5ixEAC",{"Case Owner", "Case Number", "Visit No", "Opened Date", "Call Type", "Call Status"}), #"Merged Columns" = Table.CombineColumns(#"Removed Columns",{"Work Request Number", "RFA"},Combiner.CombineTextByDelimiter("", QuoteStyle.None),"wr_rfa_ID"), #"Duplicated Column" = Table.DuplicateColumn(#"Merged Columns", "wr_rfa_ID", "wr_rfa_ID - Copy"), #"Removed Columns1" = Table.RemoveColumns(#"Duplicated Column",{"wr_rfa_ID - Copy"}), #"Added Custom" = Table.AddColumn(#"Removed Columns1", "Custom", each "'"&[wr_rfa_ID]&"'"), keylist= Text.Combine(#"Added Custom"[Custom],",") in keylist
Segundo (Reemplace la lista de claves por valores estáticos):
Let Source1 = Odbc.Query("dsn=Hortonworks_Hive_ODBC_64_dox" " SELECT a.wr_no + a.wr_rfa_no ID, a.vst_rpt FROM prod_history_capture_open.wmis_activity_component_visit a WHERE a.wr_no + a.wr_rfa_no IN (" & keylist & ") AND a.acty_cmpnet_vst_date >='2017-01-01 00:00:00.0' Limit 10;") in Source1
Compruebe si tiene algún problema al crear la consulta anterior.
Saludos,
Lydia
v-yuezhe-msft
@mjohnsonuk,
Realizo una prueba utilizando los siguientes datos de origen csv y datos de origen SQL.
Puede realizar los siguientes pasos:
1. Elimine todas las demás columnas excepto la columna wr_rfa_ID en la consulta CSV, agregue una nueva columna personalizada usando la fórmula: “’” & [wr_rfa_ID] & “’”.
El código generado en el Editor avanzado de la consulta csv es el siguiente.
let Source = Csv.Document(File.Contents("yourpathcsvname.csv"),[Delimiter=",", Columns=2, Encoding=1252, QuoteStyle=QuoteStyle.None]), #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]), #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"wr_rfa_ID", type text}, {"Index", Int64.Type}}), #"Removed Columns" = Table.RemoveColumns(#"Changed Type",{"Index"}), #"Added Custom" = Table.AddColumn(#"Removed Columns", "Custom", each "'"&[wr_rfa_ID]&"'") in #"Added Custom"
2. Agregue los pasos resaltados en el Editor avanzado de la consulta csv actual.
let Source = Csv.Document(File.Contents("yourpathcsvname.csv"),[Delimiter=",", Columns=2, Encoding=1252, QuoteStyle=QuoteStyle.None]), #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]), #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"wr_rfa_ID", type text}, {"Index", Int64.Type}}), #"Removed Columns" = Table.RemoveColumns(#"Changed Type",{"Index"}), #"Added Custom" = Table.AddColumn(#"Removed Columns", "Custom", each "'"&[wr_rfa_ID]&"'"), keylist= Text.Combine(#"Added Custom"[Custom],","), select1="SELECT a.wr_no + a.wr_rfa_no ID, a.vst_rpt FROM servername.databasename.dbo.wmis_activity_component_visit a WHERE a.wr_no + a.wr_rfa_no IN (" & keylist & ") AND a.acty_cmpnet_vst_date >='2017-01-01 00:00:00.0'", Source1 = Sql.Database("Servername", "databasename", [Query=select1]) in Source1
3. Entonces puede obtener los datos esperados.
Saludos,
Lydia
mjohnsonuk
En respuesta a v-yuezhe-msft
Hola lydia
Muchas gracias por tomarse el tiempo de escribir esto para mí … Tengo una pregunta rápida: no estoy seguro de qué poner para el nombre del servidor y el nombre de la base de datos
dejar
Fuente = Salesforce.Reports (),
# «000O1o000004J5ixEAC» = Fuente {[Name=»000O1o000004J5ixEAC»]}[Data],
# «Columnas eliminadas» = Table.RemoveColumns (# «000O1o000004J5ixEAC», {«Propietario del caso», «Número del caso», «Número de visita», «Fecha de apertura», «Tipo de llamada», «Estado de la llamada»}),
# «Columnas fusionadas» = Table.CombineColumns (# «Columnas eliminadas», {«Número de solicitud de trabajo», «RFA»}, Combiner.CombineTextByDelimiter («», QuoteStyle.None), «wr_rfa_ID»),
# «Columna duplicada» = Table.DuplicateColumn (# «Columnas combinadas», «wr_rfa_ID», «wr_rfa_ID – Copiar»),
# «Removed Columns1» = Table.RemoveColumns (# «Columna duplicada», {«wr_rfa_ID – Copiar»}),
# «Agregado personalizado» = Table.AddColumn (# «Eliminado Columns1», «Personalizado», cada «‘» &[wr_rfa_ID]& «‘»),
keylist = Text.Combine (# «Agregado personalizado»[Custom], «,»),
select1 = «SELECT # (lf)
a.wr_no + a.wr_rfa_no AS wr_rfa_ID, # (lf)
DESDE prod_history_capture_open.wmis_activity_component_visit a
DONDE a.wr_no + a.wr_rfa_no IN («& lista de claves &»),
Fuente1 = SQL.Database (prod_history_capture_open, wmis_activity_component_visit,[Query=select1])
en Source1
Lo es
Odbc.Query («dsn = Hortonworks_Hive_ODBC_64_dox», prod_history_capture_open.wmis_activity_component_visit
v-yuezhe-msft
En respuesta a mjohnsonuk
@mjohnsonuk,
Puede actualizar el código de la siguiente manera:
let Source = Salesforce.Reports(), #"00O1o000005J5ixEAC" = Source{[Name="00O1o000005J5ixEAC"]}[Data], #"Removed Columns" = Table.RemoveColumns(#"00O1o000005J5ixEAC",{"Case Owner", "Case Number", "Visit No", "Opened Date", "Call Type", "Call Status"}), #"Merged Columns" = Table.CombineColumns(#"Removed Columns",{"Work Request Number", "RFA"},Combiner.CombineTextByDelimiter("", QuoteStyle.None),"wr_rfa_ID"), #"Duplicated Column" = Table.DuplicateColumn(#"Merged Columns", "wr_rfa_ID", "wr_rfa_ID - Copy"), #"Removed Columns1" = Table.RemoveColumns(#"Duplicated Column",{"wr_rfa_ID - Copy"}), #"Added Custom" = Table.AddColumn(#"Removed Columns1", "Custom", each "'"&[wr_rfa_ID]&"'"), keylist= Text.Combine(#"Added Custom"[Custom],","), Source1 = Odbc.Query("dsn=Hortonworks_Hive_ODBC_64_dox" " SELECT a.wr_no + a.wr_rfa_no ID, a.vst_rpt FROM prod_history_capture_open.wmis_activity_component_visit a WHERE a.wr_no + a.wr_rfa_no IN (" & keylist & ") AND a.acty_cmpnet_vst_date >='2017-01-01 00:00:00.0' Limit 10;") in Source1
Saludos,
Lydia
mjohnsonuk
En respuesta a v-yuezhe-msft
Gracias
¿Esto detendría la carga de millones de líneas?
v-yuezhe-msft
En respuesta a mjohnsonuk
@mjohnsonuk,
¿Tiene millones de filas que cumplen con la siguiente condición o solo varias filas cumplen con la siguiente condición? Para el último caso, solo se importan varias filas después de usar el script anterior. Para el primer caso, ha utilizado «LIMIT 10» para restringir las filas.
SELECT a.wr_no + a.wr_rfa_no AS wr_rfa_ID, a.vst_rpt AS NTS_vst_rpt, FROM product_history.job_table a WHERE a.wr_rfa_ID IN (SELECT wr_rfa_ID FROM NTS_Report) AND a.acty_cmpnent_vst_date >='2017-01-01 00:00:00.0';
Saludos,
Lydia
mjohnsonuk
En respuesta a v-yuezhe-msft
El archivo de Salesforce tiene aproximadamente 10,000 líneas, por lo que esperaría que se importen entre 10 y 15,000 líneas
El límite 10 fue solo para reescribir el código (lo siento)
Mi preocupación es si tengo que agregar más tablas o actualizar, tratará de clasificar los millones de líneas y agregará un uso innecesario en el servidor
v-yuezhe-msft
En respuesta a mjohnsonuk
@mjohnsonuk,
Según su publicación original, desea limitar los datos de la consulta ODBC. Pero parece que desea limitar los datos de Salesforce. ¿Podrías describirlo?
Saludos,
Lydia
mjohnsonuk
En respuesta a v-yuezhe-msft
Hola,
La tabla completa de Salesforce tiene aproximadamente 10,000 líneas, por lo que la tabla completa se puede descargar directamente desde SF
Los otros datos tienen millones de otros números de trabajo que no son relevantes para los datos SF, por lo que quiero limitar la descarga solo de los números de trabajo coincidentes que están en el extracto SF.
Espero que esto tenga sentido 😀
v-yuezhe-msft
En respuesta a mjohnsonuk
@mjohnsonuk,
Solo los registros coincidentes se importarán a Power BI mediante el script anterior.
Saludos,
Lydia
mjohnsonuk
En respuesta a v-yuezhe-msft
Expression.Error: No podemos convertir el valor «SELECT a.wr_no + a ….» al tipo Record. Detalles: Valor = SELECT a.wr_no + a.wr_rfa_no ID, a.vst_rpt FROM prod_history_capture_open.wmis_activity_component_visit a WHERE a.wr_no + a.wr_rfa_no IN (’00’, ’00’, ’00’, ’00 ‘, ’00’, ’01’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00 ‘, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’01’, ’00’, ’00’, ’00’, ’00’, ’00’, ’01’, ’00’, ’00’, ’00’, ’00’, ’00 ‘, ’00’, ’01’, ’00’, ’00’, ’00’, ’01’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’01’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’01’, ’00 ‘, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00 ‘, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’01’, ’00’, ’00’, ’01’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00 ‘, ’00’, ’00’, ’00’, ’00’, ’00’, ’01’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’00’, ’01’, ‘00000000’, ‘00000000’, ‘000000001’, ‘0000000000’, ‘0000000000’, ‘0000000000’, ‘0000000000 ‘,’ 0000000000 ‘,’ 000000 0000 ‘,’ 0000000000 ‘,’ 0000000000 ‘,’ 000 … Tipo = Tipo ¿Recibo este error al guardar la consulta? ¿¿algunas ideas??
mjohnsonuk
En respuesta a mjohnsonuk
Supongo que hay una falta de coincidencia en el tipo de campo (es decir, texto / número)