Ошибка уровня вывода микростратегии

#sql #cross-join #microstrategy

#sql #перекрестное объединение #микростратегия

Вопрос:

Я прохожу обучение по MicroStrategy и практиковался в создании фильтров с уровнями вывода с 3 атрибутами: Country, Product и Year, и одной суммой показателей OrderQuantity от FactResellerSales с метрикой в качестве фильтра отчета, с уровнями вывода только для атрибутов product и year и без агрегирования по стране.

Однако я получаю совершенно другой набор чисел, чем тот, что приведен в книге, и я не знаю, что я делаю неправильно. Я вижу, что полное удаление атрибута country из отчета дает точный набор данных, соответствующий тому, что показано в книге. Ниже то, что я видел в представлении SQL. Пожалуйста, помогите мне понять, что может быть не так в этом отчете.

 select  a11.ProductKey  ProductKey,
    a12.CalendarYear  CalendarYear
into ##T3X3AC0ARMQ000
from    FactResellerSales   a11
    join    DimDate a12
      on    (a11.OrderDateKey = a12.DateKey)
group by    a11.ProductKey,
    a12.CalendarYear
having  sum(a11.OrderQuantity) > 1000.0 

Pass1 -     Query Execution:    0:00:21.04
    Data Fetching and Processing:   0:00:00.00
      Data Transfer from Datasource(s): 0:00:00.00
    Other Processing:   0:00:00.03
    Rows selected: 210


select  a11.ProductKey  ProductKey,
    max(a15.EnglishProductName)  EnglishProductName,
    a12.CountryRegionCode  CountryRegionCode,
    max(a12.EnglishCountryRegionName)  EnglishCountryRegionName,
    a13.CalendarYear  CalendarYear,
    sum(a11.OrderQuantity)  WJXBFS1
from    FactResellerSales   a11
    cross join  DimGeography    a12
    join    DimDate a13
      on    (a11.OrderDateKey = a13.DateKey)
    join    ##T3X3AC0ARMQ000    pa14
      on    (a11.ProductKey = pa14.ProductKey and 
    a13.CalendarYear = pa14.CalendarYear)
    join    DimProduct  a15
      on    (a11.ProductKey = a15.ProductKey)
group by    a11.ProductKey,
    a12.CountryRegionCode,
    a13.CalendarYear

Pass2 -     Query Execution:    0:00:00.00
    Data Fetching and Processing:   0:00:00.00
      Data Transfer from Datasource(s): 0:00:00.00
    Other Processing:   0:00:00.00
[Populate Report Data]

Pass3 -     Query Execution:    0:00:00.00
    Data Fetching and Processing:   0:00:00.00
      Data Transfer from Datasource(s): 0:00:00.00
    Other Processing:   0:00:00.02

drop table ##T3X3AC0ARMQ000
  

Ответ №1:

Конечно, у вас возникают странные данные, когда вы вводите атрибут country: это создает перекрестное соединение с географией. Я не могу точно знать, почему, потому что я не знаю схему вашего хранилища данных, но я бы сказал, что похоже, что DimGeography отсутствует в вашей таблице фактов; по крайней мере, не напрямую. Обычно создается дублирующая иерархия, поэтому у вас может быть SalesGeography.

Если вы дадите мне больше деталей, я смогу вам еще больше помочь.