Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

73
Marin Bezic SQL BI Product Manager Microsoft EMEA High impact Data Warehousing with SQL Server Integration Services and Analysis Services

description

Assumptions Experience with SSIS and SSAS Goals Discuss design, performance, and scalability for building ETL packages and cubes (UDMs) Best practices Common mistakes

Transcript of Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Page 1: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Marin BezicSQL BI Product ManagerMicrosoft EMEA

High impact Data Warehousing with SQL Server Integration Services and Analysis Services

Page 2: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

A DW architecture

Datawarehouse(SQL Server, Oracle,

DB2, Teradata)

SQL/Oracle SAP/Dynamics Legacy Text XML

Integration Services

Reports Dashboards Scorecards Excel BI tools

Analysis Services

Page 3: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Session ObjectivesAssumptions

Experience with SSIS and SSAS

GoalsDiscuss design, performance, and scalability for building ETL packages and cubes (UDMs)Best practicesCommon mistakes

Page 4: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

SQL Server 2005 BPA availability!

BPA = Best Practice AnalyzerUtility that scans your SQL Server metadata and recommends best practicesBest practices from dev team and Customer Support ServicesWhat’s new:

Support for SQL Server 2005Support for Analysis Services and Integration ServicesScan schedulingAuto update frameworkCTP available now, RTM April

http://www.microsoft.com/downloads/details.aspx?FamilyId=DA0531E4-E94C-4991-82FA-F0E3FBD05E63&displaylang=en

Page 5: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

AgendaIntegration Services

Quick overview of ISPrinciples of Good Package DesignComponent DrilldownPerformance Tuning

Analysis ServicesUDM overviewUDM design best practicesPerformance tips

Page 6: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

What is SQL Server Integration Services?

Introduced in SQL Server 2005The successor to Data Transformation ServicesThe platform for a new generation of high-performance data integration technologies

Page 7: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Call center data: semi structured

Legacy data: binary files

Application database

ETL Warehouse

Reports

Mobiledata

Data mining

Alerts & escalation

• Integration and warehousing require separate, staged operations.• Preparation of data requires different, often incompatible, tools.• Reporting and escalation is a slow process, delaying smart responses.• Heavy data volumes make this scenario increasingly unworkable.

Handcoding

StagingText mining

ETL Staging

Cleansing &

ETL

Staging

ETL

ETL Objective: Before SSIS

Page 8: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Call center: semi-structured data

Legacy data: binary files

Application database

• Integration and warehousing are a seamless, manageable operation.• Source, prepare, and load data in a single, auditable process.• Reporting and escalation can be parallelized with the warehouse load.• Scales to handle heavy and complex data requirements.

SQL Server Integration Services

Text miningcomponents

Customsource

Standardsources

Data-cleansingcomponents

Merges

Data miningcomponents

Warehouse

Reports

Mobiledata

Alerts & escalation

Changing the Game with SSIS

Page 9: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

SSIS ArchitectureControl Flow (Runtime)

A parallel workflow engineExecutes containers and tasks

Data Flow (“Pipeline”)A special runtime taskA high-performance data pipelineApplies graphs of components to data movementComponent can be sources, transformations or destinationsHighly parallel operations possible

Page 10: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

AgendaOverview of Integration ServicesPrinciples of Good Package DesignComponent DrilldownPerformance Tuning

Page 11: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Principles of Good Package Design - General

Follow Microsoft Development GuidelinesIterative design, development & testing

Understand the BusinessUnderstanding the people & processes are critical for successKimball’s “Data Warehouse ETL Toolkit” book is an excellent reference

Get the big pictureResource contention, processing windows, …SSIS does not forgive bad database designOld principles still apply – e.g. load with/without indexes?

Platform considerationsWill this run on IA64 / X64?

No BIDS on IA64 – how will I debug?Is OLE-DB driver XXX available on IA64?

Memory and resource usage on different platforms

Page 12: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Principles of Good Package Design - Architecture

Process ModularityBreak complex ETL into logically distinct packages (vs. monolithic design)Improves development & debug experience

Package ModularitySeparate sub-processes within package into separate ContainersMore elegant, easier to developSimple to disable whole Containers when debugging

