2017-01-04 7 views
0

UPDATE: разрешение должно было выполнить процесс, полный на уровне базы данных, а не на уровне раздела.Результаты запроса MDX на отсутствующий partion - Tabular 2012

Я пытаюсь понять поведение, которое я наблюдаю, с помощью запроса табличной модели. Я разделяю поквартально, поэтому, когда в начале этого квартала я построил новый раздел «текущий квартал», раздел, который использовался для хранения 2016-Q4, был перезаписан 2017-Q1. Затем, когда я выполнил свой MDX-запрос против фильтрации табличной модели в измерении даты для 2016-Q4, вместо того, чтобы возвращать ничего, как я ожидал, он возвращал данные из самого старого раздела 2014-Q1. Это похоже на то, что вместо того, чтобы возвращать никакие данные, он решает вернуть «первую запись» для этого измерения (в этом случае все даты, где 07/01/2014). Каждое другое измерение, которое я фильтровал, по-прежнему выполнялось так, как ожидалось.

Есть ли у кого-нибудь идеи относительно того, почему он ведет себя таким образом? FYI, я попытался реструктуризации мое MDX заявление несколько различных способов:

SELECT 
NON EMPTY { [Measures].[Measure1]} ON COLUMNS, 
NON EMPTY { ([Dimension].[Dimension1])} DIMENSION PROPERTIES member_caption, member_unique_name ON ROWS 
FROM [Model] WHERE ([Dimension].[Dimension2].&[Value], [DateDimension].[DateDimension].&[Value1] : [DateDimension].[DateDimension].&[Value2]) 

И

SELECT 
NON EMPTY { [Measures].[Measure1]} ON COLUMNS, 
NON EMPTY { (except([Dimension].[Dimension1].members,[Dimension].[Dimension1].[all]))} DIMENSION PROPERTIES member_caption, member_unique_name ON ROWS 
FROM (SELECT ([Dimension].[Dimension1].&[Value]) ON COLUMNS 
FROM (SELECT ([Dimension].[Dimension2].&[Value]) ON COLUMNS 
FROM (SELECT ([DateDimension].[DateDimension].&[Value1] : [DateDimension].[DateDimension].&[Value2]) ON COLUMNS 
FROM [Model]))) 

Edit: добавлен пример реального MDX

SELECT 
NON EMPTY { [Measures].[ConvertedNetRevenue], 
[Measures].[LoadConvertedNetRevenue], 
[Measures].[OrderConvertedNetRevenue], 
[Measures].[TotalOrderBrokerageCount], 
[Measures].[TotalLoadBrokerageCount] 
} ON COLUMNS, 
NON EMPTY { 
( 
except([BrokerageQuery].[KeyBranch].members,[BrokerageQuery].[KeyBranch].[all]), 
except([BrokerageQuery].[LoadNumber].members,[BrokerageQuery].[LoadNumber].[all]), 
except([BrokerageQuery].[CustomerOrderNumber].members,[BrokerageQuery].[CustomerOrderNumber].[all]), 
except([BrokerageQuery].[BranchName].members,[BrokerageQuery].[BranchName].[all]), 
except([BrokerageQuery].[BranchCode].members,[BrokerageQuery].[BranchCode].[all]), 
except([BrokerageQuery].[BranchRoleDescription].members,[BrokerageQuery].[BranchRoleDescription].[all]), 
except([BrokerageQuery].[ModeDescription].members,[BrokerageQuery].[ModeDescription].[all]), 
except([BrokerageQuery].[ServiceTypeDescription].members,[BrokerageQuery].[ServiceTypeDescription].[all]), 
except([BrokerageQuery].[SystemDisplayName].members,[BrokerageQuery].[SystemDisplayName].[all]), 
except([BrokerageQuery].[IsPartialFinLock].members,[BrokerageQuery].[IsPartialFinLock].[all]), 
except([BrokerageQuery].[KeyDate_Financial].members,[BrokerageQuery].[KeyDate_Financial].[all]) 
) 
} DIMENSION PROPERTIES member_caption, member_unique_name ON ROWS 
FROM (SELECT 
( 
{ 
[dimCurrency].[CurrencyCode].&[USD] 
} 
) ON COLUMNS 
FROM (SELECT 
( 
{ 
{ 
[BrokerageQuery].[KeyBranch].[10279] 
} 
} 
) ON COLUMNS 
FROM (SELECT 
( 
[BrokerageQuery].[KeyDate_Financial].&[20161106] : 
[BrokerageQuery].[KeyDate_Financial].&[20161106] 
) ON COLUMNS 
FROM [Brokerage]))) 
+0

Можете ли вы включить свой фактический запрос MDX дословно? Я предполагаю, что у вас нет реального, так как он говорит Value1? – GregGalloway

+0

Уверен, обновлено с помощью фактического MDX. Я подозреваю, что это не обязательно проблема с MDX, а скорее, как Tabular обрабатывает «отсутствующие» данные, имеет ли это смысл? – ECHR

+0

Если вы просто запустили следующую часть запроса, что она возвращает? Я проверяю эту дату. SELECT ([BrokerageQuery]. [KeyDate_Financial]. & [20161106]: [BrokerageQuery]. [KeyDate_Financial]. & [20161106]) В КОЛОНКАХ ИЗ [Брокерский] – GregGalloway

ответ

0

Вместо обработки наших разделов в отдельности (в начале каждого квартала, когда происходит переразделение), нам необходимо выполнить процесс на уровне базы данных.