как использовать даты начала и окончания управления процессами в измерении II в icCube - PullRequest
0 голосов
/ 25 апреля 2018

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

Я хочу отобразить изменения с их последней фазой.Изменения происходят из программного решения IASM SAAS.Упрощенно, изменение проходит через следующие стадии:

  • для авторизации
  • незавершенное производство
  • для рассмотрения
  • закрыто

Каждый этап имеет дату начала и окончания.И нет никаких пробелов.

Теперь я хотел бы показать жизненный цикл изменения (или нескольких изменений) в диаграмме, используя решение измерения дальнего II.Но я получаю следующий график:

The Range Dimension II solution presents incorrectly 3 changes on day 20. It should be just one - the green one.

Как я могу получить требуемый результат.То есть показывать только последний этап изменения за определенный промежуток времени?

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Оба решения работают.

1) Для решения по диапазону необходимо добавить меру, которая использует ЗАКРЫТЬ агрегацию режим в Измерение времени , так как мы хотим, чтобы «состояние» было в последний день любой период времени. Кроме того, обе даты включены при использовании диапазона, поэтому дата окончания должна быть за один день до начала следующего сегмента.

Вы можете использовать Sum или Eval вместо Aggregate . Eval будет быстрее, если один и тот же период времени будет многократно использоваться в одном и том же запросе при кэшировании подкуба.

CREATE MEMBER [#changes ITD 2] as Eval( compactSet(NULL:[Time].[Time].currentMember) , ([Time].[Time].defaultMember,[Measures].[# changes (based on delta)]) )

2) Для Purple Frog я бы использовал compactSet для вычисляемого элемента, так как без вычисляемой функции будет быстро ухудшаться при получении большего количества данных. Это 365 дней в году, поэтому если вам 10 лет, у вас будет 3650 сумм без компактного набора. С помощью compactSet мы можем использовать его как меру добавка , вместо 10 лет будет что-то вроде 9 (лет) + 11 (месяцев) + 31 (дней), что намного меньше на худший сценарий.

Какой использовать?

1) Он использует больше памяти, но производительность быстрее и удивительно стабильна, так как мы используем последний день значения периода. Добавление других временных иерархий может привести к неожиданным результатам.

CREATE MEMBER [#changes ITD] as Aggregate( compactSet(NULL:[Time].[Time].currentMember) , [Measures].[# changes (based on delta)] )

2) Он использует меньше памяти, мы сохраняем только две точки, но немного медленнее.

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