Component ModularityUse Script Task/Transform for one-off problemsBuild custom components for maximum re-use

Page 13: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Bad Modularity

Page 14: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Good Modularity

Page 15: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Principles of Good Package Design - Infrastructure

Use Package ConfigurationsBuild it in from the start

Will make things easier later onSimplify deployment Dev QA Production

Use Package LoggingPerformance & debugging

Build in Security from the startCredentials and other sensitive infoPackage & Process IPConfigurations & Parameters

Page 16: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Principles of Good Package Design - Development

SSIS is visual programming! Use source code control system

Undo is not as simple in a GUI environment!Improved experience for multi-developer environment

Comment your packages and scriptsIn 2 weeks even you may forget a subtlety of your designSomeone else has to maintain your code

Use error-handlingUse the correct precedence constraints on tasksUse the error outputs on transforms – store them in a table for processing later, or use downstream if the error can be handled in the packageTry…Catch in your scripts

Page 17: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Component Drilldown - Tasks & TransformsAvoid over-design

Too many moving parts is inelegant and likely slowBut don’t be afraid to experiment – there are many ways to solve a problem

Maximize ParallelismAllocate enough threadsEngineThreads property on DataFlow Task“Rule of thumb” - # of datasources + # of async components

Minimize blockingSynchronous vs. Asynchronous componentsMemcopy is expensive – reduce the number of asynchronous components in a flow if possible – example coming up later

Minimize ancillary dataFor example, minimize data retrieved by LookupTx

Page 18: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Debugging & Performance Tuning - General

Leverage the logging and auditing featuresMsgBox is your friendPipeline debuggers are your friendUse the throughput component from Project REAL

Experiment with different techniquesUse source code control system Focus on the bottlenecks – methodology discussed later

Test on different platforms32bit, IA64, x64Local Storage, SANMemory considerationsNetwork & topology considerations

Page 19: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Debugging & Performance Tuning - Volume

Remove redundant columnsUse SELECT statements as opposed to tablesSELECT * is your enemyAlso remove redundant columns after every async component!

Filter rowsWHERE clause is your friendConditional Split in SSISConcatenate or re-route unneeded columns

Parallel loadingSource system split source data into multiple chunks

Flat Files – multiple filesRelational – via key fields and indexes

Multiple Destination components all loading same table

Page 20: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Debugging & Performance Tuning - Application

Is BCP good enough?Overhead of starting up an SSIS package may offset any performance gain over BCP for small data setsIs the greater manageability and control of SSIS needed?

Which pattern?Many Lookup patterns possible – which one is most suitable?See Project Real for examples of patterns:http://www.microsoft.com/sql/solutions/bi/projectreal.mspx

Which component?Bulk Import Task vs. Data Flow

Bulk Import might give better performance if there are no transformations or filtering required, and the destination is SQL Server.

Lookup vs. MergeJoin (LeftJoin) vs. set based statements in SQLMergeJoin might be required if you’re not able to populate the lookup cache.Set based SQL statements might provide a way to persist lookup cache misses and apply a set based operation for higher performance.

Script vs. custom componentScript might be good enough for small transforms that’re typically not reused

Page 21: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Case Study - Patterns

105 seconds 83 seconds

Use Error Output for handling Lookup miss

Ignore lookup errors and check for null looked up values in Derived Column

Page 22: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Debugging & Performance Tuning – A methodology

Optimize and Stabilize the basicsMinimize staging (else use RawFiles if possible)Make sure you have enough MemoryWindows, Disk, Network, …SQL FileGroups, Indexing, Partitioning

Get BaselineReplace destinations with RowCountSource->RowCount throughputSource->Destination throughput

Incrementally add/change components to see effectThis could include the DB layerUse source code control!

Optimize slow components for resources available

Page 23: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Case Study - ParallelismFocus on critical pathUtilize available resources

Memory Constrained Reader and CPU Constrained

Let it rip! Optimize the slowest

Page 24: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

SummaryFollow best practice development methodsUnderstand how SSIS architecture influences performance

Buffers, component typesDesign Patterns

Learn the new featuresBut do not forget the existing principles

Use the native functionalityBut do not be afraid to extend

Measure performanceFocus on the bottlenecks

