powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / SSAS-Пакетный поиск источника/таблицы/представления для Групп Мер при отсувствии партиций
3 сообщений из 3, страница 1 из 1
SSAS-Пакетный поиск источника/таблицы/представления для Групп Мер при отсувствии партиций
    #39360182
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-бы жили не тужили обычным перечислением обьектов Process на Unprocessed выдавали и при тестировании очередного нового Health Control алгоритма обнаружились какие-то непонятные пропуски, в связи с чем вопрос:
Кто знает как вытащить в PowerShell / Amo таблицу источник для Группы Мер через new-object Microsoft.AnalysisServices ?

Т.е. для сценария когда скрипт обнаруживает что одна из нескольких тысяч групп мер в сотне кубов/десятках баз данных из нескольких серверов не содержит никаких партиций наример - потерялася загадочным образом (иначе если есть партиция - то через Clone() / Source.QueryDefinition с Replace / Partitions.Add() / Update() можно пересоздать {как минимум из какой-нибудь Part_Default (..where 1=0)}, т.к. есть информация об источнике). А вот если партиций совсем нет - то могу только через ..Measures.Item(0).Source.Source до TableID достучаться (что не есть сама схема/таблица, хотя можно конечно заменой первого _ префикса - но рискованно, т.к. ID не обязательно так генерируются)
в DMV тоже вроде ничего подходящего не нашлось.
У кого какие идеи/опыт в решении таких проблем есть?
...
Рейтинг: 0 / 0
SSAS-Пакетный поиск источника/таблицы/представления для Групп Мер при отсувствии партиций
    #39360308
Ferdipux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vikkiv,

Опыт есть. Иногда вытаскиваю из существующих кубов определения источников для партицирования. Через Measure.Source.Source.
Немного примеров - на C# AMO (прошу прощения за отступы - просто копирование из проекта).

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
foreach (Measure Mes in Upd_MG.Measures)
                                {
                                    MGType = Mes.Source.Source.GetType().Name;
                                    if (MGType == "ColumnBinding" || MGType== "RowBinding")
                                    {
                                        if (MGType == "ColumnBinding")
                                        {
                                            MG_TableID = ((ColumnBinding)Mes.Source.Source).TableID.ToString();
                                        }
                                        else if (MGType == "RowBinding")
                                        {
                                            MG_TableID = ((RowBinding)Mes.Source.Source).TableID.ToString();
                                        }

                                        try
                                        {
                                            mg_dt = Mod_Cube.DataSourceView.Schema.Tables[MG_TableID];
                                       }
                                        catch (Exception exc)
                                        {
                                            throw new Exception("Cannot locate table " + MG_TableID + " in DSV, " + exc.Message, exc);
                                        }

                                        mg_tbl_type = mg_dt.ExtendedProperties["TableType"].ToString();



Вытаскиваем определение таблицы (в примере пишем в текий файл - но смысл ясен)
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
                                        mg_tbl_type = mg_dt.ExtendedProperties["TableType"].ToString();
                                        // Pure table or DB view
                                        if (mg_tbl_type == "Table" || (mg_tbl_type == "View" && !b_mg_is_logical))
                                        {
                                            F_mg_tbl_ref.Write("[");
                                            F_mg_tbl_ref.Write(mg_dt.ExtendedProperties["DbSchemaName"].ToString());
                                            F_mg_tbl_ref.Write("].[");
                                            F_mg_tbl_ref.Write(mg_dt.ExtendedProperties["DbTableName"].ToString());
                                            F_mg_tbl_ref.Write("]");
                                            F_mg_tbl_ref.WriteLine();

                                        }
                                        // View - named query
                                        else if (mg_tbl_type == "View" && b_mg_is_logical)
                                        {
                                            F_mg_tbl_ref.Write("(");
                                            F_mg_tbl_ref.Write(mg_dt.ExtendedProperties["QueryDefinition"].ToString().Replace("\r\n", " ").Replace('\t', ' '));
                                            F_mg_tbl_ref.Write(") X");
                                            F_mg_tbl_ref.WriteLine();
                                        }
...
Рейтинг: 0 / 0
SSAS-Пакетный поиск источника/таблицы/представления для Групп Мер при отсувствии партиций
    #39360950
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ferdipux,

Да, похоже на то что искалось, спасибо, если на выходных до этого вопроса доберусь - отпишусь по реализации..
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / SSAS-Пакетный поиск источника/таблицы/представления для Групп Мер при отсувствии партиций
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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