Unfortunately, right now there’s no way to give Build access to just a part of a semantic model anyone with Build rights can access the whole thing, regardless of perspectives, OLS, or hidden tables. It’s definitely a pain point.
The only safe way at the moment is to create a separate, trimmed-down model that only includes the tables and columns you want those users to access. Publish that to its own workspace and give Build permissions there. I know it’s not the most convenient solution, but it’s the only approach that actually secures the data.
All the other tricks like perspectives or hiding tables just change the report experience, but don’t stop someone with Build rights from seeing everything in the model using tools like DAX Studio or Tabular Editor.
The good news is Microsoft is actively working on more granular security (like OneLake Security), so hopefully this gets easier in the near future.