Maximize parallelism and memory use where appropriateBe aware of different platforms capabilities (64bit RAM)

Testing is key

Page 25: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Analysis Services

Page 26: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

AgendaServer architecture and UDM basicsOptimizing the cube designPartitioning and AggregationsProcessingQueries and calculationsConclusion

Page 27: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Analysis Server

OLEDB

ADOMD .NET

AMO IIS

TCP

HTTP

XMLA

ADOMD

Client Apps

BIDS

SSMS

Profiler

Excel

Client Server Architecture

Page 28: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

DimensionAn entity on which analysis is to be performed (e.g. Customers)Consists of:

Attributes that describe the entityHierarchies that organize dimension members in meaningful ways

CustomerID

FirstName

LastName

State City MaritalStatus

Gender … Age

123 John Doe WA Seattle Married Male … 42456 Lance Smith WA Redmon

dUnmarrie

dMale … 34

789 Jill Thompson OR Portland Married Female … 21

Page 29: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

AttributeContainers of dimension members.Completely define the dimensional space.Enable slicing and grouping the dimensional space in interesting ways.

Customers in state WA and age > 50Customers who are married and male

Typically have one-many relationshipsCity State, State Country, etc.All attributes implicitly related to the key

Page 30: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Ordered collection of attributes into levelsNavigation path through dimensional spaceUser defined hierarchies – typically multiple levelsAttribute hierarchies – implicitly created for each attribute – single level

Hierarchy

Customers by Geography

Country

State

City

Customer

Customers by Demographics

Marital

Gender

Customer

Page 31: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Customer

City

State

Country

Gender Marital

Country

State

City

Customer

Gender

Customer

Marital

Gender

Customer

Customer

City

State

Country

Gender

Marital

Attributes Hierarchies

Age

Dimension Model

Page 32: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

CubeCollection of dimensions and measuresMeasure numeric data associated with a set of dimensions (e.g. Qty Sold, Sales Amount, Cost)Multi-dimensional space

Defined by dimensions and measuresE.g. (Customers, Products, Time, Measures)

Intersection of dimension members and measures is a cell (USA, Bikes, 2004, Sales Amount) = $1,523,374.83

Page 33: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

A Cube

ProductPeas Corn Bread Milk Beer

Market

Bos

NYC

Chi

SeaJan

MarFeb

Time

Units of beer sold in Boston in January

Page 34: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Measure GroupGroup of measures with same dimensionalityAnalogous to fact tableCube can contain more than one measure group

E.g. Sales, Inventory, FinanceMulti-dimensional space

Subset of dimensions and measures in the cube

AS2000 comparisonVirtual Cube CubeCube Measure Group

Page 35: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Sales Inventory FinanceCustomers XProducts X XTime X X XPromotions XWarehouse XDepartmen

tX

Account XScenario X

Measure Group

Measure Group

Page 36: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

AgendaServer architecture and UDM BasicsOptimizing the cube designPartitioning and AggregationsProcessingQueries and calculationsConclusion

Page 37: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Top 3 Tenets of Good Cube Design

Attribute relationshipsAttribute relationshipsAttribute relationships

Page 38: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Attribute RelationshipsOne-to-many relationships between attributesServer simply “works better” if you define them where applicableExamples:

City State, State CountryDay Month, Month Quarter, Quarter Year Product Subcategory Product Category

Rigid v/s flexible relationships (default is flexible)

Customer City, Customer PhoneNo are flexibleCustomer BirthDate, City State are rigid

All attributes implicitly related to key attribute

Page 39: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Customer

City

State Country

Gender Marital Age

Attribute Relationships (continued)

Page 40: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Customer

City

State

Country

Gender Marital Age

Attribute Relationships (continued)

Page 41: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Attribute Relationships Where are they used?

MDX SemanticsTells the formula engine how to roll up measure valuesIf the grain of the measure group is different from the key attribute (e.g. Sales by Month)

Attribute relationships from grain to other attributes required (e.g. Month Quarter, Quarter Year)Otherwise no data (NULL) returned for Quarter and Year

MDX Semantics explained in detail at:http://www.sqlserveranalysisservices.com/OLAPPapers/AttributeRelationships.htm

Page 42: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Attribute RelationshipsWhere are they used?

