#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.
Если вы дадите мне больше деталей, я смогу вам еще больше помочь.