powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / пример xmla скрипта с ProcessAdd Dimension - поделитесь, если у кого есть
12 сообщений из 12, страница 1 из 1
пример xmla скрипта с ProcessAdd Dimension - поделитесь, если у кого есть
    #40112126
13Q
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
13Q
Гость
Пытаюсь собрать по разным англоязычным статейкам, готового шаблона не нашел, а то, что написал пока не работает - видимо не правильно прописываю Bindings. Буду очень благодарен, если кто поделится правильным написанием.
...
Рейтинг: 0 / 0
пример xmla скрипта с ProcessAdd Dimension - поделитесь, если у кого есть
    #40112187
13Q
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
13Q
Гость
Вот что рабочего удалось написать:

<Process xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
<Object>
<DatabaseID>MAIN_1_Replica</DatabaseID>
<DimensionID>Dim DT</DimensionID>
</Object>
<Type>ProcessAdd</Type>
<DataSourceView>
<ID>MAIN_1_Replica</ID>
<Name>MAIN_1_Replica</Name>
<DataSourceID>mkt_RL</DataSourceID>
<Schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop">
<xs:element name="OLAP_Dim_DT" msprop:QueryDefinition="SELECT
* FROM OLAP_Dim_DT WHERE id > 20220513"
msprop:DbTableName="OLAP_Dim_DT"
msprop:IsLogical="True"
msprop:TableType="View">
</xs:element>
</Schema>
</DataSourceView>
</Process>

