Mella
Hola,
Tenemos una lista de SharePoint para administrar el inventario de activos de la flota: principalmente su atribución (quién es el propietario) y su estado (activo, perdido, roto, etc.).
Activamos el Control de versiones de SharePoint y me gustaría usar esta información para ejecutar un informe histórico sobre el estado y la propiedad de dichos activos.
En este momento, la única solución que encontré es tomar una instantánea de la lista completa de forma regular en otra fuente de datos.
¿Hay alguna forma de obtener dichos datos de historial / versión directamente evitando escribir esa fuente de datos separada?
Thansk de antemano,
Mella
mohandar
¿Cómo podemos obtener el historial de versiones completo de todos los elementos? Estoy tratando de crear un informe basado en el número de días que un artículo permaneció en un estado particular, cualquier ayuda será apreciada.
JensG
Hola
Me gusta compartir una función / consulta que ayudará a obtener los detalles de la versión a través de la API de SharePoint para un elemento de lista.
Function/Query: let Source = (VersionsRelevantSharePointListName as text, VersionsRelevantSharePointLocation as text, VersionsRelevantItemID as number) => let Source = Xml.Tables(Web.Contents(Text.Combine({ VersionsRelevantSharePointLocation, "/_api/web/Lists/getbytitle('", VersionsRelevantSharePointListName , "')/items(", Text.From(VersionsRelevantItemID), ")/versions"} ))), entry = Source{0}[entry], #"Removed Other Columns2" = Table.SelectColumns(entry,{"content"}), #"Expanded content" = Table.ExpandTableColumn(#"Removed Other Columns2", "content", {"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"}, {"content"}), #"Expanded content1" = Table.ExpandTableColumn(#"Expanded content", "content", {"properties"}, {"properties"}), #"Expanded properties" = Table.ExpandTableColumn(#"Expanded content1", "properties", {"http://schemas.microsoft.com/ado/2007/08/dataservices"}, {"properties"}) in #"Expanded properties" in Source
Se requieren 3 parámetros para la función:
VersionsRelevantSharePointLocation => https: //
VersionsRelevantSharePointListName => Su nombre de lista de SharePoint
VersionsRelevantItemID => ID de elemento de lista de SharePoint
cuando invoca esta función a una lista de SharePoint, obtiene la tabla con todas las versiones relacionadas para ese elemento.
Esto se puede ampliar aún más para llegar al conjunto completo de columnas de esa lista.
Espero que esto ayude.
¡Divertirse!
NickTT
En respuesta a JensG
¡Esto es asombroso! ¡Acabo de recibir una solicitud si esto fuera posible!
Anónimo
En respuesta a JensG
¡Increíble! Me has alegrado el día. Muchas gracias. 🙂
udobausc
En respuesta a JensG
@JensG es genial que hayas publicado una función / consulta. Desafortunadamente, no me funciona. Cualquier ideal de cómo puedo arreglar eso sin demasiado esfuerzo. El error dice Expression.Error: El acceso al recurso está prohibido (traducido de mi versión: «Der Zugriff auf die Ressource ist untersagt.»). Verifiqué que haya iniciado sesión correctamente y verifiqué que no hay restricciones de permisos en la lista. Al menos no puedo ver ninguno. Supongo que la cuenta en la que he iniciado sesión en PowerBI también debe tener acceso a la lista de SharePoint o ¿hay algo más que deba considerar?
¿Estás seguro de que los enlaces de tu función siguen siendo válidos?
http://schemas.microsoft.com/ado/2007/08/dataservices/metadata
http://schemas.microsoft.com/ado/2007/08/dataservices
Aprecie, si alguien tiene una pista, ¿qué tiene de malo?
Muchas gracias
ImkeF
En respuesta a udobausc
Hola @udobausc
Tuve que agregar mi URL de SharePoint a esta lista de sitios confiables en mis Opciones de Internet para superar ese mensaje de error.
JensG
En respuesta a udobausc
Hola udobausc,
lo siento, todavía no he visto este error por mi parte.
He iniciado sesión con mis usuarios de O365 en Power BI, el mismo usuario que tiene acceso a las cosas de SP.
De todos modos, a veces Power BI solicita ingresar credenciales donde puedo seleccionar diferentes métodos. Pero siempre uso el mismo usuario.
con respecto a los enlaces antiguos, es cuando amplío algunas columnas, esto se devuelve como nombre de campo y lo acabo de mantener como proviene de la API de SP 🙂
podría valer la pena verificar si el enlace subyacente funciona en su navegador cuando reemplaza los valores en <>:
<VersionsRelevantSharePointLocation>/_api/web/Lists/getbytitle('<VersionsRelevantSharePointListName>')/items(<VersionsRelevantItemID>)/versions
divertirse
tdaskalakis
En respuesta a JensG
¿Cómo expande esta función para obtener el historial de versiones completo de todas las filas de una columna?
JensG
En respuesta a tdaskalakis
Hola tdaskalakis,
aquí hay un breve ejemplo de cómo utilizar la función:
1) Agregue una consulta a su lista donde desea ver el historial de versiones:
let Source = SharePoint.Tables("https://<yourDomain>.sharepoint.com/sites/<YourSPSite>", [ApiVersion = 15]), #"Filtered Rows" = Table.SelectRows(Source, each ([Title] = "SampleList")), #"Removed Other Columns" = Table.SelectColumns(#"Filtered Rows",{"Items", "Title"}), #"Expanded Items" = Table.ExpandTableColumn(#"Removed Other Columns", "Items", {"Id"}, {"Items.Id"}) in #"Expanded Items"
2) Invocar la función personalizada «GetVersionHistoryFromSharePointList» (de la publicación anterior)
3.) después de la invocación, su tabla tendrá la versión de columna que contiene una tabla que contiene una tabla por versión del elemento.
4) expanda la Tabla.
5) ahora tiene todos los elementos posibles en una lista, ahora puede expandir más columnas específicas según lo necesite.
Código de ejemplo después de esos pasos:
let Source = SharePoint.Tables("<Your SP Site Link>", [ApiVersion = 15]), #"Filtered Rows" = Table.SelectRows(Source, each ([Title] = "SampleList")), #"Removed Other Columns" = Table.SelectColumns(#"Filtered Rows",{"Items", "Title"}), #"Expanded Items" = Table.ExpandTableColumn(#"Removed Other Columns", "Items", {"Id"}, {"Items.Id"}), #"Invoked Custom Function" = Table.AddColumn(#"Expanded Items", "Versions", each GetVersionHistoryFromSharePointList([Title], "<Your SharePoint Site>", [Items.Id])), #"Expanded Versions" = Table.ExpandTableColumn(#"Invoked Custom Function", "Versions", {"properties"}, {"Versions.properties"}), #"Expanded Versions.properties" = Table.ExpandTableColumn(#"Expanded Versions", "Versions.properties", {"IsCurrentVersion", "VersionId", "VersionLabel", "Title", "ExampleText"}, {"Versions.properties.IsCurrentVersion", "Versions.properties.VersionId", "Versions.properties.VersionLabel", "Versions.properties.Title", "Versions.properties.ExampleText"}) in #"Expanded Versions.properties"
devhack
En respuesta a JensG
Por cierto, esto es genial, pero para mí, los errores cuando se publican en el servicio Power BI se producen en una consulta que se llama dentro de otra consulta.
demonio
En respuesta a JensG
Gran publicación, muchas gracias!
Anónimo
En respuesta a JensG
¡Increíble! Me has alegrado el día. Muchas gracias. 🙂
Anónimo
Este funcionó para mí:
https://sharepoint.stackexchange.com/questions/190021/exporting-item-list-version-history
Breve explicación:
Los «& IncludeVersions = TRUE «proporciona todos los cambios de todas las versiones (de todos los campos)
Haga una lista de Sharepoint que solo contenga las columnas que necesita. (o divídelo en varias vistas y repite este truco)
Abra el XML en Excel y allí puede crear una tabla dinámica y si incluye el campo de versión en la vista de SharePoint.
Puede ver el número de versión en el Pivot Simplemente ordene este número de versión y verá la última y todas las versiones anteriores.
madkins420
En respuesta a Anónimo
Parece haber un límite de 30 columnas en el enfoque & IncludeVersions = TRUE
madkins420
En respuesta a Anónimo
Parece haber un límite de 30 columnas en el enfoque & IncludeVersions = TRUE
llaumans
Hola, Nick,
¿Alguna vez descubrió cómo recuperar el historial de elementos en una lista de SharePoint para poder ejecutar informes históricos sobre sus datos? ¡Me interesaría mucho saber cómo lograste hacer esto!
¡Gracias por adelantado!
Saludos cordiales,
Lucas
Mella
En respuesta a llaumans
Hola lucas
La solución actual que estoy usando actualmente ya que no tengo acceso a SharePoint DB / Framework es a través del script R:
Aquí estoy tomando una instantánea de los datos de grupo, estado, identificación y fecha de extracción en un archivo CSV local, cada vez que actualizo la fuente de datos.
No es lujoso, pero funciona por ahora.
Espero que te ayude.
Mella
Anónimo
En respuesta a Mella
Este funcionó para mí:
https://sharepoint.stackexchange.com/questions/190021/exporting-item-list-version-history
Breve explicación:
Los «& IncludeVersions = TRUE «proporciona todos los cambios de todas las versiones (de todos los campos)
Haga una lista de Sharepoint que solo contenga las columnas que necesita. (o divídelo en varias vistas y repite este truco)
Abra el XML en Excel y allí puede crear una tabla dinámica y si incluye el campo de versión en la vista de SharePoint.
Puede ver el número de versión en el Pivot Simplemente ordene este número de versión y verá la última y todas las versiones anteriores.
v-ljerr-msft
@Mella
En este momento, la única solución que encontré es tomar una instantánea de la lista completa de forma regular en otra fuente de datos.
¿Hay alguna forma de obtener dichos datos de historial / versión directamente evitando escribir esa fuente de datos separada?
Primero puede exportar el historial de versiones de los elementos de la lista de SharePoint a Microsoft Excel. Luego, exporte esa tabla de Excel a su lista de SharePoint. Para que el historial de versiones y otros datos sean en el mismo fuente de datos.
Saludos
Mella
En respuesta a v-ljerr-msft
@ v-ljerr-msft
Gracias, pero no puedo ejecutar PS scrript en este momento debido a las políticas de mi empresa.
Además, también quería evitar la multiplicidad de datos: tal vez la lista de SharePoint no sea buena para lo que estoy buscando y quizás tenga que cambiar a un modelo de base de datos real.