2016-04-12 5 views
0

Существует много информации, которая не подходит в качестве Меры, а также не имеет необходимой размерности, поэтому я решил интегрировать эти данные в FactTable для более позднего выполнения Action (информация, подобная Номер документа, строка документа и т. Д.). Поэтому я использую FactTable как измерение факта (или вырожденную размерность, которую называет Кимбалл). Размерность Факта была связана после создания с группой мер, как на картинке ниже:Производительность по вырожденному размеру для детализации действий и обработки

Fact Dimension

/габарит Факта есть таблица фактов 140.000.000 строки, так что я решил использовать ROLAP как режим хранения, пытаясь избежать Обработка MOLAP, но теперь проблемы с производительностью перемещаются в процессе детализации. Все остальные Размеры указаны в MOLAP. Анализ ispalled на 64x-сервере с 98 ГБ ОЗУ и Memory\TotalMemoryLimit был установлен на 70%.

Я также активирую Profiler, когда выполнялось упражнение свертки (над вырожденным размером в роллапе), поэтому я получаю SQL-Query. Множество агрегатов и групп - не интересно.

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

ОБНОВЛЕНИЯ 13.04

Я прилагается ниже плана выполнения для запроса, полученного в Profiler: enter image description here

SELECT 
SUM ([dbo_FactCdbSAP_Details].[Amount]) AS Amount, 
SUM ([dbo_FactCdbSAP_Details].[SharedAmount]) AS SharedAmount, 
[dbo_FactCdbSAP_Details].[Pk_id] , 
[dbo_FactCdbSAP_Details].[DocumentNo] , 
[dbo_FactCdbSAP_Details].[DocumentLine] , 
[dbo_FactCdbSAP_Details].[DocumentHeader] , 
[dbo_FactCdbSAP_Details].[DocumentType] , 
[dbo_FactCdbSAP_Details].[Reference] , 
[dbo_FactCdbSAP_Details].[DocumentDate] , 
[dbo_FactCdbSAP_Details].[EntryDate] , 
[dbo_FactCdbSAP_Details].[FiscalPeriod] , 
[dbo_FactCdbSAP_Details].[StornoDocNo] , 
[dbo_FactCdbSAP_Details].[DocumentCurrency] , 
[dbo_FactCdbSAP_Details].[CustomerNumber] , 
[dbo_FactCdbSAP_Details].[EnteredBy] , 
[dbo_FactCdbSAP_Details].[PartnerSegment] , 
[dbo_FactCdbSAP_Details].[PartnerBusinessArea] , 
[dbo_FactCdbSAP_Details].[ItemText] , 
[dbo_FactCdbSAP_Details].[ID_Date] , 
[dbo_FactCdbSAP_Details].[ID_CostCategory] , 
[dbo_FactCdbSAP_Details].[ID_CostCenter] , 
[dbo_FactCdbSAP_Details].[ID_Currency] , 
[dbo_FactCdbSAP_Details].[ID_Branch] , 
[dbo_FactCdbSAP_Details].[ID_Customer] , 
[dbo_FactCdbSAP_Details].[ID_Scenario] , 
[dbo_DimCostCategory_3].[AccountNo] , 
[dbo_DimCostCategory_3].[AccountNameDEU] , 
[dbo_DimCostCategory_3].[AccountNameEng] , 
[dbo_DimCostCategory_3].[AccountType] , 
[dbo_DimCostCategory_3].[AccountSetSAP] , 
[dbo_DimCostCenter_4].[CostCenterNo] , 
[dbo_DimCostCenter_4].[CostCenterName] , 
[dbo_DimCostCenter_4].[CostCenterAliasDEU] , 
[dbo_DimCostCenter_4].[CostCenterAliasENG] , 
[dbo_DimCurrency_5].[CurrencyCode] , 
[dbo_DimCurrency_5].[CurrencyENG] , 
[dbo_DimBranchShare_6].[Branch No] , 
[dbo_DimBranchShare_6].[Branch Name DE] , 
[dbo_DimBranchShare_6].[Branch Name TM1] , 
[dbo_DimBranchShare_6].[Branch Name ENG] , 
[dbo_DimBranchShare_6].[BranchId] , 
[dbo_DimBranchShare_6].[SharePercentage] , 
[dbo_DimBranchShare_6].[Branch Name ASL] , 
[dbo_DimBranchShare_6].[Country] , 
[dbo_DimBranchShare_6].[Currency] , 
[dbo_DimBranchShare_6].[IsSAP] , 
[dbo_DimCustomers_7].[Customer No] , 
[dbo_DimCustomers_7].[Customer Name1] , 
[dbo_DimCustomers_7].[Short Name] , 
[dbo_DimCustomers_7].[Street] , 
[dbo_DimCustomers_7].[Country] , 
[dbo_DimCustomers_7].[Postal Code] , 
[dbo_DimCustomers_7].[Telefon No] , 
[dbo_DimCustomers_7].[Fax TeletexNo] , 
[dbo_DimCustomers_7].[Attending BST] , 
[dbo_DimCustomers_7].[Key Industry Sector] , 
[dbo_DimCustomers_7].[Booking No] , 
[dbo_DimCustomers_7].[Status Inactiv] , 
[dbo_DimCustomers_7].[Company Key] , 
[dbo_DimCustomers_7].[Direct Mailing Forwarder] , 
[dbo_DimCustomers_7].[Direct Mailing BKeeping] , 
[dbo_DimCustomers_7].[Direct Mailing Sales] , 
[dbo_DimCustomers_7].[Direct Mailing Magazines] , 
[dbo_DimCustomers_7].[Customer Name2] , 
[dbo_DimCustomers_7].[Customer Name3] , 
[dbo_DimScenario_8].[ScenarioTypeENG] , 
[dbo_DimDate_2].[Quarter] , 
[dbo_DimDate_2].[Jan-Feb] , 
[dbo_DimDate_2].[Jan-Mrz] , 
[dbo_DimDate_2].[Jan-Apr] , 
[dbo_DimDate_2].[Jan-Mai] , 
[dbo_DimDate_2].[Jan-Jun] , 
[dbo_DimDate_2].[Jan-Jul] , 
[dbo_DimDate_2].[Jan-Aug] , 
[dbo_DimDate_2].[Jan-Sep] , 
[dbo_DimDate_2].[Jan-Okt] , 
[dbo_DimDate_2].[Jan-Nov] , 
[dbo_DimDate_2].[Jan-Dez] , 
[dbo_DimDate_2].[MonthName] , 
[dbo_DimDate_2].[Semester] 
FROM (
     SELECT 
      [dbo].[FactCdbSAP_Details].[Pk_id], 
      [dbo].[FactCdbSAP_Details].[ID_Date], 
      [dbo].[FactCdbSAP_Details].[ID_Scenario], 
      [dbo].[FactCdbSAP_Details].[ID_Branch], 
      [dbo].[FactCdbSAP_Details].[ID_CostCategory], 
      [dbo].[FactCdbSAP_Details].[ID_CostCenter], 
      [dbo].[FactCdbSAP_Details].[ID_Customer], 
      [dbo].[FactCdbSAP_Details].[ID_Currency], 
      [dbo].[FactCdbSAP_Details].[DocumentNo], 
      [dbo].[FactCdbSAP_Details].[DocumentLine], 
      [dbo].[FactCdbSAP_Details].[DocumentHeader], 
      [dbo].[FactCdbSAP_Details].[DocumentType], 
      [dbo].[FactCdbSAP_Details].[Reference], 
      [dbo].[FactCdbSAP_Details].[DocumentDate], 
      [dbo].[FactCdbSAP_Details].[EntryDate], 
      [dbo].[FactCdbSAP_Details].[FiscalPeriod], 
      [dbo].[FactCdbSAP_Details].[StornoDocNo], 
      [dbo].[FactCdbSAP_Details].[DocumentCurrency], 
      [dbo].[FactCdbSAP_Details].[CustomerNumber], 
      [dbo].[FactCdbSAP_Details].[EnteredBy], 
      [dbo].[FactCdbSAP_Details].[PartnerSegment], 
      [dbo].[FactCdbSAP_Details].[PartnerBusinessArea], 
      [dbo].[FactCdbSAP_Details].[ItemText], 
      [dbo].[FactCdbSAP_Details].[Amount], 
      [dbo].[FactCdbSAP_Details].[SharedAmount] 
     FROM [dbo].[FactCdbSAP_Details] 
     WHERE 
      id_date >201509 
      ) AS [dbo_FactCdbSAP_Details], 
       [dbo].[DimCostCategory] AS [dbo_DimCostCategory_3], 
       [dbo].[DimCostCenter] AS [dbo_DimCostCenter_4], 
       [dbo].[DimCurrency] AS [dbo_DimCurrency_5], 
       [dbo].[DimBranchShare] AS [dbo_DimBranchShare_6], 
       [dbo].[DimCustomers] AS [dbo_DimCustomers_7], 
       [dbo].[DimScenario] AS [dbo_DimScenario_8], 
       [dbo].[DimDate] AS [dbo_DimDate_2] 

