powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Полезное: код для документирования показателей MSAS
15 сообщений из 15, страница 1 из 1
Полезное: код для документирования показателей MSAS
    #32739899
Фотография Гликоген
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот, написал программулю-автодокументор на VB.NET, которая шерстит все имеющиеся на сервере кубы и возвращает в окно Debug список всех показателей с формулами. Этот список затем после легкого Search-Replace в Word-е можно импортнуть в Excel для удобного обзора имеющихся активов ;).

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
Public Class Form1
    Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

    Public Sub New()
        MyBase.New()

        'This call is required by the Windows Form Designer.
        InitializeComponent()

        'Add any initialization after the InitializeComponent() call

    End Sub

    'Form overrides dispose to clean up the component list.
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub

    'Required by the Windows Form Designer
    Private components As System.ComponentModel.IContainer

    'NOTE: The following procedure is required by the Windows Form Designer
    'It can be modified using the Windows Form Designer.  
    'Do not modify it using the code editor.
    Friend WithEvents txtServer As System.Windows.Forms.TextBox
    Friend WithEvents Label1 As System.Windows.Forms.Label
    Friend WithEvents Label2 As System.Windows.Forms.Label
    Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
    Friend WithEvents btnGo As System.Windows.Forms.Button
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Me.txtServer = New System.Windows.Forms.TextBox
        Me.Label1 = New System.Windows.Forms.Label
        Me.Label2 = New System.Windows.Forms.Label
        Me.TextBox1 = New System.Windows.Forms.TextBox
        Me.btnGo = New System.Windows.Forms.Button
        Me.SuspendLayout()
        '
        'txtServer
        '
        Me.txtServer.Location = New System.Drawing.Point( 128 ,  24 )
        Me.txtServer.Name = "txtServer"
        Me.txtServer.Size = New System.Drawing.Size( 152 ,  20 )
        Me.txtServer.TabIndex =  0 
        Me.txtServer.Text = "localhost"
        '
        'Label1
        '
        Me.Label1.Location = New System.Drawing.Point(24, 24)
        Me.Label1.Name = "Label1"
        Me.Label1.TabIndex = 1
        Me.Label1.Text = "Server"
        '
        'Label2
        '
        Me.Label2.Location = New System.Drawing.Point( 24 ,  56 )
        Me.Label2.Name = "Label2"
        Me.Label2.TabIndex =  3 
        Me.Label2.Text = "Database"
        '
        'TextBox1
        '
        Me.TextBox1.Location = New System.Drawing.Point(128, 56)
        Me.TextBox1.Name = "TextBox1"
        Me.TextBox1.Size = New System.Drawing.Size(152, 20)
        Me.TextBox1.TabIndex = 2
        Me.TextBox1.Text = ""
        '
        'btnGo
        '
        Me.btnGo.Location = New System.Drawing.Point( 128 ,  216 )
        Me.btnGo.Name = "btnGo"
        Me.btnGo.TabIndex =  4 
        Me.btnGo.Text = "Script!"
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(292, 273)
        Me.Controls.Add(Me.btnGo)
        Me.Controls.Add(Me.Label2)
        Me.Controls.Add(Me.TextBox1)
        Me.Controls.Add(Me.Label1)
        Me.Controls.Add(Me.txtServer)
        Me.Name = "Form1"
        Me.Text = "MSAS Scripter"
        Me.ResumeLayout(False)

    End Sub

#End Region

    Private Sub btnGo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGo.Click
        Dim dsoServer As New DSO.Server
        Dim dsoDB As DSO.MDStore
        Dim dsoCube As DSO.MDStore
        Dim dsoMea As DSO.Measure
        Dim dsoCmd As DSO.Command

        ' Create a connection to the Analysis server.
        dsoServer.Connect(Trim(txtServer.Text))

        ' Step through the databases in the MDStores collection
        ' of the server object.
        For Each dsoDB In dsoServer.MDStores
            'Debug.WriteLine("DATABASE: " & dsoDB.Name & " - " & _
            'dsoDB.Description)

            'Step through the cubes in the database collection.
            For Each dsoCube In dsoDB.MDStores
                Dim sCmdType As String
                For Each dsoCmd In dsoCube.Commands
                    Select Case dsoCmd.CommandType
                        Case DSO.CommandTypes.cmdCreateAction
                            sCmdType = "Action"
                        Case DSO.CommandTypes.cmdCreateCellCalculation
                            sCmdType = "Cell Calculation"
                        Case DSO.CommandTypes.cmdCreateMember
                            sCmdType = "Member"
                        Case DSO.CommandTypes.cmdCreateSet
                            sCmdType = "Set"
                        Case DSO.CommandTypes.cmdUnknown
                            sCmdType = "Unknown"
                        Case DSO.CommandTypes.cmdUseLibrary
                            sCmdType = "Use Library"
                    End Select

                    Debug.WriteLine(dsoDB.Name & "|" & dsoCube.Name & "|" & dsoCmd.Name & "|" & sCmdType & "|" & dsoCmd.Statement & "|" & dsoCmd.Description & "#")
                Next

                'Step through measures for the cube.
                Dim AggType As DSO.AggregatesTypes, sAggType As String

                For Each dsoMea In dsoCube.Measures
                    Select Case dsoMea.AggregateFunction
                        Case DSO.AggregatesTypes.aggSum
                            sAggType = "Sum"
                        Case DSO.AggregatesTypes.aggCount
                            sAggType = "Count"
                        Case DSO.AggregatesTypes.aggMin
                            sAggType = "Min"
                        Case DSO.AggregatesTypes.aggMax
                            sAggType = "Max"
                        Case DSO.AggregatesTypes.aggDistinctCount
                            sAggType = "Distinct Count"
                    End Select

                    Debug.WriteLine(dsoDB.Name & "|" & dsoCube.Name & "|" & dsoMea.Name & "|" & sAggType & "|" & dsoMea.SourceColumn & "|" & dsoMea.Description & "#")
                Next
            Next
        Next


    End Sub
