Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / OLAP и DWH Новый топик    Ответить
 MDX-запрос (слияние строк)  [new]
maluns
Member

Откуда:
Сообщений: 1
Помогите, пожалуйста.

Есть следующий mdx-запрос:

SELECT
NON EMPTY {
[Dim Investigation Report].[ID].children *
[Dim Energy Object Full].[Name].children} ON ROWS,
NON EMPTY {[Measures].[ID Distinct Count]} ON COLUMNS
FROM [Акты расследований]

Он возвращает:

003022 2604171226005 Красноярск 1
003022 2604171226005 Сибирь 1

Как мне переписать запрос, чтобы он возвращал следующее:

003022 2604171226005 Красноярск, Сибирь 1
2 авг 17, 15:34    [20695238]     Ответить | Цитировать Сообщить модератору
 Re: MDX-запрос (слияние строк)  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 1955
maluns,

расширенный ответ, который включает и Вашу не до конца понятную ситуацию.

WITH 
MEMBER [Customer].[Gender].[20] as null
MEMBER [Customer].[Gender].[50] as null
MEMBER [Customer].[Gender].[100] as null
MEMBER [Customer].[Gender].[200] as null
MEMBER [val_min] as case 
                                     when [Customer].[Gender].CurrentMember is [Customer].[Gender].[20] then 0
                                     when [Customer].[Gender].CurrentMember is [Customer].[Gender].[50] then 21
                                     when [Customer].[Gender].CurrentMember is [Customer].[Gender].[100] then 51
                                     when [Customer].[Gender].CurrentMember is [Customer].[Gender].[200] then 101
                                    end
MEMBER [val_max] as case 
                                     when [Customer].[Gender].CurrentMember is [Customer].[Gender].[20] then 20
                                     when [Customer].[Gender].CurrentMember is [Customer].[Gender].[50] then 50
                                     when [Customer].[Gender].CurrentMember is [Customer].[Gender].[100] then 100
                                     when [Customer].[Gender].CurrentMember is [Customer].[Gender].[200] then 200
                                    end

set [CC] as {[Customer].[Gender].[20], [Customer].[Gender].[50], [Customer].[Gender].[100], [Customer].[Gender].[200]}

member [gen] as 
  generate(
    filter(
      exists([Customer].[City].[City], [Customer].[Country].CurrentMember), 
      ([Customer].[Gender].[All],[Measures].[Customer Count]) > ([Customer].[Gender].CurrentMember, [val_min]) 
        and 
     ([Customer].[Gender].[All], [Measures].[Customer Count]) <= ([Customer].[Gender].CurrentMember, [val_max])
    ), 
   [Customer].[City].CurrentMember.Name +  ', ')

 SELECT  
  { [val_min], [val_max], [gen]} ON COLUMNS,
  {[Customer].[Country].[Country] * [CC]} ON ROWS
 FROM 
  [Adventure Works] 


Gender здесь используется только как вспомогательная иерархия и отображает кол-во Customers в City до 20, от 21 до 50, от 51 до 100 и от 101 до 200.
Если добавить в колонки меру Customer Count, то она покажет общую сумму по City вошедших в эту категорию.

Вам должен быть интересен member [gen].
3 авг 17, 12:55    [20697620]     Ответить | Цитировать Сообщить модератору
Все форумы / OLAP и DWH Ответить