Get hands-on experience with 20+ free Google Cloud products and $300 in free credit for new customers.

Dataform - handling duplicate table names

This feels like something I've overlooked, but I'm having trouble with two tables that have the same name. I have two Google Search Console accounts pushing data to BigQuery. They have different dataset names, but the tables in each are all named the same.

When I add both of these sources in Dataform (as I want to join them) they generate the same table name, searchdata_url_impression, and then I have conflict name issues when I use 

${ref("searchdata_url_impression")} in my SQLX models, with the error "Ambiguous Action name: searchdata_url_impression."

I've tried changing my source declarations to SQLX files and then adding the publish option to create an alias, but this didn't work and the SQL models didn't pick it up.

Any thoughts?
Solved Solved
1 4 2,696
1 ACCEPTED SOLUTION

You can qualify a dataset and a table with a comma in the ${ref()} call. 

ex.
${ref("<dataset>", "<table_name>")}
${ref("<dataset_1>", "<searchdata_url_impression>")}

View solution in original post

4 REPLIES 4

You can qualify a dataset and a table with a comma in the ${ref()} call. 

ex.
${ref("<dataset>", "<table_name>")}
${ref("<dataset_1>", "<searchdata_url_impression>")}

Legend. That's resolved the issue. I knew it was something so incredibly obvious! 😅

can we get that dataset name from a const variable?

${ref("<dataset_1>", "<searchdata_url_impression>")}

And how does it work for dependencies option in JS?
E.g. I have two tables: `staging.pages` and `all.pages`
In a publish I need to reference one of them as a dependency, so I do:

 

publish('meta', {
  type: 'table',
  schema: 'reports',
  dependencies: ['pages']
}).query(
...

 

At this point I get an error:

> Ambiguous Action name: {"name":"pages","includeDependentAssertions":false}. Did you mean one of: all.pages, staging.pages.

If I try to fix it:

 

publish('meta', {
  type: 'table',
  schema: 'reports',
  dependencies: ['all.pages']
}).query(
...

 

I get a new one:

Missing dependency detected: Action "httparchive.scratchspace.meta_crawl" depends on "{"name":"all.pages","includeDependentAssertions":false}" which does not exist

Is it solvable with JS syntax?