Praca z wymiarów i poziomów
Ostrzeżenie
Ta funkcja zostanie usunięta z następnej wersji programu Microsoft SQL Server. Nie należy stosować tej funkcji w nowych projektach oraz jak najszybciej należy zmodyfikować aplikacje, w których obecnie jest używana ta funkcja.
Wymiary moduł przechowywania danych pochodzących z relacyjnych baz danych, tabel i zawierać kategorii danych, które chcesz analizować.
Wymiary, należy utworzyć powinny być różne kategorie, które chcesz dodać do modułów w bazie danych (takich jak czas, nabywcy edukacji i wiek nabywcy).Wymiar można utworzyć z tabela pojedynczego wymiaru (schemat gwiazdy) lub z wielu tabel wymiarów (schemat płatka śniegu).Wymiary są klasyfikowane jako wymiary standardowe lub czas, w zależności od typu danych odpowiednich kolumna tabela wymiarów.
Kolekcje wymiary są zawarte w obiekty ClassType clsDatabase, clsCube, clsPartition, i clsAggregation.The dimension objects contained within each of these collections are of respective ClassTypes clsDatabaseDimension, clsCubeDimension, clsPartitionDimension, and clsAggregationDimension.
Przykład listy wymiarów wyświetla listę istniejących wymiary i ich powiązanych poziomów.Przykład dodawanie wymiarów tworzy nowe wymiary i poziomy.
Lista wymiarów
Dimensions kolekcja DSO.Server obiekt zawiera wszystkie wymiary udostępnionego na serwerze analizy, jak pokazano na przykładzie kodu.
Poniższy przykład kodu pokazuje hierarchicznego charakteru wymiary i pozioms przez aukcji pozioms priorytetu dla każdego wymiar zawarte w bazie danych, co na danym serwerze analizy drukowania podstawowe właściwości każdego wymiar i poziom w okienku bezpośrednim:
Private Sub ListDimensions()
Dim dsoServer As New DSO.Server
Dim dsoDB As DSO.MDStore
Dim dsoDim As DSO.Dimension
Dim dsoLev As DSO.Level
' Create a connection to the Analysis server.
dsoServer.Connect "LocalHost"
' Enumerate databases on a server.
For Each dsoDB In dsoServer.MDStores
Debug.Print "DATABASE: " & dsoDB.Name & " - " & _
dsoDB.Description
' Enumerate dimensions in a database.
For Each dsoDim In dsoDB.Dimensions
Debug.Print " Dimension: " & dsoDim.Name
' Enumerate levels in a dimension.
For Each dsoLev In dsoDim.Levels
Debug.Print " Level: " & dsoLev.Name
Next
Next
Next
End Sub
Dodaj wymiary i poziomy
Aby dodać wymiar, AddNew metoda Dimensions kolekcja dla MDStore obiekt bazy danych jest używany.Po utworzeniu nowego wymiar w ten sposób poziomy są dodawane przy użyciu AddNew metoda Levels kolekcja nowy Dimension obiektu.
Dodaje się następujący przykład kodu Products wymiar z dwoma poziomami Brand Name i Product Nameoraz Stores wymiar z czterech poziomów, Store Country, Store State, Store City i Store ID, do TestDB bazy danych.Ponadto Store ID poziom właściwość element członkowski o nazwie Store SQFT skojarzone z typie.Poniższy diagram przedstawia graficznie relacje.
Aby uzyskać więcej informacji na temat właściwości element członkowski Zobacz clsMemberProperty.
Ostrzeżenie
TestDB Bazy danych jest tworzona za pomocą wcześniejszej przykłady w tym temacie.Aby uzyskać więcej informacji, zobacz pracy z bazami danych.
Poniższy przykład kodu dodaje się dwa nowe wymiary do TestDB bazy danych:
Private Sub AddDimensions()
Dim dsoServer As New DSO.Server
Dim dsoDB As DSO.MDStore
Dim dsoDS As DSO.DataSource
Dim dsoDim As DSO.Dimension
Dim dsoLev As DSO.Level
Dim dsoMember As DSO.MemberProperty
Dim strDBName As String
' Constants used for ColumnType property
' of the DSO.Level object.
' Note that these constants are identical to
' those used in ADO in the DataTypeEnum enumeration.
Const adWChar = 130
Const adInteger = 3
Const adDouble = 5
' Initialize variables for the database name.
strDBName = "TestDB"
' Create a connection to the Analysis server.
dsoServer.Connect "LocalHost"
' Set the database object.
Set dsoDB = dsoServer.MDStores(strDBName)
' Set the data source for the database object.
' A data source is required to run this example.
If dsoDB.DataSources.Count = 0 Then
MsgBox "Database " & dsoDB.Name & _
" has no data sources."
Else
Set dsoDS = dsoDB.DataSources(1)
End If
' Create Products dimension and levels.
Set dsoDim = dsoDB.Dimensions.AddNew("Products")
Set dsoDim.DataSource = dsoDS ' Dimension data source
dsoDim.FromClause = "product" ' Related table
dsoDim.JoinClause = "" ' Used in snowflake schema
' Add Brand Name level.
Set dsoLev = dsoDim.Levels.AddNew("Brand Name")
dsoLev.MemberKeyColumn = """product"".""brand_name"""
dsoLev.ColumnSize = 255 ' Column data size in bytes
dsoLev.ColumnType = adWChar ' Column data type
dsoLev.EstimatedSize = 1 ' Distinct members in column
' Add Product Name level.
Set dsoLev = dsoDim.Levels.AddNew("Product Name")
dsoLev.MemberKeyColumn = """product"".""product_name"""
dsoLev.ColumnSize = 255
dsoLev.ColumnType = adWChar
dsoLev.EstimatedSize = 1
' Update the Products dimension.
dsoDim.Update
' Inform the user.
MsgBox "Dimension " & dsoDim.Name & " added to " & _
dsoDim.DataSource.Name & " data source."
' Create Stores dimension and levels.
Set dsoDim = dsoDB.Dimensions.AddNew("Stores")
Set dsoDim.DataSource = dsoDS ' Dimension data source
dsoDim.FromClause = "store" ' Related table
dsoDim.JoinClause = "" ' Used in snowflake schema
' Add Store Country level.
Set dsoLev = dsoDim.Levels.AddNew("Store Country")
dsoLev.MemberKeyColumn = """store"".""store_country"""
dsoLev.ColumnSize = 50 ' Column data size in bytes
dsoLev.ColumnType = adWChar ' Column data type
dsoLev.EstimatedSize = 1 ' Distinct members in column
' Add Store State level.
Set dsoLev = dsoDim.Levels.AddNew("Store State")
dsoLev.MemberKeyColumn = """store"".""store_state"""
dsoLev.ColumnSize = 50
dsoLev.ColumnType = adWChar
dsoLev.EstimatedSize = 1
' Add Store City level.
Set dsoLev = dsoDim.Levels.AddNew("Store City")
dsoLev.MemberKeyColumn = """store"".""store_city"""
dsoLev.ColumnSize = 50
dsoLev.ColumnType = adWChar
dsoLev.EstimatedSize = 1
' Add Store ID level.
Set dsoLev = dsoDim.Levels.AddNew("Store ID")
dsoLev.MemberKeyColumn = """store"".""store_ID"""
dsoLev.ColumnSize = 4
dsoLev.ColumnType = adInteger
dsoLev.EstimatedSize = 1
' Add a member property to the Store ID level.
Set dsoMember = dsoLev.MemberProperties.AddNew("Store SQFT", _
sbclsRegular)
dsoMember.Description = "Store size in square feet"
dsoMember.SourceColumn = """store"".""store_sqft"""
dsoMember.ColumnSize = 4
dsoMember.ColumnType = adDouble
' Update the Stores dimension.
dsoDim.Update
' Inform the user.
MsgBox "Dimension " & dsoDim.Name & " added to " & _
dsoDim.DataSource.Name & " data source."
End Sub