End Class

Код пейстится в пустую стартовую форму VB.NET
По идее, должны создаться и контролы.
...
Рейтинг: 0 / 0
Полезное: код для документирования показателей MSAS
    #32739966
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что, стандартных средств для этого в MS AS нету что ли?

С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
Полезное: код для документирования показателей MSAS
    #32739996
Фотография Гликоген
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нету, но это не повод выкладывать $200K за MSTR+Teradata :D
Скорее, повод еще раз оценить открытость и дружелюбность технологий MS к любым программным манипуляциям снаружи.
...
Рейтинг: 0 / 0
Полезное: код для документирования показателей MSAS
    #32740240
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нету, но это не повод выкладывать $200K за MSTR+Teradata :D

Об этом речи не было.
Мне просто казалось, что я видел инструмент просмотра метаданных в AS и мне показалось, что он это умеет.

Цены предлагаю не обсуждать. Можно ввести публику в заблуждение.

Скорее, повод еще раз оценить открытость и дружелюбность технологий MS к любым программным манипуляциям снаружи.

Ну, этим трудно удивить. Думаю, в том же Cognos этот скрипт будет выглядеть не менее дружелюбно :)
И в Microstrategy, раз уж Вы начали :)

А за скрипт спасибо. Я сейчас как раз пытаюсь разобраться с AS. Может, поможет.

Удачи.


С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
Полезное: код для документирования показателей MSAS
    #32740409
Petr Chulkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я где-то скачивал Microsoft.com вордовский документ.. как я понял -- для автоматического создания описания OLAP базы...
Сам не проверял... в архиве получилось больше 70К, так что прикладываю к двум сообщениям... в этом -- 1-я часть

С уважением, Petr[@]Chulkov.NET
Chulkov.Net - Trustworthy Knowledge
...
Рейтинг: 0 / 0
Полезное: код для документирования показателей MSAS
    #32740416
Petr Chulkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
упс.. что то я не вижу приложенного файла... пришлось искать этот файл на сайте MS...

С уважением, Petr[@]Chulkov.NET
Chulkov.Net - Trustworthy Knowledge
...
Рейтинг: 0 / 0
Полезное: код для документирования показателей MSAS
    #32740528
Фотография boogier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Микрософтовская создавалка дает ошибку в первых строках скрипта
Код: plaintext
Selection.Style = ActiveDocument.Styles("Heading 1")
Запрашиваемый номер семейства не существует
...
Рейтинг: 0 / 0
Полезное: код для документирования показателей MSAS
    #32740541
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Та же фигня была и в примере работы с DSO на MS Access. В процедуре было две метки с одинаковым названием. Пришлось исправлять.
Интересно, они хоть тестируют эти примеры прежде чем выкладывать?

С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
Полезное: код для документирования показателей MSAS
    #32740574
Alex Fox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гы-ы-ы прикольная фишка.
Господа! Смею заверить, документ запустился сразу без проблем, как только скачал. Объём результирующей инфы конечно...да...на бумагу не пожлобились. Но все равно приятно.
...
Рейтинг: 0 / 0
Полезное: код для документирования показателей MSAS
    #32740665
parteigenosse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boogier
Ошибка возникает, если ворд, который у тебя установлен, не американский.
у меня русский офис, для того, чтобы скрипт работал, надо заменить

"Heading 1" на "Заголовок 1"
"Heading 2" на "Заголовок 2"
"Normal" на "Обычный" --вот здесь не уверен на все сто, но смысл действий вроде понятен? ;)

Ошибка возникает из за того, что стили названы на соответствующем локейшену языку.


Так же была синтаксическая ошибка в исходнике, точно не нашел, но из разряда

написано:
lsttype.clear

Заменить на:
lsttypes.clear
...
Рейтинг: 0 / 0
Полезное: код для документирования показателей MSAS
    #32740902
Фотография Валек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гликоген, а через adomd получить AggregateFunction меры как?
...
Рейтинг: 0 / 0
Полезное: код для документирования показателей MSAS
    #32742028
Фотография Валек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
предыдущий вопрос снят, как говориться смотришь в книгу.... и нашел,
но остался вопрос как получить строку выражения вычисляемой меры, которая определена в кубе, а не на клиенте, ч/з adomd
...
Рейтинг: 0 / 0
Полезное: код для документирования показателей MSAS
    #32745652
Фотография Валек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эт тоже снят, вот туплю, почтиж по русски написано
...
Рейтинг: 0 / 0
Полезное: код для документирования показателей MSAS
    #32746008
Пашка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Черт, а у меня не запускается!
Пишет что не может соединиться с сервером, че за хрень...
Подобный скрипт в ЭКселе, в соседнем окошке соединяется через DSO без проблем..
В чем может быть дело?
...
Рейтинг: 0 / 0
Полезное: код для документирования показателей MSAS
    #32747754
Вжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот такая штука еще есть. Гонит в Ексель.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Полезное: код для документирования показателей MSAS
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]