2013-10-03 5 views
0

Я регулярно взаимодействую с массивными таблицами PIP на основе OLAP. Обычно они более или менее недокументированы. И, таким образом, им трудно по-настоящему обернуть голову и эффективно использовать ее.Значимые значения в OLAP Cube Pivot Table

Одна из моих стратегий изучения того, какие данные будут представлены, - это навести на поле поле в списке полей сводной таблицы, а затем нажимая стрелку вниз, чтобы увидеть список значений в пределах опции , отличный от. См. Изображение ниже.

You can't see my mouse, but it's clicking o

Я подумал: «Вау, может быть, я могу написать несколько VBA, чтобы сделать это для меня, и я могу создать список уникальных значений в кубе, так что я могу быстро сканировать/поиск того, что я ищу «.

Теперь я разумно разбираюсь в VBA, но я просто не могу понять. Я предполагаю, что метод, который мне нужен, не существует. Однако я думал, что попробую здесь.

Первая попытка:

Sub list_cube_fields() 
Set objNewSheet = Worksheets.Add 
objNewSheet.Activate 
intRow = 1 
For Each objCubeFld In Worksheets("Sheet1").PivotTables(1).CubeFields 
    objNewSheet.Cells(intRow, 1).Value = objCubeFld.Name 
    intRow = intRow + 1 
Next objCubeFld 
End Sub 

Это создает список всех доступных полей сводной таблицы (которая на самом деле может быть своего рода полезно!), Но не кажется, что должен быть способ, чтобы получить дети/листья/потомки Cubefield

Далее я попробовал:

Sub test_field_list() 
Worksheets("sheet4").Activate 
With Worksheets("sheet1").PivotTables(1) 
    c = 1 
    For i = 1 To .PivotFields.Count 
     r = 1 
     Cells(r, c) = .PivotFields(i).Name 
     r = r + 1 
     For X = 1 To .PivotFields(i).PivotItems.Count 
      name1 = .PivotFields(i).PivotItems(X).Name 
      'cleans up name by eliminating the hierarchy labels 
      splitName = Split(name1, "&") 
      Cells(r, c) = splitName(2) 
      r = r + 1 
     Next 
     c = c + 1 
    Next 
End With 
End Sub 

Это получает список всех уникальных значений, которые у меня есть использовал в сводной таблице, но даже не касался неиспользуемых полей. Точно так же это может быть полезно, но это не совсем так.

Что мне действительно нужно, это немного, чтобы удовлетворить мою фантазию, опять же, я не думаю, что методы существуют. Я понимаю, что то, что я прошу, может быть дорогостоящим и, скорее всего, довольно медленным и что я не использую подходящие инструменты для этой задачи. «OLAP уважает [приложения] разрешения, а предоставление прямого доступа SQL для меня не является« оправданием моего ИТ-отдела ».

В любом случае, если у вас есть идеи, я все уши.

Спасибо! Том

ответ

1

Я хотел бы подключиться непосредственно к серверу OLAP с помощью инструмента клиента, который позволяет писать простые запросы MDX: вы по-прежнему отвечают требованиям безопасности ИТ-людей, то ;-)

В MDX это довольно легко для получения списка участников в любой иерархии и фильтрации их. При использовании SSAS каждая иерархия даже доступна как куб (что-то с $ в имени), но это не требуется.

Если инструмент недоступен, вы можете написать простые запросы MDX в Excel - менее интерактивный, я думаю, но должен быть в порядке с помощью сводной таблицы, чтобы сначала идентифицировать иерархию; Я не специалист в Excel, но здесь ссылки, объясняющие, как:

https://msolap.wordpress.com/2008/10/07/returning-mdx-query-results-in-an-excel-matrix-formula/

http://cwebbbi.wordpress.com/2009/12/18/binding-an-excel-table-to-the-results-of-an-mdx-query/

+0

Можете ли вы порекомендовать конкретный «клиент инструмент, который позволяет писать запросы равнину MDX»? –

+0

Что такое ваш OLAP-сервер? –

Смежные вопросы