If doing something that is specific for the UBAQ, then you should use the UBAQ Directive. Putting things into a Data directive exposes the code to possibly be run by anything that touches the data. For example, if you put a data directive on OrderRel table, it will execute whenever the order is modified (including order Entry, Job Entry, Shipments and Invoicing. But if you have an updatable BAQ that updates the OrderRel, and you have a UBAQ Method directive, it will only run as part of that Dashboard.
The point is that when you DEPLOY the dashboard, the system does compile the UBAQ BPM and it will run very efficiently.
There is one time that I did implement a data directive because of a Dashboard but that was because I was doing a customization that worked in both the standard UI, and also in a Dashboard. I wanted the same logic to apply in both places. In order to make it the same, I put the logic in a Data Directive.