Я так понимаю определять с какой строки нужно через линковку SSAS сервера и MDX запрос (можно в этом случае и в Data flow в SSIS можно обойтись, я так понимаю он по тому же принципу в измерения запихивает данные как и этот скрипт
...
Рейтинг: 0 / 0
пример xmla скрипта с ProcessAdd Dimension - поделитесь, если у кого есть
    #40112237
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13Q,

А в чем вопрос-то?
как определить откуда грузить?
так это ж измерение, а не группа мер. в группе мер это важно, иначе данные будут задублированы.
в измерении ProcessAdd только добавляет новые строки не трогая существующих.
поэтому если встретит уже существующий ключ то в зависимости от настройки обработки ошибки (у меня KeyDuplicate = Ignore).
поэтому с небольшими отклонениями за этой границей не слежу.
...
Рейтинг: 0 / 0
пример xmla скрипта с ProcessAdd Dimension - поделитесь, если у кого есть
    #40112382
13Q
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
13Q
Гость
ShIgor,

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

если же делать Process Update - то это очень долго (у меня как минимум одно измерение идет на 100 млн строк с большим кол-вом атрибутов) Process Full - тогда и партиции все пересчитывать надо, а некоторые из них очень большие - тоже не вариант

Думаю еще попробовать тоже самое сделать через отдельный Data Flow в SSIS

С группами мер все как раз намного проще, я просто выделил относительно свежий отрезок в каждой группе в отдельную партицию.
Раз в месяц буду делать полный пересчет.
...
Рейтинг: 0 / 0
пример xmla скрипта с ProcessAdd Dimension - поделитесь, если у кого есть
    #40112397
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13Q,

ну так чтоб не думать
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<ErrorConfiguration>
    <KeyErrorLimit>-1</KeyErrorLimit>
    <KeyErrorAction>ConvertToUnknown</KeyErrorAction>
    <KeyErrorLimitAction>StopProcessing</KeyErrorLimitAction>
    <KeyDuplicate>IgnoreError</KeyDuplicate>
    <KeyNotFound>IgnoreError</KeyNotFound>
    <NullKeyConvertedToUnknown>IgnoreError</NullKeyConvertedToUnknown>
    <NullKeyNotAllowed>ReportAndContinue</NullKeyNotAllowed>
</ErrorConfiguration>
...
Рейтинг: 0 / 0
пример xmla скрипта с ProcessAdd Dimension - поделитесь, если у кого есть
    #40113100
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13Q
ShIgor,

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

если же делать Process Update - то это очень долго (у меня как минимум одно измерение идет на 100 млн строк с большим кол-вом атрибутов) Process Full - тогда и партиции все пересчитывать надо, а некоторые из них очень большие - тоже не вариант

Думаю еще попробовать тоже самое сделать через отдельный Data Flow в SSIS

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


"у меня как минимум одно измерение идет на 100 млн строк " это неверная архитектура. Измерения не должны быть такого размера. Из вашего куба выгружают некие детальные данные. Откажитесь от этого. Сделайте некий отчет или систему выгрузки. Вы сейчас скажете "без этого нельзя".... та та да да .

А зачем вам столько элементов, у вас смотрят детальные номера чеков за 2009 год в 2021 году? Обрежьте до 2018 года хотя бы.

ProcessAdd имеет место быть, но вы замучаетесь отслеживать, что именно добавилось, и особенно, что делать если процесс упал.
...
Рейтинг: 0 / 0
пример xmla скрипта с ProcessAdd Dimension - поделитесь, если у кого есть
    #40113187
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voronin,

улыбнуло..

>100млн это с конца 19 года, причем измерений 2 (два разных). "партия сказала 'надо!', комсомол ответил 'есть!'" и железным гвоздем приколочено!

с номерами чеков все просто. 1 кассирша в смену физически не может пробить больше 1 чека в минуту (не, ну может, но вероятность = 0) поэтому в измерении номеров чеков 10000 элементов всего с 10кратной избыточностью, потому что ручки шаловливые.. всякое бывает.

у меня с ProcessAdd проблем нет. я не отслеживаю конкретные границы, все что не нужно добавлять SSAS отбрасывает сам, хоть все 100лямов ему скорми. по скорости пока удовлетворяет всех. Full всей базы = 45 минут не очень критично. 15-минутный Add меньше 2-х минут.

Больше удручает сброс кешей при процессе партиций.. насчитал значит пользователь себе супер-пупер навернутый отчет, ждал 10 минут когда его портянка придет, и хрясь - нет расчетов, даже если обработка не затронула период (партиции) в котором он считал - считай заново!
...
Рейтинг: 0 / 0
пример xmla скрипта с ProcessAdd Dimension - поделитесь, если у кого есть
    #40113190
s_ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voronin

"у меня как минимум одно измерение идет на 100 млн строк " это неверная архитектура. Измерения не должны быть такого размера. Из вашего куба выгружают некие детальные данные. Откажитесь от этого. Сделайте некий отчет или систему выгрузки . Вы сейчас скажете "без этого нельзя".... та та да да .

А зачем вам столько элементов, у вас смотрят детальные номера чеков за 2009 год в 2021 году? Обрежьте до 2018 года хотя бы.

ProcessAdd имеет место быть, но вы замучаетесь отслеживать, что именно добавилось, и особенно, что делать если процесс упал.


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

Но сечас понимаю, что с попытками впихнуть все в куб в результате получается больше головняка. Так что доделаю пользователям выгрузки - и пусть отдельно смотрят детальные данные не из куба.
...
Рейтинг: 0 / 0
пример xmla скрипта с ProcessAdd Dimension - поделитесь, если у кого есть
    #40113454
13Q
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
13Q
Гость
a_voronin,

Да, я знаю что измерения не должны быть более 20 млн строк, и я скоро проведу работу на этот счет.
Но на данный момент это измерение (маркетинговых utm меток) занимает именно столько строк, а пространство должно уже быть на проде и доступно маркетингу.
...
Рейтинг: 0 / 0
пример xmla скрипта с ProcessAdd Dimension - поделитесь, если у кого есть
    #40113456
13Q
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
13Q
Гость
ShIgor,

Да, я уже прописал обработку ошибки, вот мой текущий тестовый скрипт:

<Batch xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
<Process>
<ErrorConfiguration>
<KeyDuplicate>IgnoreError</KeyDuplicate>
</ErrorConfiguration>
<Object>
<DatabaseID>MAIN_1_Replica</DatabaseID>
<DimensionID>Dim DT</DimensionID>
</Object>
<Type>ProcessAdd</Type>
<DataSourceView>
<ID>MAIN_1_Replica</ID>
<Name>MAIN_1_Replica</Name>
<DataSourceID>mkt_RL</DataSourceID>
<Schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop">
<xs:element name="OLAP_Dim_DT" msprop:QueryDefinition="SELECT
* FROM OLAP_Dim_DT WHERE id > 20220513"
msprop:DbTableName="OLAP_Dim_DT"
msprop:IsLogical="True"
msprop:TableType="View">
</xs:element>
</Schema>
</DataSourceView>
</Process>
</Batch>

Но падает он вот с этой ошибкой:

<return xmlns="urn:schemas-microsoft-com:xml-analysis">
<results xmlns="http://schemas.microsoft.com/analysisservices/2003/xmla-multipleresults">
<root xmlns="urn:schemas-microsoft-com:xml-analysis:empty">
<Messages xmlns="urn:schemas-microsoft-com:xml-analysis:exception">
<Warning WarningCode="1091436572" Description="Синтаксический анализатор: Был задан, но не используется внешний объект "DataSourceView", ссылающийся на идентификаторы "MAIN_1_Replica"." Source="Службы Microsoft Analysis Services" HelpFile="" />
</Messages>
</root>
</results>
</return>

Видимо элемент как то не верно задал, буду еще ковырять, в крайнем случае реализую через датафлоу.
...
Рейтинг: 0 / 0
пример xmla скрипта с ProcessAdd Dimension - поделитесь, если у кого есть
    #40113902
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13Q,

шаблон для измерения с одним атрибутом
Код: xml
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.
<Process xmlns="http://schemas.microsoft.com/analysisservices/2003/engine" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:ddl100="http://schemas.microsoft.com/analysisservices/2008/engine/100" xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:ddl200="http://schemas.microsoft.com/analysisservices/2010/engine/200" xmlns:ddl200_200="http://schemas.microsoft.com/analysisservices/2010/engine/200/200" xmlns:ddl300="http://schemas.microsoft.com/analysisservices/2011/engine/300" xmlns:ddl300_300="http://schemas.microsoft.com/analysisservices/2011/engine/300/300" xmlns:ddl400="http://schemas.microsoft.com/analysisservices/2012/engine/400" xmlns:ddl400_400="http://schemas.microsoft.com/analysisservices/2012/engine/400/400" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
	<ErrorConfiguration>
		<KeyErrorLimit>-1</KeyErrorLimit>
		<KeyErrorAction>ConvertToUnknown</KeyErrorAction>
		<KeyErrorLimitAction>StopProcessing</KeyErrorLimitAction>
		<KeyDuplicate>IgnoreError</KeyDuplicate>
		<KeyNotFound>IgnoreError</KeyNotFound>
		<NullKeyConvertedToUnknown>IgnoreError</NullKeyConvertedToUnknown>
		<NullKeyNotAllowed>ReportAndContinue</NullKeyNotAllowed>
	</ErrorConfiguration>
	<Object xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
		<DatabaseID>DatabaseID</DatabaseID>
		<DimensionID>DimensionID</DimensionID>
	</Object>
	<Type>ProcessAdd</Type>
	<DataSourceView xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:ddl200="http://schemas.microsoft.com/analysisservices/2010/engine/200" xmlns:ddl200_200="http://schemas.microsoft.com/analysisservices/2010/engine/200/200" xmlns:ddl300="http://schemas.microsoft.com/analysisservices/2011/engine/300" xmlns:ddl300_300="http://schemas.microsoft.com/analysisservices/2011/engine/300/300" xmlns:ddl400="http://schemas.microsoft.com/analysisservices/2012/engine/400" xmlns:ddl400_400="http://schemas.microsoft.com/analysisservices/2012/engine/400/400" xmlns:ddl500="http://schemas.microsoft.com/analysisservices/2013/engine/500" xmlns:ddl500_500="http://schemas.microsoft.com/analysisservices/2013/engine/500/500">
		<ID>ПридумайтеDataSourceViewID</ID>
		<Name>ПридумайтеDataSourceViewName</Name>
		<DataSourceID>DataSourceID</DataSourceID>
		<Schema>
			<xs:schema id="ПридумайтеDataSourceViewID" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop">
				<xs:element name="ПолоноеИмяТаблицыДолжноСовпадатьcDSVИзмерения" msprop:TableType="View" msprop:QueryBuilder="SpecificQueryBuilder" msprop:QueryDefinition="select * from ляляля.фафафа" msprop:IsLogical="True">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="ИмяПоляДляКлючевогоАтрибутаИзИзмернеия" msprop:DbColumnName="КлючевоеПолеВТаблице" type="xs:short" minOccurs="0" />
							<xs:element name="ИмяПоляДляНаименованияКлючевогоАтрибутаИзИзмернеия" msprop:DbColumnName="ПолеНаименованиеВТаблице" minOccurs="0">
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:maxLength value="20" />
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:schema>
		</Schema>
	</DataSourceView>
</Process>

...
Рейтинг: 0 / 0
пример xmla скрипта с ProcessAdd Dimension - поделитесь, если у кого есть
    #40114372
13Q
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
13Q
Гость
ShIgor,

Большое Вам спасибо, выглядит как то что надо ))
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / пример xmla скрипта с ProcessAdd Dimension - поделитесь, если у кого есть
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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