[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.AnalysisServices");
$ASConnectionString = "Data Source = lewis-server ; Initial Catalog = CapitalDW ; Provider = MSOLAP; Impersonation Level = Impersonate " ;
$ASServer = New-object Microsoft.AnalysisServices.Server ;
$ASServer.connect($ASConnectionString);
##get-content Variable::ASConnectionString
##get-content Variable::ASServer
$DatabaseName = "CapitalDW"
$DatabaseID = $ASServer.Databases.FindByName($DatabaseName).ToString() ;
##get-content Variable::DatabaseID;
write-host "Databaseid:$DatabaseID";
##Cube
$dbName = $ASServer.Databases[$DatabaseID];
##get-content Variable::dbName
$cubeName = "Capital DW" ;
$cubeId = $dbName.cubes.FindByName($cubeName).ToString();
$measuregroupName = "Capital History" ;
$measuregroupid = $dbName.cubes[$cubeID].Measuregroups.FindByName($measuregroupName).ToString();
write-host "measuregroupid is : $measuregroupid ";
$newPartitionName = "Capital History 2012";
$sourceID = $dbName.cubes[$cubeID].Measuregroups.FindByName($measuregroupName).Partitions.FindByName("Capital History 2011").DataSource.ToString();
write-host "data source id : $sourceID";
$partition= $dbName.cubes[$cubeID].Measuregroups.FindByName($measuregroupName).Partitions.Add($newPartitionName);
$partition.Source = new-object Microsoft.AnalysisServices.QueryBinding( "$sourceID", "SELECT [dbo].[CapitalHistory].[itm_system_ky],[dbo].[CapitalHistory].[capital_value],[dbo].[CapitalHistory].[PK_Date]
FROM [dbo].[CapitalHistory]
WHERE pk_date>='2012-01-01' and pk_date<'2013-01-01'" );
$dbName.cubes[$cubeID].Measuregroups.FindByName($measuregroupName).Partitions.FindByName($newPartitionName).update();
write-host "new partition: $partition"
$ASConnectionString = "Data Source = lewis-server ; Initial Catalog = CapitalDW ; Provider = MSOLAP; Impersonation Level = Impersonate " ;
$ASServer = New-object Microsoft.AnalysisServices.Server ;
$ASServer.connect($ASConnectionString);
##get-content Variable::ASConnectionString
##get-content Variable::ASServer
$DatabaseName = "CapitalDW"
$DatabaseID = $ASServer.Databases.FindByName($DatabaseName).ToString() ;
##get-content Variable::DatabaseID;
write-host "Databaseid:$DatabaseID";
##Cube
$dbName = $ASServer.Databases[$DatabaseID];
##get-content Variable::dbName
$cubeName = "Capital DW" ;
$cubeId = $dbName.cubes.FindByName($cubeName).ToString();
$measuregroupName = "Capital History" ;
$measuregroupid = $dbName.cubes[$cubeID].Measuregroups.FindByName($measuregroupName).ToString();
write-host "measuregroupid is : $measuregroupid ";
$newPartitionName = "Capital History 2012";
$sourceID = $dbName.cubes[$cubeID].Measuregroups.FindByName($measuregroupName).Partitions.FindByName("Capital History 2011").DataSource.ToString();
write-host "data source id : $sourceID";
$partition= $dbName.cubes[$cubeID].Measuregroups.FindByName($measuregroupName).Partitions.Add($newPartitionName);
$partition.Source = new-object Microsoft.AnalysisServices.QueryBinding( "$sourceID", "SELECT [dbo].[CapitalHistory].[itm_system_ky],[dbo].[CapitalHistory].[capital_value],[dbo].[CapitalHistory].[PK_Date]
FROM [dbo].[CapitalHistory]
WHERE pk_date>='2012-01-01' and pk_date<'2013-01-01'" );
$dbName.cubes[$cubeID].Measuregroups.FindByName($measuregroupName).Partitions.FindByName($newPartitionName).update();
write-host "new partition: $partition"