Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more
Hola, chicos
Obtuve la parte superior del código a través de CoPilot.
Funciona bien en listas de SharePoint con menos de 5000 registros, pero tan pronto como lo intento en una lista con más de 5000 registros, da un error.
¿Alguien puede ayudar a arreglar el código y ayudarme a entender qué estaba mal?
Código
let
Source = SharePoint.Tables("https://clarkcontracts.sharepoint.com/sites/CE4080-PitfodelsWoodCareHomeAberdeen", [Implementation="2.0"]),
List = Source{[Title="Site Sign In"]}[Items],
PageSize = 5000,
GetPage = (PageNumber as number) =>
let
Skip = PageNumber * PageSize,
Page = OData.Feed("https://clarkcontracts.sharepoint.com/sites/CE4080-PitfodelsWoodCareHomeAberdeen/_api/web/lists/getbytitle('Site Sign In')/items?$top=" & Number.ToText(PageSize) & "&$skip=" & Number.ToText(Skip))
in
Page,
Pages = List.Generate(() => 0, each _ < 10, each _ + 1, each GetPage(_)),
CombinedPages = Table.Combine(Pages),
#"Trimmed Text1" = Table.TransformColumns(CombinedPages,{{"Title", Text.Trim, type text}, {"Company", Text.Trim, type text}}),
#"Capitalized Each Word" = Table.TransformColumns(#"Trimmed Text1",{{"Company", Text.Proper, type text}, {"Title", Text.Proper, type text}}),
#"Replaced Value" = Table.ReplaceValue(#"Capitalized Each Word",null,"CE4080",Replacer.ReplaceValue,{"Contract"}),
#"Changed Type" = Table.TransformColumnTypes(#"Replaced Value",{{"Modified", type datetime}, {"Created", type datetime}}),
#"Renamed Columns" = Table.RenameColumns(#"Changed Type",{{"Title", "Name"}, {"SignInLocation", "Sign In Location"}, {"SignOutLocation", "Sign Out Location"}, {"PostcodeStart", "Postcode Start"}, {"ProjectPostcode", "Project Postcode"}, {"VehicleRegistration", "Vehicle Registration"}, {"SignInDateandTime", "Sign In Date and Time"}, {"SignOutDateandTime", "Sign Out Date and Time"}, {"ModeofTransport", "Mode of Transport"}, {"AreyouaDriver/Passenger", "Are you a Driver or Passenger"}, {"Distance(includingreturnjo", "Distance including return journey"}}),
#"Replaced Value1" = Table.ReplaceValue(#"Renamed Columns","Ccl","Clark Contracts",Replacer.ReplaceValue,{"Company"}),
#"Replaced Value2" = Table.ReplaceValue(#"Replaced Value1","Clark Contracts Ltd","Clark Contracts",Replacer.ReplaceValue,{"Company"}),
#"Replaced Value3" = Table.ReplaceValue(#"Replaced Value2","Clark Cclcontracts","Clark Contracts",Replacer.ReplaceValue,{"Company"}),
#"Replaced Value6" = Table.ReplaceValue(#"Replaced Value3","mid size car","Medium Petrol Car",Replacer.ReplaceValue,{"Mode of Transport"}),
#"Replaced Value7" = Table.ReplaceValue(#"Replaced Value6","Car","Medium Petrol Car",Replacer.ReplaceValue,{"Mode of Transport"}),
#"Replaced Value8" = Table.ReplaceValue(#"Replaced Value7","Crane ","Medium Petrol Car",Replacer.ReplaceValue,{"Mode of Transport"}),
#"Replaced Value9" = Table.ReplaceValue(#"Replaced Value8","Passenger","Medium Petrol Car",Replacer.ReplaceValue,{"Mode of Transport"}),
#"Replaced Value10" = Table.ReplaceValue(#"Replaced Value9","Car ","Medium Petrol Car",Replacer.ReplaceValue,{"Mode of Transport"}),
#"Replaced Value11" = Table.ReplaceValue(#"Replaced Value10","Drive","Medium Petrol Car",Replacer.ReplaceValue,{"Mode of Transport"}),
#"Replaced Value12" = Table.ReplaceValue(#"Replaced Value11","Van ","Van",Replacer.ReplaceValue,{"Mode of Transport"}),
#"Replaced Value13" = Table.ReplaceValue(#"Replaced Value12"," Van ","Van",Replacer.ReplaceValue,{"Mode of Transport"}),
#"Replaced Value14" = Table.ReplaceValue(#"Replaced Value13","Crane","Medium Petrol Car",Replacer.ReplaceValue,{"Mode of Transport"}),
#"Replaced Value15" = Table.ReplaceValue(#"Replaced Value14","Vn","Van",Replacer.ReplaceValue,{"Mode of Transport"}),
#"Sorted Rows" = Table.Sort(#"Replaced Value15",{{"Created", Order.Descending}})
in
Error
DataSource.Error: OData: Request failed: The remote server returned an error: (400) Bad Request. (The $skip and $skiptoken cannot be specified at the same time.)
Details:
DataSourceKind=OData
DataSourcePath=https://clarkcontracts.sharepoint.com/sites/CE4080-PitfodelsWoodCareHomeAberdeen/_api/web/lists/getbytitle(%27Site%20Sign%20In%27)/items
sprequestguid=cf04a0a1-40a9-c000-7e49-b78fbea9880b
Url=https://clarkcontracts.sharepoint.com/sites/CE4080-PitfodelsWoodCareHomeAberdeen/_api/web/lists/getbytitle('Site Sign In')/items?%24skiptoken=Paged%3dTRUE%26p_ID%3d4017&%24top=4000&%24skip=0
Bien
Hola @jbrines
Pruebe este código
vuelo
CombinedPages = OData.Feed(
"https://clarkcontracts.sharepoint.com/sites/CE4080-PitfodelsWoodCareHomeAberdeen/_api/web/lists/getb... ')/artículos",
nulo
[Implementación = "2.0"]
),
#"Texto recortado1" = Tabla.TransformColumnas(CombinedPages,{{"Título", Texto.Recortar, escribir texto}, {"Compañía", Texto.Recortar, escribir texto}}),
#"Mayúsculas cada palabra" = Tabla.TransformColumns(#"Texto recortado1",{{"Empresa", Texto.Adecuado, escriba texto}, {"Título", Texto.Adecuado, escriba texto}}),
#"Valor reemplazado" = Table.ReplaceValue(#"Mayúsculas cada palabra",null,"CE4080",Replacer.ReplaceValue,{"Contract"}),
#"Tipo cambiado" = Table.TransformColumnTypes(#"Valor reemplazado",{{"Modificado", tipo datetime}, {"Creado", tipo datetime}}),
#"Columnas renombradas" = Tabla.RenameColumns(#"Tipo cambiado",{
{"Título", "Nombre"},
{"SignInLocation", "Ubicación de inicio de sesión"},
{"SignOutLocation", "Ubicación de cierre de sesión"},
{"PostcodeStart", "Inicio de código postal"},
{"Código Postal del Proyecto", "Código Postal del Proyecto"},
{"Matrícula del vehículo", "Matrícula del vehículo"},
{"SignInDateandTime", "Fecha y hora de inicio de sesión"},
{"SignOutDateandTime", "Fecha y hora de cierre de sesión"},
{"MododeTransporte", "Modo de Transporte"},
{"AreyouaDriver/Passenger", "¿Eres un conductor o pasajero"},
{"Distancia (incluyendo ida y vuelta", "Distancia incluyendo viaje de vuelta"}
}),
#"Valor reemplazado1" = Tabla.ReplaceValue(#"Columnas renombradas","Ccl","Contratos de Clark",Replacer.ReplaceValue,{"Compañía"}),
#"Valor reemplazado2" = Tabla.ReplaceValue(#"Valor reemplazado1","Clark Contracts Ltd","Clark Contracts",Replacer.ReplaceValue,{"Compañía"}),
#"Valor reemplazado3" = Tabla.ReplaceValue(#"Valor reemplazado2","Clark Cclcontracts","Clark Contracts",Replacer.ReplaceValue,{"Compañía"}),
#"Valor Reemplazado6" = Tabla.ReplaceValue(#"Valor Reemplazado3","Coche de tamaño mediano","Coche de gasolina mediano",Replacer.ReplaceValue,{"Modo de Transporte"}),
#"Valor Reemplazado7" = Tabla.ReplaceValue(#"Valor Reemplazado6","Coche","Coche de gasolina mediano",Replacer.ReplaceValue,{"Modo de Transporte"}),
#"Valor reemplazado8" = Tabla.ReplaceValue(#"Valor reemplazado7","Grúa","Coche de gasolina mediano",Replacer.ReplaceValue,{"Modo de transporte"}),
#"Valor reemplazado9" = Tabla.ReplaceValue(#"Valor reemplazado8","Pasajero","Coche de gasolina mediano",Replacer.ReplaceValue,{"Modo de transporte"}),
#"Valor Reemplazado10" = Tabla.ReplaceValue(#"Valor Reemplazado9","Coche","Coche de gasolina mediano",Replacer.ReplaceValue,{"Modo de Transporte"}),
#"Valor Reemplazado11" = Tabla.ReplaceValue(#"Valor Reemplazado10","Drive","Coche de gasolina mediano",Replacer.ReplaceValue,{"Modo de Transporte"}),
#"Valor reemplazado12" = Table.ReplaceValue(#"Valor reemplazado11","Van ","Van",Replacer.ReplaceValue,{"Modo de transporte"}),
#"Valor reemplazado13" = Table.ReplaceValue(#"Valor reemplazado12"," van ","van",Replacer.ReplaceValue,{"modo de transporte"}),
#"Valor Reemplazado14" = Tabla.ValorReemplazo(#"Valor Reemplazado13","Grúa","Coche de gasolina mediano",Replacer.ReplaceValue,{"Modo de Transporte"}),
#"Valor reemplazado15" = Table.ReplaceValue(#"Valor reemplazado14","Vn","Van",Replacer.ReplaceValue,{"Modo de transporte"}),
#"Filas ordenadas" = Table.Sort(#"Valor reemplazado15",{{"Creado", Order.Descending}})
en
#"Filas ordenadas"
Gracias
Pankaj Namekar | LinkedIn (en inglés)
Si esta solución ayuda, por favor acéptala y da un aplauso (Me gusta), sería muy apreciado.
Hola @pankajnamekar25
No, no funcionó, pero volvió con un error diferente.
DataSource.Error: Microsoft.Mashup.Engine1.Library.Resources.HttpResource: Request failed:
OData Version: 3 and 4, Error: The remote server returned an error: (400) Bad Request. (The expression "web/lists/getb... Sign In')/items" is not valid.)
OData Version: 4, Error: The remote server returned an error: (400) Bad Request. (The expression "web/lists/getb... Sign In')/items" is not valid.)
OData Version: 3, Error: The remote server returned an error: (400) Bad Request. (The expression "web/lists/getb... Sign In')/items" is not valid.)
Details:
DataSourceKind=OData
DataSourcePath=https://clarkcontracts.sharepoint.com/sites/CE4080-PitfodelsWoodCareHomeAberdeen/_api/web/lists/getb...%20Sign%20In')/items
sprequestguid=cd3ea0a1-106f-c000-7e49-bc7694a5b8a5, cd3ea0a1-e072-c000-7e49-b70f581d6b38, cd3ea0a1-8076-c000-d89c-0cb46ef6a1fe
Hola @jbrines ,
¡Gracias por la útil respuesta @pankajnamekar25 !
Al trabajar con listas de SharePoint que superan los 5000 elementos, los umbrales de lista pueden presentar complejidad, especialmente cuando se usan $skip y $skiptoken.
Para comprender mejor las limitaciones y los enfoques recomendados, estos son algunos vínculos útiles de la documentación de Microsoft:
https://learn.microsoft.com/en-us/power-query/connectors/odata-feed
https://learn.microsoft.com/en-us/sharepoint/dev/solution-guidance/modern-experience-site-classifica...
https://learn.microsoft.com/en-us/sharepoint/dev/sp-add-ins/working-with-lists-and-list-items-with-r...
Espero que esto ayude. Si es así, danos kudoa y considera aceptarlo como solución.
Saludos
Pallavi.
Hola @v-pagayam-msft , ¿así que no debería usar $skip o $skiptoken?
¿Alguna posibilidad de que me puedas dar un ejemplo de lo que debería estar usando?
Hola @jbrines ,
Gracias por el seguimiento. ¡Estaré encantado de ayudarte!
cuando se trabaja con listas grandes de SharePoint, es mejor no usar $skip o $skiptoken manualmente. La manera recomendada es usar SharePoint.Tables, que administra automáticamente la paginación y evita los problemas del umbral de 5.000 elementos. Puede encontrar este enfoque en la documentación de Microsoft sobre SharePoint.Tables y más información sobre el manejo de listas grandes aquí.
Espero que esto ayude. Si es así, considere aceptarlo como solución.
The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!