WHERE 

      [dbo_FactCdbSAP_Details].[ID_Date] = [dbo_DimDate_2].[ID_Date] 
      AND  
      [dbo_FactCdbSAP_Details].[ID_CostCategory] = [dbo_DimCostCategory_3].[PK_Cost] 
      AND  
      [dbo_FactCdbSAP_Details].[ID_CostCenter] = [dbo_DimCostCenter_4].[Pk_CostCenter] 
      AND  
      [dbo_FactCdbSAP_Details].[ID_Currency] = [dbo_DimCurrency_5].[Pk_Currency] 
      AND  
      [dbo_FactCdbSAP_Details].[ID_Branch] = [dbo_DimBranchShare_6].[PK_ShareBranch] 
      AND  
      [dbo_FactCdbSAP_Details].[ID_Customer] = [dbo_DimCustomers_7].[Pk_Customer] 
      AND  
      [dbo_FactCdbSAP_Details].[ID_Scenario] = [dbo_DimScenario_8].[Pk_Scenario] 
      AND  
      [dbo_DimCurrency_5].[CurrencyDEU] = 'Lokale Währung' 
      AND  
      [dbo_DimScenario_8].[ScenarioTypeDEU] = 'Ist'  
      AND  
      [dbo_DimDate_2].[Year] = 2016 
      AND  
      [dbo_DimDate_2].[Month] = 2 