StorageReduces redundant relationships between dimension members – normalizes dimension storageEnables clustering of records within partition segments (e.g. store facts for a month together)

ProcessingReduces memory consumption in dimension processing – less hash tables to fit in memoryAllows large dimensions to push 32-bit barrierSpeeds up dimension and partition processing overall

Page 43: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Attribute RelationshipsWhere are they used?

Query performanceDimension storage access is fasterProduces more optimal execution plans

Aggregation designEnables aggregation design algorithm to produce effective set of aggregations

Dimension securityDeniedSet = {State.WA} should deny cities and customers in WA – requires attribute relationships

Member propertiesAttribute relationships identify member properties on levels

Page 44: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Attribute RelationshipsHow to set them up?

Creating an attribute relationship is easy, but …

Pay careful attention to the key columns!Make sure every attribute has unique key columns (add composite keys as needed)

There must be a 1:M relation between the key columns of the two attributesInvalid key columns cause a member to have multiple parents

Dimension processing picks one parent arbitrarily and succeedsHierarchy looks wrong!

Page 45: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Attribute RelationshipsHow to set them up?

Don’t forget to remove redundant relationships!All attributes start with relationship to keyCustomer City State Country

Customer State (redundant)Customer Country (redundant)

Page 46: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Attribute RelationshipsExample

Time dimensionDay, Week, Month, Quarter, Year

Year: 2003 to 2010Quarter: 1 to 4Month: 1 to 12Week: 1 to 52Day: 20030101 to 20101231 Day

Week

Month

Quarter

Year

Page 47: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Attribute RelationshipsExample

Time dimensionDay, Week, Month, Quarter, Year

Year: 2003 to 2010Quarter: 1 to 4 - Key columns (Year, Quarter)Month: 1 to 12Week: 1 to 52Day: 20030101 to 20101231 Day

Week

Month

Quarter

Year

Page 48: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Time dimensionDay, Week, Month, Quarter, Year

Year: 2003 to 2010Quarter: 1 to 4 - Key columns (Year, Quarter)Month: 1 to 12 - Key columns (Year, Month)Week: 1 to 52Day: 20030101 to 20101231

Attribute RelationshipsExample

Day

Week

Month

Quarter

Year

Page 49: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Time dimensionDay, Week, Month, Quarter, Year

Year: 2003 to 2010Quarter: 1 to 4 - Key columns (Year, Quarter)Month: 1 to 12 - Key columns (Year, Month)Week: 1 to 52 - Key columns (Year, Week) Day: 20030101 to 20101231

Attribute RelationshipsExample

Day

Week

Month

Quarter

Year

Page 50: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Defining Attribute Relationships

Page 51: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

User Defined HierarchiesPre-defined navigation paths thru dimensional space defined by attributesAttribute hierarchies enable ad hoc navigationWhy create user defined hierarchies then?

Guide end users to interesting navigation pathsExisting client tools are not “attribute aware”Performance

Optimize navigation path at processing timeMaterialization of hierarchy tree on diskAggregation designer favors user defined hierarchies

Page 52: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Natural Hierarchies1:M relation (via attribute relationships) between every pair of adjacent levelsExamples:

Country-State-City-Customer (natural)Country-City (natural)State-Customer (natural)Age-Gender-Customer (unnatural)Year-Quarter-Month (depends on key columns)

How many quarters and months?4 & 12 across all years (unnatural)4 & 12 for each year (natural)

Page 53: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Natural Hierarchies Best Practice for Hierarchy Design

Performance implicationsOnly natural hierarchies are materialized on disk during processingUnnatural hierarchies are built on the fly during queries (and cached in memory)Server internally decomposes unnatural hierarchies into natural components

Essentially operates like ad hoc navigation path (but somewhat better)

Create natural hierarchies where possible

Using attribute relationshipsNot always appropriate (e.g. Age-Gender)

Page 54: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Best Practices for Cube DesignDimensions

Consolidate multiple hierarchies into single dimension (unless they are related via fact table)Avoid ROLAP storage mode if performance is keyUse role playing dimensions (e.g. OrderDate, BillDate, ShipDate) - avoids multiple physical copiesUse parent-child dimensions prudently

