Как найти реальное и фактическое использование объекта в GoodData by Ruby

Пытаюсь разобраться с проблемой использования/неиспользования атрибутов и фактов в отчетах. GoodData API документация говорит использовать "using?" метод. Вот мой код:

project.attributes.each do |attr|
  project.reports.each do |report|
    puts report.title
    puts attr.title
    puts report.using?(attr)
  end
end

Этот простой тест показывает мне, что, поскольку я использую атрибут один раз в своем отчете и сразу удаляю его, информация об использовании останется там навсегда.

Спасибо за любой совет, как найти реальное использование атрибутов и фактов в отчете, а не историю.

Михал


person Michal    schedule 23.02.2016    source источник


Ответы (1)


Есть два разных понятия, которые необходимо прояснить. Это «отчет» и «определение отчета».

Если вы перейдете на серые страницы и проверите любой из своих отчетов, они могут выглядеть так:

{
   "report" : {
      "content" : {
         "domains" : [],
         "definitions" : [
            "/gdc/md/m337ddyzwudoqgiq811pfuslld7phdz1/obj/1672",
            "/gdc/md/m337ddyzwudoqgiq811pfuslld7phdz1/obj/1674",
            "/gdc/md/m337ddyzwudoqgiq811pfuslld7phdz1/obj/11135",
            "/gdc/md/m337ddyzwudoqgiq811pfuslld7phdz1/obj/11146",
            "/gdc/md/m337ddyzwudoqgiq811pfuslld7phdz1/obj/11155",
            "/gdc/md/m337ddyzwudoqgiq811pfuslld7phdz1/obj/11156",
            "/gdc/md/m337ddyzwudoqgiq811pfuslld7phdz1/obj/11157",
            "/gdc/md/m337ddyzwudoqgiq811pfuslld7phdz1/obj/11211"
         ]
      },
      "meta" : {
         "author" : "/gdc/account/profile/18e93db4a57fba2d71f14fa6ea801d77",
         "uri" : "/gdc/md/m337ddyzwudoqgiq811pfuslld7phdz1/obj/1673",
         "tags" : "companya",
         "created" : "2014-01-25 10:14:33",
         "identifier" : "a9N6PNkSegqc",
         "deprecated" : "0",
         "summary" : "",
         "isProduction" : 1,
         "title" : "Yearly sales per office",
         "category" : "report",
         "updated" : "2016-02-23 12:40:18",
         "contributor" : "/gdc/account/profile/ca60c2f38c6804429f9c3934ea64ea09"
      }
   }
}

Как вы можете видеть, существует несколько версий этого отчета, которые сохранялись каждый раз, когда вы изменяли свой отчет в прошлом.

Если вы попробуете, как вы это сделали:

puts report.using?(attribute)

Вы получите TRUE, если атрибут является частью любого из определений этого отчета. Чтобы проверить исключительно, является ли этот атрибут частью текущего/последнего определения отчета, вы должны использовать:

puts report.definition.using?(attribute)

Метод #definition дает вам самую последнюю версию. Надеюсь, это поможет.

Рауль Мельгоса

person Raúl Melgosa    schedule 23.02.2016
comment
Спасибо за Ваш быстрый ответ. Это была недостающая часть информации, с вашим примером это совершенно ясно. Спасибо М. - person Michal; 24.02.2016