Подключение к спискам SharePoint 2013

22.05.2017 17:05:00
Подключение Power BI к спискам Sharepoint 2013
Задача – создание наглядного и красивого отчета с возможностью просмотра на мобильных устройствах. Для этого мы могли использовать любое возможное программное обеспечение. Место хранения наших данных – корпоративный портал, созданный на базе MS SharePoint 2013, источники информации - несколько различных списков. В связи с этим, средством для построения отчета был выбран MS Power BI за обширные возможности, удобство интерфейса, а также обилие доступных информационных источников. 
Сперва мы пошли путём, запланированным компанией Microsoft для подключения к Sharepoint: попытались использовать стандартное подключение к спискам.
Power BI connection to SharePoint list.png
 Для подключения к спискам которые имеют простую структуру – это отличное средство. Не важно какую версию программы вы используете Online или On Premise. Но оказалось, что если наш список содержит поля подстановки, то нас ждёт ошибка:
Error of SharePoint list connection.png 
Мы нашли обходной путь решения возникшей проблемы – подключение через ODataFeed. Power BI Desktop имеет встроенные средства для такого подключения:
Power BI connection by ODataFeed
 Здесь мы столкнулись с новой ошибкой подключения:
Error of ODataFeed connection
 
Недолго думая, мы продолжили поиск дополнительных вариантов и наткнулись в интернете на ресурс с решением нашей проблемы: это использование метаданных R скрипты Пример скрипта:
  Итак, способ и пример скрипта найден, адоптирован, нужные библиотеки установлены на локальный компьютер. 
library(bitops)
library(RCurl)
library(XML)
library(data.table)
#URL <- "http://<имя сайта>/it-ip/rp/_vti_bin/ListData.svc/<имя списка>"
data = xmlParse(readLines(URL))
items = getNodeSet(data, "//m:properties")
df = xmlToDataFrame(items, stringsAsFactors = FALSE)
View(df)

Используя, появившиеся возможности работы со скриптами мы решили поставленную перед нами задачу. Ниже пошаговая инструкция.
Выбираем источник:
Power BI connection by R script
 Приступаем к загрузке скрипта в окно:
Insert R-script
 
Просматриваем данные и загружаем их в Power BI Desktop:
Power BI navigator
 И наконец, получаем возможность работать с данными:

Result of connection. Available data fields
 
Оставалось создать наглядный отчет. Результаты, выполненной нами работы, приведены на рисунке:
Power BI report

 В заключение хотелось бы надеяться, что у любой аналогичной проблемы всегда есть простое решение. Нужно только найти его.

Текст ошибки 1:
 
DataSource.Error: We couldn't parse OData response result.  Error: A null value was found for the property named 'AssignedToId', which has the expected type 'Collection(Edm.Int32)[Nullable=False]'. The expected type 'Collection(Edm.Int32)[Nullable=False]' does not allow null values.
Details:
    DataSourceKind=SharePoint
    DataSourcePath=http://<имя сайта >/_api/Web/Lists(guid'cda522b1-b462-4dc1-a163-e7eec85cac93')/Items

Текст ошибки 2:
 
DataSource.NotFound: OData: Request failed (404): The remote server returned an error: (404) Not Found. (Не удается найти ресурс для запроса $metadata.)
Details:
    DataSourceKind=OData
    DataSourcePath=http://<имя сайта>/_api/Web/Lists/getbytitle(&#39;<имя списка>&#39;)/$metadata
    SPRequestGuid=b977f29d-b488-c0f4-ac80-d96330dd0984
    Url=http:// ://<имя сайта>/_api/Web/Lists/getbytitle(&#39; ;<имя списка>&#39;)/$metadata

leskova.png

автор:

Лескова Юлия, бизнес-аналитик Департамента Управления Проектами