Took me forever to finally solve the problem. The issue was both that I was using a Union All rather than a join and that I had duplicate records in my dimension table resulting in duplication of the output. I cleaned up the data source and used the following code:
SELECT
,b.[PBCat]
,a.[Station]
,a.[Facility]
,a.[CC]
,a.[Office]
,a.[BOC]
,a.[BOCName]
,left(a.[Appro],4) as [Appro]
,a.[FY]
,a.[Obs]
,a.[FTE]
,a.[Month]
FROM [BudgetFormulation].[dbo].[ObjectClass] a
Left Join [BudgetFormulation].[dbo].[DIMObject] b
On a.[BOC]=b.[BOC4]