This is applicable to the SDK for Blackbaud CRM versions 2.93 and higher.
Ensure you have created an extensions solution. For more information, see Create a New Extensions Solution.
From Visual Studio 2010, open the extensions solution. Click File > Open > Project/Solution.
Browse to the UDM project or the extensions solution that contains it and click Open. The UDM project appears.
Right-click the UDM project node and select Add > New Item. The Add New Item - UDM screen appears.
Browse to Installed Templates > Common Items > Blackbaud AppFx OLAP.
Select DSV Table Wizard, enter a name, and click Add.
The DSV Table Wizard screen appears.
Click the binoculars next to the Select Table field. The Select a table screen appears.
In the Server field, enter the name of the Database Engine server for your Blackbaud Data Warehouse database. Then click Connect. The wizard connects to the server and populates the Database drop-down field.
Select the Database and the Table.
The wizard populates the DSV Table Name field with a name based on the selected table. _EXT is appended to the table name to create the DSV Table Name. By default the columns listed in the Columns list are versions of the columns in the original table. You can deselect the columns that are not needed.
Select a Key for the DSV table.
Click OK. The wizard creates the spec and displays the spec.
<DSVDeploymentInfo xmlns="bb_olap_dsv"> <DSVTableName>DIM_EVENT_EXT</DSVTableName> <DSVSQL> select [EVENTCAPACITY] [EVENTCATEGORY] [EVENTDESCRIPTION] [EVENTDIMID] [EVENTENDDATE] [EVENTISACTIVE] [EVENTLOOKUPID] [EVENTNAME] [EVENTSTARTDATE] [EVENTSYSTEMID] [PARENTEVENTDIMID] from BBDW.[DIM_EVENT_EXT] </DSVSQL> <DSVTableColumns> <DSVTableColumn> <ColumnName>EVENTCAPACITY</ColumnName> <DataType>Int32</DataType> <DataSize>0</DataSize> <Key>false</Key> </DSVTableColumn> <DSVTableColumn> <ColumnName>EVENTCATEGORY</ColumnName> <DataType>String</DataType> <DataSize>255</DataSize> <Key>false</Key> </DSVTableColumn> <DSVTableColumn> <ColumnName>EVENTDESCRIPTION</ColumnName> <DataType>String</DataType> <DataSize>255</DataSize> <Key>false</Key> </DSVTableColumn> <DSVTableColumn> <ColumnName>EVENTDIMID</ColumnName> <DataType>Int32</DataType> <DataSize>0</DataSize> <Key>true</Key> </DSVTableColumn> <DSVTableColumn> <ColumnName>EVENTENDDATE</ColumnName> <DataType>DateTime</DataType> <DataSize>0</DataSize> <Key>false</Key> </DSVTableColumn> <DSVTableColumn> <ColumnName>EVENTISACTIVE</ColumnName> <DataType>Boolean</DataType> <DataSize>0</DataSize> <Key>false</Key> </DSVTableColumn> <DSVTableColumn> <ColumnName>EVENTLOOKUPID</ColumnName> <DataType>String</DataType> <DataSize>100</DataSize> <Key>false</Key> </DSVTableColumn> <DSVTableColumn> <ColumnName>EVENTNAME</ColumnName> <DataType>String</DataType> <DataSize>255</DataSize> <Key>false</Key> </DSVTableColumn> <DSVTableColumn> <ColumnName>EVENTSTARTDATE</ColumnName> <DataType>DateTime</DataType> <DataSize>0</DataSize> <Key>false</Key> </DSVTableColumn> <DSVTableColumn> <ColumnName>EVENTSYSTEMID</ColumnName> <DataType>Guid</DataType> <DataSize>0</DataSize> <Key>false</Key> </DSVTableColumn> <DSVTableColumn> <ColumnName>PARENTEVENTDIMID</ColumnName> <DataType>Int32</DataType> <DataSize>0</DataSize> <Key>false</Key> </DSVTableColumn> </DSVTableColumns> </DSVDeploymentInfo>
The spec appears in the project as an item: