If I run this command on my terminal (https://hub.getdbt.com/dbt-labs/codegen/latest/):
dbt run-operation generate_model_yaml --args "{\"model_name\": "bookings"}"
I get an output that looks like this:
12:53:32 Running with dbt=1.0.1
12:53:34 version: 2
models:
- name: bookings
description: ""
columns:
- name: booking_id
description: ""
- name: masterclient_id
description: ""
I want to save it to a file. If I do this:
dbt run-operation generate_model_yaml --args "{\"model_name\": "bookings"}" > test.yml
this also gets saved to the output:
12:53:32 Running with dbt=1.0.1
12:53:34
While my desired output is just this:
version: 2
models:
- name: bookings
description: ""
columns:
- name: booking_id
description: ""
- name: masterclient_id
description: ""
How can I get rid of the extra time stamp info in the beginning and then save the remaining output in a file?
If you're confident that the output is always structured with those exact two timestamps, you can do:
dbt run-operation generate_model_yaml \
--args "{\"model_name\": \"bookings\"}" \
| tail -n +2 | sed '1 s/[0-9:]* *//'
tail -n +2 removes the first line. The sed command removes the timestamp and following whitespace from the second (now first) line.
A quick look at the relevant dbt docs yields
- The YAML for a base model will be logged to the command line
So it doesn't seem that you can instruct dbt directly to output the YAML data without the logging timestamps.
Actually you can run with --quiet flag to omit the logging timestamps, dbt does support this; the flag needs to go right after dbt command:
dbt --quiet run-operation generate_model_yaml --args "{\"model_name\": "bookings"}" > test.yml
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With