group by 
.... 
+0

Что SQL-запрос он работает во время детализация? Можете ли вы вручную отредактировать SQL-запрос, чтобы он работал быстро? Укажите исходный и оптимизированный SQL. Я сомневаюсь, что мы сможем помочь, но это возможно. – GregGalloway

+0

@GregGalloway Я приложил план выполнения и запрос, который был выполнен во время действия сверления (в сводной таблице).Я не могу изменить запрос. Будет ли план индексирования хорошей идеей? Я знаю, что индексы не рекомендуются в хранилище данных (это замедлит другие транзакции, которые находятся за пределами детализации) –

+0

какая версия SQL и версия? Если SQL 2014 и Enterprise Edition, то переключение таблицы фактов в кластерный магазин столбцов должны многое помочь. – GregGalloway

ответ

1

Для того, чтобы получить хорошую производительность как для детализированных действий и обработок следующего решения было найдено и реализовано:

  • Я изменил хранилище е Режим вырожденного измерения в MOLAP
  • AttributeHierarchyOptimizedState=FullyOptimized для всех atributes вырожденных размерностей
  • AttributeHierarchyOrdered=false для первичного ключа вырожденного размерности
  • Я осуществил процесс Add. Таблица Delta Today-Вчера была создана, чтобы узнать данные, подходящие для ProcessAdd (в этом случае старые данные не будут изменены)
  • Пакет SSIS был создан с помощью DataFlowTask. Внутри DataFlowTask таблица delta была установлена ​​как OLEDB Source and Dimension Processing Task как Destination (это означает, что добавочное добавление напрямую в MOLAP Dimension). На приведенном ниже рисунке показано, что: Incremental Add in Dimension

  • В конце будет обработан только затронутый раздел куба с параметром ProcessAdd. ProcessAdd Partition

Большое спасибо Грег Галлоуэя для описания ProcessAdd ОНД большой размерности на этом посту http://www.artisconsulting.com/blogs/greggalloway/2007/4/20/processadd-on-large-dimensions