| Acknowledgements | iii |
| Introduction | 1 |
| CHAPTER 1 What’s New In Analysis Services | 5 |
| Cube Enhancements | 6 |
| Dimension Enhancements | 8 |
| Data Mining Enhancements | 10 |
| Security Enhancements | 11 |
| Client Connectivity Enhancements in PivotTable Service | 12 |
| Other Enhancements | 12 |
| CHAPTER 2 Installing Analysis Services | 15 |
| Hardware and Software Requirements for Installing Analysis Services | 16 |
| Running Setup | 17 |
| Setup Parameters and Silent Installation | 19 |
| Reinstalling Analysis Services | 20 |
| Stopping or Removing Analysis Services | 21 |
| Upgrading from an Earlier Version | 21 |
| Backward Compatibility | 22 |
| 7.0 Analysis Services Client and Local Cube Support | 23 |
| Supported Migration Paths for Analysis Services Repositories | 25 |
| Archiving and Restoring Databases Between Versions of Analysis Services | 26 |
| CHAPTER 3 Analysis Services Architecture | 27 |
| Analysis Services Features | 27 |
| Ease of Use | 28 |
| Flexible Data Model | 31 |
| Scalability | 34 |
| Integration | 36 |
| Widely Supported APIs and Open Architecture | 38 |
| Server and Client Architecture | 39 |
| Server Architecture | 39 |
| Client Architecture | 40 |
| Object Architecture | 42 |
| Object Architecture Overview | 43 |
| Analysis Server | 44 |
| Databases | 46 |
| Data Sources | 46 |
| Dimensions | 48 |
| Levels and Members | 76 |
| Measures | 87 |
| Cells | 101 |
| Cubes | 115 |
| Partitions | 136 |
| Aggregations | 148 |
| Roles | 150 |
| Commands | 154 |
| Member Properties | 159 |
| Data Mining Models | 164 |
| Data Mining Columns | 176 |
| Security and Authentication | 186 |
| Administrator Security | 187 |
| End-User Security | 188 |
| Operational Considerations | 229 |
| CHAPTER 4 Data Warehousing and OLAP | 233 |
| About Data Warehouses | 234 |
| About OLAP | 235 |
| OLAP and Data Warehouses | 235 |
| Maintaining OLAP Data | 237 |
| CHAPTER 5 Administering Analysis Services | 241 |
| Before Administering Analysis Services | 241 |
| Administrative Tools | 242 |
| Analysis Manager | 242 |
| Using Active Directory with Analysis Services | 248 |
| Using Data Transformation Services with Analysis Services | 249 |
| Using MDX with Analysis Services | 249 |
| Msmdarch Command | 250 |
| Administrative Tasks | 250 |
| Configuring Analysis Servers | 252 |
| Creating Prerequisite Objects for Cubes | 254 |
| Building and Processing Cubes | 261 |
| Creating Security Roles | 279 |
| Managing Partitions | 282 |
| Enhancing Dimensions with Optional Features | 289 |
| Enhancing Cubes with Optional Features | 296 |
| Updating Cubes and Dimensions | 315 |
| Building and Using Data Mining Models | 318 |
| Archiving, Restoring, and Copying Data | 328 |
| Analyzing and Optimizing Performance | 333 |
| Automating and Scheduling Administrative Tasks | 352 |
| CHAPTER 6 Administrator’s Reference | 361 |
| Specifications and Limits | 361 |
| SQL | 364 |
| OLE DB Compliance | 368 |
| OLE DB for Data Mining Compliance | 372 |
| CHAPTER 7 Multidimensional Expressions (MDX) | 377 |
| MDX Overview | 378 |
| Introduction to MDX | 378 |
| Key Concepts in MDX | 379 |
| Comparison of SQL and MDX | 383 |
| Basic MDX | 384 |
| The Basic MDX Query | 385 |
| Members, Tuples, and Sets | 387 |
| Axis and Slicer Dimensions | 393 |
| Establishing Cube Context | 396 |
| Advanced MDX | 397 |
| Creating and Using Property Values | 398 |
| Building Named Sets in MDX | 415 |
| Building Calculated Members in MDX | 418 |
| Building Caches in MDX | 426 |
| Building Calculated Cells in MDX | 428 |
| Creating and Using UserDefined Functions in MDX | 431 |
| Using Writebacks | 434 |
| Using DRILLTHROUGH to Retrieve Source Data | 436 |
| Understanding Pass Order and Solve Order | 437 |
| Effective MDX | 448 |
| Comments in MDX | 448 |
| Working with Empty Cells | 449 |
| Creating a Cell Within the Context of a Cube | 454 |
| Working with the RollupChildren Function | 455 |
| WHERE Clause Overrides | 457 |
| MDX Functions in Analysis Services | 458 |
| MDX Function Reference | 458 |
| Registered Function Libraries | 551 |
| UserDefined Functions with MDX Syntax | 554 |
| CHAPTER 8 How To Perform Common Analysis Services Tasks | 557 |
| Configuring Analysis Servers | 557 |
| How to register an Analysis server | 557 |
| How to add a linked Analysis server using SQL Server Enterprise Manager | 558 |
| How to start the Migrate Repository Wizard | 559 |
| How to configure Analysis Services for the Web | 559 |
| Creating Cubes’ Prerequisite Objects | 560 |
| How to create a database | 560 |
| How to specify a data source | 561 |
| How to create a shared dimension using the Dimension Wizard | 561 |
| How to create a shared dimension using Dimension Editor | 562 |
| How to browse a shared dimension | 563 |
| How to browse a private dimension | 563 |
| How to create a virtual dimension based on member properties | 563 |
| How to create a virtual dimension based on columns | 564 |
| Building and Processing Cubes | 566 |
| How to start the Cube Wizard | 567 |
| How to build a cube with Cube Editor | 567 |
| How to create a private dimension | 568 |
| How to add a multiplecolumn measure to a cube | 569 |
| How to start the Virtual Cube Wizard | 569 |
| How to start the Storage Design Wizard | 569 |
| How to process a cube | 570 |
| How to process a virtual cube | 570 |
| How to view an SQL statement | 571 |
| How to change the temporary file folder used by Analysis Services | 571 |
| How to browse sample data in Cube Editor | 571 |
| Creating Security Roles | 572 |
| How to create a database role | 572 |
| How to create a cube role, change its default values, and specify cell security | 574 |
| How to create a mining model role and change its default values | 578 |
| How to create a custom rule for dimension security in a database role | 579 |
| How to create a custom rule for dimension security in a cube role | 581 |
| How to create a custom rule for cell security | 584 |
| Managing Cube Storage | 584 |
| How to start the Partition Wizard | 585 |
| How to process a partition | 585 |
| How to merge two partitions | 585 |
| How to specify a data source for a linked cube | 586 |
| How to create a linked cube | 586 |
| How to process a linked cube | 587 |
| Enhancing Dimensions | 587 |
| How to create a member property in a shared dimension | 588 |
| How to create a custom rollup operator for a shared dimension | 588 |
| How to create a custom rollup operator for a private dimension | 589 |
| How to create or select a column to store custom member formulas | 591 |
| How to create a custom member formula in a writeenabled dimension | 592 |
| How to create member groups | 592 |
| How to create a dimension with multiple hierarchies in the Dimension Wizard | 594 |
| How to create a dimension with multiple hierarchies in Dimension Editor | 595 |
| How to add a hierarchy to an existing dimension | 596 |
| Enhancing Cubes with Optional Features | 597 |
| How to create calculated cells | 598 |
| How to import calculated cells into a virtual cube | 599 |
| How to edit a calculated cells definition | 599 |
| How to rename a calculated member | 600 |
| How to create a calculated member in a regular cube | 600 |
| How to import a calculated member into a virtual cube | 602 |
| How to edit a calculated member in a virtual cube | 602 |
| How to create a calculated member in a virtual cube | 603 |
| How to create a named set in a regular cube | 604 |
| How to import a named set into a virtual cube | 605 |
| How to edit a named set in a virtual cube | 605 |
| How to create a named set in a virtual cube | 606 |
| How to create an action in a regular cube | 606 |
| How to import an action into a virtual cube | 607 |
| How to edit an action in a virtual cube | 607 |
| How to create an action in a virtual cube | 608 |
| How to test an action | 608 |
| How to writeenable a cube | 609 |
| How to browse writeback data for a cube | 610 |
| How to delete writeback data for a cube and writedisable it | 610 |
| How to convert a cube’s writeback data to a partition and writedisable the cube | 610 |
| How to specify drillthrough options for a regular cube | 611 |
| How to specify drillthrough options for a virtual cube | 612 |
| How to specify drillthrough options for a linked cube | 613 |
| How to specify drillthrough options for a partition | 615 |
| Updating Cubes and Dimensions | 616 |
| How to incrementally update a cube | 616 |
| How to refresh data in a cube | 618 |
| How to incrementally update a shared dimension | 618 |
| How to rebuild the structure of a shared dimension | 618 |
| Managing Data Mining Models | 619 |
| How to start the Mining Model Wizard | 619 |
| How to start Relational Mining Model Editor | 620 |
| How to start OLAP Mining Model Editor | 620 |
| How to process a data mining model | 620 |
| How to start Mining Model Role Manager | 621 |
| How to add a role to a data mining model | 621 |
| Archiving, Restoring, and Copying Data | 622 |
| How to archive an Analysis Services database using Analysis Manager | 622 |
| How to archive an Analysis Services database using the msmdarch command | 623 |
| How to restore an Analysis Services database using Analysis Manager | 624 |
| How to restore an Analysis Services database using the msmdarch command | 625 |
| How to copy and paste an object | 626 |
| Analyzing and Optimizing Performance | 627 |
| How to start the Usage Analysis Wizard | 627 |
| How to start the UsageBased Optimization Wizard | 627 |
| Automating and Scheduling Administrative Tasks | 627 |
| How to create an Analysis Services Processing task | 628 |
| How to create a Relational Data Mining Prediction Query task | 629 |
| INDEX Topics in the SQL Server 2000 Reference Library | 631 |