Здесь обновленная схема (включено определение [#changes ITD])

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<schemaFactory revisionNumber="11">
    <schemaDefinition name="Phases - ranged dimension II" description="issue description StackOverflow" group="StackOverflow" loadOnStartup="false">
        <activateIncrementalLoad>false</activateIncrementalLoad>
        <useUnknownMembersInFacts>false</useUnknownMembersInFacts>
        <autoCleanUpTableColumns>false</autoCleanUpTableColumns>
        <useFactPartitioning>false</useFactPartitioning>
        <callGarbageCollector>NONE</callGarbageCollector>
        <backup>NONE</backup>
        <nonEmptyCachePolicy>NONE</nonEmptyCachePolicy>
        <nonEmptyCacheType>REGULAR</nonEmptyCacheType>
        <nonEmptyCachePersistency>MEMORY</nonEmptyCachePersistency>
        <storagePolicy>DEFAULT</storagePolicy>
        <hierarchyUniqueNameStyle>IncludeDimensionName</hierarchyUniqueNameStyle>
        <inMemoryDS name="manual">
            <memoryDataTable tableName="facts" rowLimit="-1" id="c41cc2b5-1412-4da1-8e0e-3bd1b07e9d66">
                <column name="start" tableType="STRING" type="DATE" selected="true" primaryKey="false" nullObjectAsString=""/>
                <column name="end" tableType="STRING" type="DATE" selected="true" primaryKey="false" nullObjectAsString=""/>
                <column name="phase" tableType="STRING" type="STRING" selected="true" primaryKey="false" nullObjectAsString=""/>
                <column name="chg" tableType="STRING" type="STRING" selected="true" primaryKey="false" nullObjectAsString=""/>
                <column name="#changes" tableType="STRING" type="INTEGER" selected="true" primaryKey="false" nullObjectAsString=""/>
                <addRowNumber>false</addRowNumber>
                <stringDateConverter>d MMM, yyyy</stringDateConverter>
                <stringDateConverterLocale>en</stringDateConverterLocale>
                <trimStrings>true</trimStrings>
                <columnSeparator>;</columnSeparator>
                <commentMarker>#</commentMarker>
                <dataAsString>start;end;phase;chg;#changes
1 January, 2018;31 January, 2018; a;chg001;1
1 February, 2018;4 March, 2018;b;chg001;1
5 March, 2018;19 March, 2018;c;chg001;1
20 March, 2018;19 March, 2018;d;chg001;1
20 March, 2018;2 June, 2018;e;chg001;1
</dataAsString>
            </memoryDataTable>
            <memoryDataTable tableName="phases" rowLimit="-1" id="b24aaebb-7ce3-42a9-bab0-a54bc4c4b896">
                <column name="phase" tableType="STRING" type="STRING" selected="true" primaryKey="false" nullObjectAsString=""/>
                <addRowNumber>false</addRowNumber>
                <stringDateConverter></stringDateConverter>
                <trimStrings>true</trimStrings>
                <columnSeparator>,</columnSeparator>
                <commentMarker>#</commentMarker>
                <dataAsString>phase
a
b
c
d
e
</dataAsString>
            </memoryDataTable>
            <memoryDataTable tableName="changes" rowLimit="-1" id="8ba9aaca-0d93-49b1-851f-4f325e05bbbe">
                <column name="chg" tableType="STRING" type="STRING" selected="true" primaryKey="false" nullObjectAsString=""/>
                <addRowNumber>false</addRowNumber>
                <stringDateConverter></stringDateConverter>
                <trimStrings>true</trimStrings>
                <columnSeparator>;</columnSeparator>
                <commentMarker>#</commentMarker>
                <dataAsString>chg
chg001
chg002
chg003</dataAsString>
            </memoryDataTable>
            <memoryDataTable tableName="facts - delta" rowLimit="-1" id="aea29582-84e2-4ef4-a169-5d9549141ba6">
                <column name="date" tableType="STRING" type="DATE" selected="true" primaryKey="false" nullObjectAsString=""/>
                <column name="phase" tableType="STRING" type="STRING" selected="true" primaryKey="false" nullObjectAsString=""/>
                <column name="chg" tableType="STRING" type="STRING" selected="true" primaryKey="false" nullObjectAsString=""/>
                <column name="delta" tableType="STRING" type="INTEGER" selected="true" primaryKey="false" nullObjectAsString=""/>
                <addRowNumber>false</addRowNumber>
                <stringDateConverter>d MMM, yyyy</stringDateConverter>
                <stringDateConverterLocale>en</stringDateConverterLocale>
                <trimStrings>true</trimStrings>
                <columnSeparator>;</columnSeparator>
                <commentMarker>#</commentMarker>
                <dataAsString>date;phase;chg;delta
1 January, 2018;a;chg001;1
1 February, 2018;b;chg001;1
5 March, 2018;c;chg001;1
20 March, 2018;d;chg001;1
20 March, 2018;e;chg001;1
1 February, 2018;a;chg001; -1
5 March, 2018;b;chg001;-1
20 March, 2018;c;chg001;-1
20 March, 2018;d;chg001;-1
13 June, 2018;e;chg001;-1
</dataAsString>
            </memoryDataTable>
        </inMemoryDS>
        <multiLevelDimension dataTableId="8ba9aaca-0d93-49b1-851f-4f325e05bbbe" isTimeDimension="false" isDefaultTimeDimension="false" isIndexingByRange="false" id="0c4cf980-73d9-4c42-ae47-a300421c29a2" name="Change">
            <multiLevelHierarchy hasAllLevel="true" allLevelName="All-Level" allMemberName="All" name="Change" isDefault="true">
                <level name="change" nameUnique="false" nameUniqueInParent="false" keyUnique="false" ignoreNameCollision="false">
                    <nameCol name="chg"/>
                    <orderType>BY_NAME</orderType>
                    <orderKind>ASC</orderKind>
                </level>
            </multiLevelHierarchy>
        </multiLevelDimension>
        <multiLevelDimension dataTableId="b24aaebb-7ce3-42a9-bab0-a54bc4c4b896" isTimeDimension="false" isDefaultTimeDimension="false" isIndexingByRange="false" id="ed48052e-2c11-48a8-9407-c4854b163cb6" name="Phase">
            <multiLevelHierarchy hasAllLevel="true" allLevelName="All-Level" allMemberName="All" name="Phase" isDefault="true">
                <level name="phase" nameUnique="false" nameUniqueInParent="false" keyUnique="false" ignoreNameCollision="false">
                    <nameCol name="phase"/>
                    <orderType>BY_NAME</orderType>
                    <orderKind>ASC</orderKind>
                </level>
            </multiLevelHierarchy>
        </multiLevelDimension>
        <timeWizardDimension isDefaultTimeDimension="false" isIndexingByRange="true" from="2018-06-01T00:00:00.000" to="2018-07-31T00:00:00.000" dataTableId="c41cc2b5-1412-4da1-8e0e-3bd1b07e9d66" unknownMemberName="" id="b545bf65-ec47-4267-a4f1-a8df35096bc4" name="Time">
            <timeHierarchy hasAllLevel="true" allLevelName="All-L" allMemberName="All-M" name="Time" isDefault="true" defaultMemberName="">
                <factAggregationType>MEMBER_AND_ANCESTORS</factAggregationType>
                <level name="Year" type="YEAR">
                    <useRelativeKey>false</useRelativeKey>
                </level>
                <level name="Month" type="MONTH" nameFormat="">
                    <useRelativeKey>false</useRelativeKey>
                </level>
                <level name="Day" type="DAY" nameFormat="">
                    <useRelativeKey>false</useRelativeKey>
                </level>
            </timeHierarchy>
            <timeWizardColumn name="start"/>
        </timeWizardDimension>
        <cube id="b9aceb66-c3dc-4d20-9f74-1ada8769cf75" name="Changes" description="">
            <defaultFacts measureGroupName="Facts" partitioningLevelName="" partitioningType="NONE" newGeneration="true" dataTableId="c41cc2b5-1412-4da1-8e0e-3bd1b07e9d66" aggregateDataSourceFacts="false" unresolvedRowsBehavior="ERROR">
                <rowFactAggregationType>ADD_ROW</rowFactAggregationType>
                <measure name="# changes" aggregationType="SUM">
                    <rollupHierarchy></rollupHierarchy>
                    <dataColumn name="#changes"/>
                    <cellProperties></cellProperties>
                    <emptyIsZero>false</emptyIsZero>
                </measure>
                <measure name="# changes close" aggregationType="CLOSE">
                    <rollupHierarchy>[Time].[Time]</rollupHierarchy>
                    <dataColumn name="#changes"/>
                    <cellProperties></cellProperties>
                    <emptyIsZero>false</emptyIsZero>
                </measure>
                <links dimensionId="0c4cf980-73d9-4c42-ae47-a300421c29a2">
                    <viewLinks type="LAST_LEVEL">
                        <toColumns name="chg"/>
                    </viewLinks>
                </links>
                <links dimensionId="ed48052e-2c11-48a8-9407-c4854b163cb6">
                    <viewLinks type="LAST_LEVEL">
                        <toColumns name="phase"/>
                    </viewLinks>
                </links>
                <links dimensionId="b545bf65-ec47-4267-a4f1-a8df35096bc4">
                    <viewLinks type="RANGE_FROM_TO">
                        <toColumns name="start"/>
                        <toColumns name="end"/>
                    </viewLinks>
                </links>
            </defaultFacts>
            <defaultFacts measureGroupName="Facts - delta" partitioningLevelName="" partitioningType="NONE" newGeneration="true" dataTableId="aea29582-84e2-4ef4-a169-5d9549141ba6" aggregateDataSourceFacts="false" unresolvedRowsBehavior="ERROR">
                <rowFactAggregationType>ADD_ROW</rowFactAggregationType>
                <measure name="# changes (based on delta)" aggregationType="SUM">
                    <rollupHierarchy></rollupHierarchy>
                    <dataColumn name="delta"/>
                    <cellProperties></cellProperties>
                    <emptyIsZero>false</emptyIsZero>
                </measure>
                <links dimensionId="0c4cf980-73d9-4c42-ae47-a300421c29a2">
                    <viewLinks type="LAST_LEVEL">
                        <toColumns name="chg"/>
                    </viewLinks>
                </links>
                <links dimensionId="ed48052e-2c11-48a8-9407-c4854b163cb6">
                    <viewLinks type="LAST_LEVEL">
                        <toColumns name="phase"/>
                    </viewLinks>
                </links>
                <links dimensionId="b545bf65-ec47-4267-a4f1-a8df35096bc4">
                    <viewLinks type="LAST_LEVEL">
                        <toColumns name="date"/>
                    </viewLinks>
                </links>
            </defaultFacts>
        </cube>
        <localization enabled="false"/>
        <script>
            <content>-- 
-- Automatically migrated from an old XML file definition format (v2.0.4 or before) 
-- 

-- 
-- Drop all calc. members, sets and functions declared at schema/cube levels 
-- 

DROP *


-- 
-- Functions 
-- 

-- 
-- Sets 
-- 

-- 
-- Calculated Measures/Members 
-- 

CREATE MEMBER [#changes ITD] as Aggregate( compactSet(NULL:[Time].[Time].currentMember) , [Measures].[# changes (based on delta)] )</content>
        </script>
    </schemaDefinition>
</schemaFactory>
0 голосов
/ 28 июня 2018

Я нашел решение с обычным MDX, следуя подходу, данному purple frog . К сожалению, стандартное решение, предоставляемое icCube, не поддерживает проблему «конец периода», как указано в моем вопросе.

Я перестроил проблему в прилагаемой схеме icCube для справки, может кто-нибудь еще столкнется с подобной проблемой. В конце этого решения я добавил схему icCube в виде XML-кода.

  • 1-й - данные (LEFT: набор данных для Ranged Dimension II - но не работает для фаз, RIGHT: набор данных, который обеспечивает требуемый результат) LEFT: data set for Ranged Dimension II - but does not work for phases, RIGHT: data set that provides the required result

  • НЕПРАВИЛЬНЫЙ РЕЗУЛЬТАТ - MDX на основе LEFT - ранжированное измерение: incorrect result - the highlighted values should not be there

  • ПРАВИЛЬНЫЙ РЕЗУЛЬТАТ - MDX на основе ПРАВИЛЬНОГО набора данных: correct result

Несколько соображений: - Обратите внимание, что в «ПРАВИЛЬНОМ РЕЗУЛЬТАТЕ» значение «1» для 2018 июня было удалено. Это может показаться неожиданным, но это соответствует определению проблемы: показать значение конца выбранного периода (в данном случае: месяц). А так как фаза "е" закончилась 13 июня, она пустует 30 июня.

Надеюсь, вам это тоже поможет.

Вот схема XML-компоновщика:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<schemaFactory revisionNumber="7">
    <schemaDefinition name="Phases - ranged dimension II" description="issue description StackOverflow" group="StackOverflow" loadOnStartup="false">
        <activateIncrementalLoad>false</activateIncrementalLoad>
        <useUnknownMembersInFacts>false</useUnknownMembersInFacts>
        <autoCleanUpTableColumns>false</autoCleanUpTableColumns>
        <useFactPartitioning>false</useFactPartitioning>
        <callGarbageCollector>NONE</callGarbageCollector>
        <backup>NONE</backup>
        <nonEmptyCachePolicy>NONE</nonEmptyCachePolicy>
        <nonEmptyCacheType>REGULAR</nonEmptyCacheType>
        <nonEmptyCachePersistency>MEMORY</nonEmptyCachePersistency>
        <storagePolicy>DEFAULT</storagePolicy>
        <hierarchyUniqueNameStyle>IncludeDimensionName</hierarchyUniqueNameStyle>
        <inMemoryDS name="manual">
            <memoryDataTable tableName="facts" rowLimit="-1" id="c41cc2b5-1412-4da1-8e0e-3bd1b07e9d66">
                <column name="start" tableType="STRING" type="DATE" selected="true" primaryKey="false" nullObjectAsString=""/>
                <column name="end" tableType="STRING" type="DATE" selected="true" primaryKey="false" nullObjectAsString=""/>
                <column name="phase" tableType="STRING" type="STRING" selected="true" primaryKey="false" nullObjectAsString=""/>
                <column name="chg" tableType="STRING" type="STRING" selected="true" primaryKey="false" nullObjectAsString=""/>
                <column name="#changes" tableType="STRING" type="INTEGER" selected="true" primaryKey="false" nullObjectAsString=""/>
                <addRowNumber>false</addRowNumber>
                <stringDateConverter>d MMM, yyyy</stringDateConverter>
                <stringDateConverterLocale>en</stringDateConverterLocale>
                <trimStrings>true</trimStrings>
                <columnSeparator>;</columnSeparator>
                <commentMarker>#</commentMarker>
                <dataAsString>start;end;phase;chg;#changes
1 January, 2018;1 February, 2018; a;chg001;1
1 February, 2018;5 March, 2018;b;chg001;1
5 March, 2018;20 March, 2018;c;chg001;1
20 March, 2018;20 March, 2018;d;chg001;1
20 March, 2018;3 June, 2018;e;chg001;1
</dataAsString>
            </memoryDataTable>
            <memoryDataTable tableName="phases" rowLimit="-1" id="b24aaebb-7ce3-42a9-bab0-a54bc4c4b896">
                <column name="phase" tableType="STRING" type="STRING" selected="true" primaryKey="false" nullObjectAsString=""/>
                <addRowNumber>false</addRowNumber>
                <stringDateConverter></stringDateConverter>
                <trimStrings>true</trimStrings>
                <columnSeparator>,</columnSeparator>
                <commentMarker>#</commentMarker>
                <dataAsString>phase
a
b
c
d
e
</dataAsString>
            </memoryDataTable>
            <memoryDataTable tableName="changes" rowLimit="-1" id="8ba9aaca-0d93-49b1-851f-4f325e05bbbe">
                <column name="chg" tableType="STRING" type="STRING" selected="true" primaryKey="false" nullObjectAsString=""/>
                <addRowNumber>false</addRowNumber>
                <stringDateConverter></stringDateConverter>
                <trimStrings>true</trimStrings>
                <columnSeparator>;</columnSeparator>
                <commentMarker>#</commentMarker>
                <dataAsString>chg
chg001
chg002
chg003</dataAsString>
            </memoryDataTable>
            <memoryDataTable tableName="facts - delta" rowLimit="-1" id="aea29582-84e2-4ef4-a169-5d9549141ba6">
                <column name="date" tableType="STRING" type="DATE" selected="true" primaryKey="false" nullObjectAsString=""/>
                <column name="phase" tableType="STRING" type="STRING" selected="true" primaryKey="false" nullObjectAsString=""/>
                <column name="chg" tableType="STRING" type="STRING" selected="true" primaryKey="false" nullObjectAsString=""/>
                <column name="delta" tableType="STRING" type="INTEGER" selected="true" primaryKey="false" nullObjectAsString=""/>
                <addRowNumber>false</addRowNumber>
                <stringDateConverter>d MMM, yyyy</stringDateConverter>
                <stringDateConverterLocale>en</stringDateConverterLocale>
                <trimStrings>true</trimStrings>
                <columnSeparator>;</columnSeparator>
                <commentMarker>#</commentMarker>
                <dataAsString>date;phase;chg;delta
1 January, 2018;a;chg001;1
1 February, 2018;b;chg001;1
5 March, 2018;c;chg001;1
20 March, 2018;d;chg001;1
20 March, 2018;e;chg001;1
1 February, 2018;a;chg001; -1
5 March, 2018;b;chg001;-1
20 March, 2018;c;chg001;-1
20 March, 2018;d;chg001;-1
13 June, 2018;e;chg001;-1
</dataAsString>
            </memoryDataTable>
        </inMemoryDS>
        <multiLevelDimension dataTableId="8ba9aaca-0d93-49b1-851f-4f325e05bbbe" isTimeDimension="false" isDefaultTimeDimension="false" isIndexingByRange="false" id="0c4cf980-73d9-4c42-ae47-a300421c29a2" name="Change">
            <multiLevelHierarchy hasAllLevel="true" allLevelName="All-Level" allMemberName="All" name="Change" isDefault="true">
                <level name="change" nameUnique="false" nameUniqueInParent="false" keyUnique="false" ignoreNameCollision="false">
                    <nameCol name="chg"/>
                    <orderType>BY_NAME</orderType>
                    <orderKind>ASC</orderKind>
                </level>
            </multiLevelHierarchy>
        </multiLevelDimension>
        <multiLevelDimension dataTableId="b24aaebb-7ce3-42a9-bab0-a54bc4c4b896" isTimeDimension="false" isDefaultTimeDimension="false" isIndexingByRange="false" id="ed48052e-2c11-48a8-9407-c4854b163cb6" name="Phase">
            <multiLevelHierarchy hasAllLevel="true" allLevelName="All-Level" allMemberName="All" name="Phase" isDefault="true">
                <level name="phase" nameUnique="false" nameUniqueInParent="false" keyUnique="false" ignoreNameCollision="false">
                    <nameCol name="phase"/>
                    <orderType>BY_NAME</orderType>
                    <orderKind>ASC</orderKind>
                </level>
            </multiLevelHierarchy>
        </multiLevelDimension>
        <timeWizardDimension isDefaultTimeDimension="false" isIndexingByRange="true" from="2018-06-01T00:00:00.000" to="2018-07-31T00:00:00.000" dataTableId="c41cc2b5-1412-4da1-8e0e-3bd1b07e9d66" unknownMemberName="" id="b545bf65-ec47-4267-a4f1-a8df35096bc4" name="Time">
            <timeHierarchy hasAllLevel="true" allLevelName="All-L" allMemberName="All-M" name="Time" isDefault="true" defaultMemberName="">
                <factAggregationType>MEMBER_AND_ANCESTORS</factAggregationType>
                <level name="Year" type="YEAR">
                    <useRelativeKey>false</useRelativeKey>
                </level>
                <level name="Month" type="MONTH" nameFormat="">
                    <useRelativeKey>false</useRelativeKey>
                </level>
                <level name="Day" type="DAY" nameFormat="">
                    <useRelativeKey>false</useRelativeKey>
                </level>
            </timeHierarchy>
            <timeWizardColumn name="start"/>
        </timeWizardDimension>
        <cube id="b9aceb66-c3dc-4d20-9f74-1ada8769cf75" name="Changes" description="">
            <defaultFacts measureGroupName="Facts" partitioningLevelName="" partitioningType="NONE" newGeneration="true" dataTableId="c41cc2b5-1412-4da1-8e0e-3bd1b07e9d66" aggregateDataSourceFacts="false" unresolvedRowsBehavior="ERROR">
                <rowFactAggregationType>ADD_ROW</rowFactAggregationType>
                <measure name="# changes" aggregationType="SUM">
                    <rollupHierarchy></rollupHierarchy>
                    <dataColumn name="#changes"/>
                    <cellProperties></cellProperties>
                    <emptyIsZero>false</emptyIsZero>
                </measure>
                <measure name="# changes close" aggregationType="CLOSE">
                    <rollupHierarchy>[Phase].[Phase]</rollupHierarchy>
                    <dataColumn name="#changes"/>
                    <cellProperties></cellProperties>
                    <emptyIsZero>false</emptyIsZero>
                </measure>
                <links dimensionId="0c4cf980-73d9-4c42-ae47-a300421c29a2">
                    <viewLinks type="LAST_LEVEL">
                        <toColumns name="chg"/>
                    </viewLinks>
                </links>
                <links dimensionId="ed48052e-2c11-48a8-9407-c4854b163cb6">
                    <viewLinks type="LAST_LEVEL">
                        <toColumns name="phase"/>
                    </viewLinks>
                </links>
                <links dimensionId="b545bf65-ec47-4267-a4f1-a8df35096bc4">
                    <viewLinks type="RANGE_FROM_TO">
                        <toColumns name="start"/>
                        <toColumns name="end"/>
                    </viewLinks>
                </links>
            </defaultFacts>
            <defaultFacts measureGroupName="Facts - delta" partitioningLevelName="" partitioningType="NONE" newGeneration="true" dataTableId="aea29582-84e2-4ef4-a169-5d9549141ba6" aggregateDataSourceFacts="false" unresolvedRowsBehavior="ERROR">
                <rowFactAggregationType>ADD_ROW</rowFactAggregationType>
                <measure name="# changes (based on delta)" aggregationType="SUM">
                    <rollupHierarchy></rollupHierarchy>
                    <dataColumn name="delta"/>
                    <cellProperties></cellProperties>
                    <emptyIsZero>false</emptyIsZero>
                </measure>
                <links dimensionId="0c4cf980-73d9-4c42-ae47-a300421c29a2">
                    <viewLinks type="LAST_LEVEL">
                        <toColumns name="chg"/>
                    </viewLinks>
                </links>
                <links dimensionId="ed48052e-2c11-48a8-9407-c4854b163cb6">
                    <viewLinks type="LAST_LEVEL">
                        <toColumns name="phase"/>
                    </viewLinks>
                </links>
                <links dimensionId="b545bf65-ec47-4267-a4f1-a8df35096bc4">
                    <viewLinks type="LAST_LEVEL">
                        <toColumns name="date"/>
                    </viewLinks>
                </links>
            </defaultFacts>
        </cube>
        <localization enabled="false"/>
        <script>
            <content>-- 
-- Automatically migrated from an old XML file definition format (v2.0.4 or before) 
-- 

-- 
-- Drop all calc. members, sets and functions declared at schema/cube levels 
-- 

DROP *


-- 
-- Functions 
-- 

-- 
-- Sets 
-- 

-- 
-- Calculated Measures/Members 
-- 

</content>
        </script>
    </schemaDefinition>
</schemaFactory>
...