No intermediate level aggregation supportUse many-to-many dimensions prudently

Slower than regular dimensions, but faster than calculationsIntermediate measure group must be “small” relative to primary measure group

Page 55: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Best Practices for Cube DesignAttributes

Define all possible attribute relationships!Mark attribute relationships as rigid where appropriateUse integer (or numeric) key columnsSet AttributeHierarchyEnabled to false for attributes not used for navigation (e.g. Phone#, Address)Set AttributeHierarchyOptimizedState to NotOptimized for infrequently used attributesSet AttributeHierarchyOrdered to false if the order of members returned by queries is not important

HierarchiesUse natural hierarchies where possible

Page 56: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Best Practices for Cube Design

MeasuresUse smallest numeric data type possible Use semi-additive aggregate functions instead of MDX calculations to achieve same behaviorPut distinct count measures into separate measure group (BIDS does this automatically)Avoid string source column for distinct count measures

Page 57: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

AgendaServer architecture and UDM BasicsOptimizing the cube designPartitioning and AggregationsProcessingQueries and calculationsConclusion

Page 58: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

PartitioningMechanism to break up large cube into manageable chunksPartitions can be added, processed, deleted independently

Update to last month’s data does not affect prior months’ partitionsSliding window scenario easy to implement

E.g. 24 month window add June 2006 partition and delete June 2004

Partitions can have different storage settings

Partitions require Enterprise Edition!

Page 59: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Benefits of PartitioningPartitions can be processed and queried in parallel

Better utilization of server resourcesReduced data warehouse load times

Queries are isolated to relevant partitions less data to scan

SELECT … FROM … WHERE [Time].[Year].[2006]Queries only 2006 partitions

Bottom line partitions enable:ManageabilityPerformanceScalability

Page 60: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Best Practices for PartitioningNo more than 20M rows per partition

Specify partition sliceOptional for MOLAP – server auto-detects the slice and validates against user specified slice (if any)Must be specified for ROLAP

Manage storage settings by usage patternsFrequently queried MOLAP with lots of aggsPeriodically queried MOLAP with less or no aggsHistorical ROLAP with no aggs

Alternate disk drive - use multiple controllers to avoid I/O contention

Marin Bezic
Ask Christian for more info on this one
Page 61: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Best Practices for AggregationsDefine all possible attribute relationships

Set accurate attribute member counts and fact table countsSet AggregationUsage to guide agg designer

Set rarely queried attributes to NoneSet commonly queried attributes to Unrestricted

Do not build too many aggregationsIn the 100s, not 1000s!

Do not build aggregations larger than 30% of fact table size (agg design algorithm doesn’t)

Page 62: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Best Practices for Aggregations

Aggregation design cycleUse Storage Design Wizard (~20% perf gain) to design initial set of aggregationsEnable query log and run pilot workload (beta test with limited set of users)Use Usage Based Optimization (UBO) Wizard to refine aggregationsUse larger perf gain (70-80%)Reprocess partitions for new aggregations to take effectPeriodically use UBO to refine aggregations

Page 63: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

AgendaServer architecture and UDM BasicsOptimizing the cube designPartitioning and AggregationsProcessingQueries and calculationsConclusion

Page 64: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Improving ProcessingSQL Server Performance Tuning

Improve the queries that are used for extracting data from SQL Server

Check for proper plans and indexingConduct regular SQL performance tuning process

AS Processing ImprovementsUse SP2 !!

Processing 20 partitions: SP1 1:56, SP2: 1:06Don’t let UI default for parallel processing

Go into advanced processing tab and change itMonitor the values:

Maximum number of datasource connectionsMaxParallel – How many partitions processed in parallel, don’t let the server decide on its own.

Use INT for keys, if possible.

Parallel processing requires Enterprise Edition!

Page 65: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Improving ProcessingFor best performance use ASCMD.EXE and XMLA

Use <Parallel> </Parallel> to group processing tasks together until Server is using maximum resourcesProper use of <Transaction> </Transaction>

ProcessFact and ProcessIndex separately instead of ProcessFull (for large partitions)

Consumes less memory.ProcessClearIndexes deletes existing indexes and ProcessIndexes generates or reprocesses existing ones.

Page 66: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Best Practices for ProcessingPartition processing

Monitor aggregation processing spilling to disk (perfmon counters for temp file usage)

Add memory, turn on /3GB, move to x64/ia64Fully process partitions periodically

Achieves better compression over repeated incremental processing

Data sourcesAvoid using .NET data sources – OLEDB is faster for processing

Page 67: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

AgendaServer architectureUDM BasicsOptimizing the cube designPartitioning and AggregationsProcessingQueries and calculationsConclusion

Page 68: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Non_Empty_BehaviorMost client tools (Excel, Proclarity) display non empty results – eliminate members with no dataWith no calculations, non empty is fast – just checks fact dataWith calculations, non empty can be slow – requires evaluating formula for each cellNon_Empty_Behavior allows non empty on calculations to just check fact data

Note: query processing hint – use with care!Create Member [Measures].[Internet Gross Profit] As[Internet Sales Amount] - [Internet Total Cost],Format_String = "Currency",Non_Empty_Behavior = [Internet Sales Amount];

Page 69: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Auto-ExistsAttributes/hierarchies within a dimension are always existed together

City.Seattle * State.Members returns {(Seattle, WA)}(Seattle, OR), (Seattle, CA) do not “exist”

Exploit the power of auto-existsUse Exists/CrossJoin instead of .Properties – fasterRequires attribute hierarchy enabled on member property

Filter(Customer.Members, Customer.CurrentMember.Properties(“Gender”) = “Male”)

Exists(Customer.Members, Gender.[Male])

Page 70: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Conditional Statement: IIFUse scopes instead of conditions such as Iif/Case

Scopes are evaluated once staticallyConditions are evaluated dynamically for each cell

Always try to coerce IIF for one branch to be null

Create Member Measures.Sales As Iif(Currency.CurrentMember Is Currency.USD, Measures.SalesUSD, Measures.SalesUSD * Measures.XRate);

Create Member Measures.Sales As Null;Scope(Measures.Sales, Currency.Members); This = Measures.SalesUSD * Measures.XRate; Scope(Currency.USA); This = Measures.SalesUSD; End Scope;End Scope;

Page 71: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

Best Practices for MDXUse calc members instead of calc cells where possibleUse .MemberValue for calcs on numeric attributes

Filter(Customer.members, Salary.MemberValue > 100000)Avoid redundant use of .CurrentMember and .Value

(Time.CurrentMember.PrevMember, Measures.CurrentMember ).Value can be replaced with Time.PrevMember

Avoid LinkMember, StrToSet, StrToMember, StrToValueReplace simple calcs with computed columns in DSV

Calculation done at processing time is always betterMany more at:

Analysis Services Performance Whitepaper: http://download.microsoft.com/download/8/5/e/85eea4fa-b3bb-4426-97d0-7f7151b2011c/SSAS2005PerfGuide.dochttp://sqljunkies.com/weblog/moshahttp://sqlserveranalysisservices.com

Page 72: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

ConclusionAS2005 is major re-architecture from AS2000Design for perf & scalability from the startMany principles carry through from AS2000

Dimensional design, Partitioning, AggregationsMany new principles in AS2005

Attribute relationships, natural hierarchiesNew design alternatives – role playing, many-to-many, reference dimensions, semi-additive measuresFlexible processing optionsMDX scripts, scopes

Use Analysis Services with SQL Server Enterprise Edition to get max performance and scale

Page 73: Marin BezicMarin Bezic SQL BI Product ManagerSQL BI Product Manager Microsoft EMEAMicrosoft EMEA.

ResourcesSSIS

SQL Server Integration Services site – links to blogs, training, partners, etc.: http://msdn.microsoft.com/SQL/sqlwarehouse/SSIS/default.aspx SSIS MSDN Forum: http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=80&SiteID=1SSIS MVP community site: http://www.sqlis.com

SSASBLOGS: http://blogs.msdn.com/sqlcatPROJECT REAL-Business Intelligence in PracticeAnalysis Services Performance GuideTechNet: Analysis Services for IT Professionals

Microsoft BISQL Server Business Intelligence public site: http://www.microsoft.com/sql/evaluation/bi/default.asp http://www.microsoft.com/bi