Understanding PDP, DataSets, and DataFlows
I've finally had a look at PDP as I need to retrofit a page with dozens of cards to filter the data on display for specific users and user groups. When I'm learning something new, I usually read the docs, try it out, and make junky little sketches. If I can't make a sketch, I definitely don't understand what I'm looking at. On the other, just because I can make a sketch it doesn't mean that the sketch is right. I figured this would be a good time to ask a few conceptual questions about PDP, DataSets and DataFlows and, hopefully, deepen my understanding of how Domo functions internally.
First up a Terrible Little Diagram for a DataSet with one filtering PDP policy:
As I understand it, PDP policies apply to a specific DataSet, so they can really be thought of as a property of the DataSet. I illustrated it as above as 1) it makes more sense for a policy to stand on its own and 2) we'll end up making redundant policies as a matter of course as Domo doesn't support policy sharing.
What I'm not sure I've gotten at all right is the box labelled "Virtual Filtered DataSet." Is that about right? I have the impression that a DataSet is rendered/indexed/stored within Domo and that a PDP filter is a runtime/dynamic operation. I got this idea after trying to map out the DataFlow behavior:
According to the docs, a DataSet with a PDP policy cannot be used as an input to a DataFlow, but an output DataSet can have PDP policies attached. If DataFlow outputs are fully rendered DataSets that are saved and indexed, and PDP policies are only applied dynamically at runtime based on a specific user context, then this all kind of makes sense. Hence the "Virtual Filtered DataSet" in the diagram.
But I could have it all wrong, I have no idea. Does anyone know about these points:
- Are DataSets parsed, stored, and indexed during import?
- Are DataFlow output DataSets parsed, stored, and indexed during DataFlow run/update?
- Are PDP filters only applied at runtime? Meaning there's no serialized version stored in advanced?
If anyone's got some info or insight, I'd love to hear about it. I'm not sure that I can claim that the information will do me any specific good right now, but getting a more fully developed mental model of how Domo works will definitely help me going forward.