hi
@Joris Ganne ! how often are these meta tables updated, and via what sort of process? in my mind, the first step is to decide where the source of truth for these transformations should live (either the tables themselves, or a code artifact that gets used to update the state of those tables). I'm somewhat biased towards having a version-controlled source of truth (so this would be having some yaml or python format for defining these transformations, then parsing that both to create dagster assets as well as to set the state of those meta tables).
If you do have requirements for the source of truth to be the other way around (i.e. source of truth is the tables themselves), then I'd recommend a sort of asset factory pattern. Basically just have a function (excuse the pseudocode) like
def get_assets_from_meta_tables():
meta_table_one = query("select * from tbl1")
meta_table_two = query("select * from tbl2")
upstream_tbls_for_tbl = defaultdict(set)
for source, target in meta_table_one:
upstream_tbls_for_tbl[target].add(source)