DONDE EXISTE en un archivo csv

Un usuario Pregunto ✅

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

@mjohnsonuk,

Realizo una prueba utilizando los siguientes datos de origen csv y datos de origen SQL.
1.PNG2.png

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] & “’”.

3.PNG

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.

4.png

Saludos,
Lydia

@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

@mjohnsonuk,

Realizo una prueba utilizando los siguientes datos de origen csv y datos de origen SQL.
1.PNG2.png

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] & “’”.

3.PNG

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.

4.png

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

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?

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

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 😀

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)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *