activerecord-dbt 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +103 -77
- data/lib/active_record/dbt/column/{test.rb → data_test.rb} +16 -16
- data/lib/active_record/dbt/column/{testable/accepted_values_testable.rb → data_testable/accepted_values_data_testable.rb} +2 -2
- data/lib/active_record/dbt/column/{testable/not_null_testable.rb → data_testable/not_null_data_testable.rb} +2 -2
- data/lib/active_record/dbt/column/{testable/relationships_testable.rb → data_testable/relationships_data_testable.rb} +3 -3
- data/lib/active_record/dbt/column/{testable/unique_testable.rb → data_testable/unique_data_testable.rb} +2 -2
- data/lib/active_record/dbt/column/{column.rb → yml.rb} +7 -7
- data/lib/active_record/dbt/configuration/i18n_configuration.rb +1 -1
- data/lib/active_record/dbt/dbt_package/dbt_utils/table/{testable/unique_combination_of_columns_testable.rb → data_testable/unique_combination_of_columns_data_testable.rb} +2 -2
- data/lib/active_record/dbt/dbt_package/dbterd/column/{testable → data_testable}/relationships_meta_relationship_type.rb +2 -2
- data/lib/active_record/dbt/factory/columns/yml_factory.rb +33 -0
- data/lib/active_record/dbt/factory/model/staging/yml_factory.rb +24 -0
- data/lib/active_record/dbt/factory/source/yml_factory.rb +17 -0
- data/lib/active_record/dbt/factory/table/yml_factory.rb +18 -0
- data/lib/active_record/dbt/factory/tables/yml_factory.rb +17 -0
- data/lib/active_record/dbt/model/staging/base.rb +1 -1
- data/lib/active_record/dbt/model/staging/yml.rb +5 -5
- data/lib/active_record/dbt/seed/enum/base.rb +1 -1
- data/lib/active_record/dbt/seed/enum/yml.rb +8 -8
- data/lib/active_record/dbt/source/yml.rb +8 -4
- data/lib/active_record/dbt/table/{test.rb → data_test.rb} +3 -3
- data/lib/active_record/dbt/table/yml.rb +6 -6
- data/lib/active_record/dbt/version.rb +1 -1
- data/lib/generators/active_record/dbt/config/templates/source_config.yml.tt +2 -2
- data/lib/generators/active_record/dbt/enum/USAGE +2 -2
- data/lib/generators/active_record/dbt/initializer/templates/dbt.rb +9 -7
- data/lib/generators/active_record/dbt/source/USAGE +1 -1
- data/lib/generators/active_record/dbt/source/source_generator.rb +3 -4
- data/lib/generators/active_record/dbt/staging_model/USAGE +2 -2
- data/lib/generators/active_record/dbt/staging_model/staging_model_generator.rb +1 -1
- metadata +16 -16
- data/lib/active_record/dbt/factory/columns_factory.rb +0 -31
- data/lib/active_record/dbt/factory/model/staging_factory.rb +0 -22
- data/lib/active_record/dbt/factory/source_factory.rb +0 -15
- data/lib/active_record/dbt/factory/table_factory.rb +0 -16
- data/lib/active_record/dbt/factory/tables_factory.rb +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 723d33af77e2e665a7baa13aeebdc892ebca6fad469622494591752e59ff3a4f
|
4
|
+
data.tar.gz: f3ced61ce633c40e8464fd5280f200b062d073f96809fae300de2592c15a10bd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 38293faab98d461a080d9699401ac8c5fb8f59c8f1f19cda3a8ed082fd0ebc8041aaf13a9a1ecf57e484fd3f66c976404cc1c3697f7b97d8c4ae9106f942f165
|
7
|
+
data.tar.gz: f966416f03dc58ba525488afac7f13df368607f1b57b3b6c6cf206a5ed56cf7757a52d20fab68f9463f9ab754f72eb622667b42e588abb02aa3a255d4e6c4c32
|
data/README.md
CHANGED
@@ -84,16 +84,18 @@ Adjust the settings according to your environment.
|
|
84
84
|
```ruby
|
85
85
|
# frozen_string_literal: true
|
86
86
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
87
|
+
if Rails.env.development?
|
88
|
+
require 'active_record/dbt'
|
89
|
+
|
90
|
+
ActiveRecord::Dbt.configure do |c|
|
91
|
+
c.config_directory_path = 'lib/dbt'
|
92
|
+
c.export_directory_path = 'doc/dbt'
|
93
|
+
c.data_sync_delayed = false
|
94
|
+
c.used_dbt_package_names = [
|
95
|
+
'dbt-labs/dbt_utils',
|
96
|
+
'datnguye/dbterd'
|
97
|
+
]
|
98
|
+
end
|
97
99
|
end
|
98
100
|
|
99
101
|
```
|
@@ -110,8 +112,8 @@ This will create the following files.
|
|
110
112
|
|
111
113
|
File | Description
|
112
114
|
--------- | ---------
|
113
|
-
`#{config_directory_path}/source_config.yml` | Used to generate `#{export_directory_path}/src_#{source_name}.yml`.
|
114
|
-
`#{config_directory_path}/staging_model.sql.tt` | Used to generate `#{export_directory_path}/stg_#{source_name}__#{table_name}.sql`.
|
115
|
+
`#{config_directory_path}/source_config.yml` | Used to generate `#{export_directory_path}/models/sources/#{source_name}/src_#{source_name}.yml`.
|
116
|
+
`#{config_directory_path}/staging_model.sql.tt` | Used to generate `#{export_directory_path}/models/staging/#{source_name}/stg_#{source_name}__#{table_name}.sql`.
|
115
117
|
|
116
118
|
### Generate dbt Source File
|
117
119
|
|
@@ -158,7 +160,7 @@ table_overrides:
|
|
158
160
|
period: day
|
159
161
|
columns:
|
160
162
|
created_at:
|
161
|
-
|
163
|
+
data_tests:
|
162
164
|
- not_null:
|
163
165
|
where: 'id != 1'
|
164
166
|
|
@@ -251,7 +253,7 @@ table_overrides:
|
|
251
253
|
period: day
|
252
254
|
columns:
|
253
255
|
created_at:
|
254
|
-
|
256
|
+
data_tests:
|
255
257
|
- not_null:
|
256
258
|
where: 'id != 1'
|
257
259
|
|
@@ -282,7 +284,7 @@ table_descriptions:
|
|
282
284
|
|
283
285
|
```
|
284
286
|
|
285
|
-
#### Generate `#{export_directory_path}/src_#{source_name}.yml`
|
287
|
+
#### Generate `#{export_directory_path}/models/sources/#{source_name}/src_#{source_name}.yml`
|
286
288
|
|
287
289
|
Generate a source file for dbt:
|
288
290
|
|
@@ -290,7 +292,7 @@ Generate a source file for dbt:
|
|
290
292
|
$ bin/rails generate active_record:dbt:source
|
291
293
|
```
|
292
294
|
|
293
|
-
Generate `#{export_directory_path}/src_#{source_name}.yml`.
|
295
|
+
Generate `#{export_directory_path}/models/sources/#{source_name}/src_#{source_name}.yml`.
|
294
296
|
|
295
297
|
##### Example:
|
296
298
|
|
@@ -298,6 +300,14 @@ Generate `#{export_directory_path}/src_#{source_name}.yml`.
|
|
298
300
|
>
|
299
301
|
> The output will be as shown below. It is recommended to indent the YAML file with a tool of your choice.
|
300
302
|
|
303
|
+
> [!WARNING]
|
304
|
+
>
|
305
|
+
> If you are using a version of dbt lower than v1.8, replace `tests:` with `data_tests:` in the generated file.
|
306
|
+
>
|
307
|
+
> [Add data tests to your DAG | dbt Developer Hub](https://docs.getdbt.com/docs/build/data-tests#new-data_tests-syntax)
|
308
|
+
>
|
309
|
+
>> Data tests were historically called "tests" in dbt as the only form of testing available. With the introduction of unit tests in v1.8, the key was renamed from `tests:` to `data_tests:`.
|
310
|
+
|
301
311
|
```yaml
|
302
312
|
---
|
303
313
|
version: 2
|
@@ -318,7 +328,7 @@ sources:
|
|
318
328
|
- name: key
|
319
329
|
description: Key
|
320
330
|
data_type: string
|
321
|
-
|
331
|
+
data_tests:
|
322
332
|
- unique
|
323
333
|
- not_null
|
324
334
|
- name: value
|
@@ -327,12 +337,12 @@ sources:
|
|
327
337
|
- name: created_at
|
328
338
|
description: Created At
|
329
339
|
data_type: datetime
|
330
|
-
|
340
|
+
data_tests:
|
331
341
|
- not_null
|
332
342
|
- name: updated_at
|
333
343
|
description: Updated At
|
334
344
|
data_type: datetime
|
335
|
-
|
345
|
+
data_tests:
|
336
346
|
- not_null
|
337
347
|
- name: companies
|
338
348
|
description: Write a logical_name of the 'companies' table.
|
@@ -340,13 +350,13 @@ sources:
|
|
340
350
|
- name: id
|
341
351
|
description: id
|
342
352
|
data_type: int64
|
343
|
-
|
353
|
+
data_tests:
|
344
354
|
- unique
|
345
355
|
- not_null
|
346
356
|
- name: name
|
347
357
|
description: Write a description of the 'companies.name' column.
|
348
358
|
data_type: string
|
349
|
-
|
359
|
+
data_tests:
|
350
360
|
- not_null
|
351
361
|
- name: establishment_date
|
352
362
|
description: Write a description of the 'companies.establishment_date' column.
|
@@ -357,7 +367,7 @@ sources:
|
|
357
367
|
- name: published
|
358
368
|
description: Write a description of the 'companies.published' column.
|
359
369
|
data_type: bool
|
360
|
-
|
370
|
+
data_tests:
|
361
371
|
- not_null
|
362
372
|
- accepted_values:
|
363
373
|
values:
|
@@ -367,12 +377,12 @@ sources:
|
|
367
377
|
- name: created_at
|
368
378
|
description: Created At
|
369
379
|
data_type: datetime
|
370
|
-
|
380
|
+
data_tests:
|
371
381
|
- not_null
|
372
382
|
- name: updated_at
|
373
383
|
description: Updated At
|
374
384
|
data_type: datetime
|
375
|
-
|
385
|
+
data_tests:
|
376
386
|
- not_null
|
377
387
|
- name: posts
|
378
388
|
description: Post
|
@@ -380,13 +390,13 @@ sources:
|
|
380
390
|
- name: id
|
381
391
|
description: ID
|
382
392
|
data_type: int64
|
383
|
-
|
393
|
+
data_tests:
|
384
394
|
- unique
|
385
395
|
- not_null
|
386
396
|
- name: user_id
|
387
397
|
description: User
|
388
398
|
data_type: int64
|
389
|
-
|
399
|
+
data_tests:
|
390
400
|
- not_null
|
391
401
|
- relationships:
|
392
402
|
to: source('dummy', 'users')
|
@@ -402,17 +412,17 @@ sources:
|
|
402
412
|
- name: created_at
|
403
413
|
description: Post Created At
|
404
414
|
data_type: datetime
|
405
|
-
|
415
|
+
data_tests:
|
406
416
|
- not_null
|
407
417
|
- name: updated_at
|
408
418
|
description: Post Updated At
|
409
419
|
data_type: datetime
|
410
|
-
|
420
|
+
data_tests:
|
411
421
|
- not_null
|
412
422
|
- name: status
|
413
423
|
description: Write a description of the 'posts.status' column.
|
414
424
|
data_type: int64
|
415
|
-
|
425
|
+
data_tests:
|
416
426
|
- accepted_values:
|
417
427
|
values:
|
418
428
|
- 0
|
@@ -421,7 +431,7 @@ sources:
|
|
421
431
|
quote: false
|
422
432
|
- name: posts_tags
|
423
433
|
description: Write a logical_name of the 'posts_tags' table.
|
424
|
-
|
434
|
+
data_tests:
|
425
435
|
- dbt_utils.unique_combination_of_columns:
|
426
436
|
combination_of_columns:
|
427
437
|
- post_id
|
@@ -430,7 +440,7 @@ sources:
|
|
430
440
|
- name: post_id
|
431
441
|
description: post_id
|
432
442
|
data_type: int64
|
433
|
-
|
443
|
+
data_tests:
|
434
444
|
- not_null
|
435
445
|
- relationships:
|
436
446
|
to: source('dummy', 'posts')
|
@@ -443,7 +453,7 @@ sources:
|
|
443
453
|
- name: tag_id
|
444
454
|
description: tag_id
|
445
455
|
data_type: int64
|
446
|
-
|
456
|
+
data_tests:
|
447
457
|
- not_null
|
448
458
|
- relationships:
|
449
459
|
to: source('dummy', 'tags')
|
@@ -459,13 +469,13 @@ sources:
|
|
459
469
|
- name: id
|
460
470
|
description: id
|
461
471
|
data_type: int64
|
462
|
-
|
472
|
+
data_tests:
|
463
473
|
- unique
|
464
474
|
- not_null
|
465
475
|
- name: user_id
|
466
476
|
description: user_id
|
467
477
|
data_type: int64
|
468
|
-
|
478
|
+
data_tests:
|
469
479
|
- unique
|
470
480
|
- not_null
|
471
481
|
- relationships:
|
@@ -476,26 +486,26 @@ sources:
|
|
476
486
|
- name: first_name
|
477
487
|
description: Write a description of the 'profiles.first_name' column.
|
478
488
|
data_type: string
|
479
|
-
|
489
|
+
data_tests:
|
480
490
|
- not_null
|
481
491
|
- name: last_name
|
482
492
|
description: Write a description of the 'profiles.last_name' column.
|
483
493
|
data_type: string
|
484
|
-
|
494
|
+
data_tests:
|
485
495
|
- not_null
|
486
496
|
- name: created_at
|
487
497
|
description: Created At
|
488
498
|
data_type: datetime
|
489
|
-
|
499
|
+
data_tests:
|
490
500
|
- not_null
|
491
501
|
- name: updated_at
|
492
502
|
description: Updated At
|
493
503
|
data_type: datetime
|
494
|
-
|
504
|
+
data_tests:
|
495
505
|
- not_null
|
496
506
|
- name: relationships
|
497
507
|
description: Write a logical_name of the 'relationships' table.
|
498
|
-
|
508
|
+
data_tests:
|
499
509
|
- dbt_utils.unique_combination_of_columns:
|
500
510
|
combination_of_columns:
|
501
511
|
- follower_id
|
@@ -504,13 +514,13 @@ sources:
|
|
504
514
|
- name: id
|
505
515
|
description: id
|
506
516
|
data_type: int64
|
507
|
-
|
517
|
+
data_tests:
|
508
518
|
- unique
|
509
519
|
- not_null
|
510
520
|
- name: follower_id
|
511
521
|
description: follower_id
|
512
522
|
data_type: int64
|
513
|
-
|
523
|
+
data_tests:
|
514
524
|
- not_null
|
515
525
|
- relationships:
|
516
526
|
to: source('dummy', 'users')
|
@@ -520,7 +530,7 @@ sources:
|
|
520
530
|
- name: followed_id
|
521
531
|
description: followed_id
|
522
532
|
data_type: int64
|
523
|
-
|
533
|
+
data_tests:
|
524
534
|
- not_null
|
525
535
|
- relationships:
|
526
536
|
to: source('dummy', 'users')
|
@@ -530,12 +540,12 @@ sources:
|
|
530
540
|
- name: created_at
|
531
541
|
description: Created At
|
532
542
|
data_type: datetime
|
533
|
-
|
543
|
+
data_tests:
|
534
544
|
- not_null
|
535
545
|
- name: updated_at
|
536
546
|
description: Updated At
|
537
547
|
data_type: datetime
|
538
|
-
|
548
|
+
data_tests:
|
539
549
|
- not_null
|
540
550
|
- name: schema_migrations
|
541
551
|
description: |-
|
@@ -546,7 +556,7 @@ sources:
|
|
546
556
|
- name: version
|
547
557
|
description: The version number of the migration.
|
548
558
|
data_type: string
|
549
|
-
|
559
|
+
data_tests:
|
550
560
|
- unique
|
551
561
|
- not_null
|
552
562
|
- name: tags
|
@@ -555,28 +565,28 @@ sources:
|
|
555
565
|
- name: id
|
556
566
|
description: id
|
557
567
|
data_type: int64
|
558
|
-
|
568
|
+
data_tests:
|
559
569
|
- unique
|
560
570
|
- not_null
|
561
571
|
- name: name
|
562
572
|
description: Write a description of the 'tags.name' column.
|
563
573
|
data_type: string
|
564
|
-
|
574
|
+
data_tests:
|
565
575
|
- unique
|
566
576
|
- not_null
|
567
577
|
- name: created_at
|
568
578
|
description: Created At
|
569
579
|
data_type: datetime
|
570
|
-
|
580
|
+
data_tests:
|
571
581
|
- not_null
|
572
582
|
- name: updated_at
|
573
583
|
description: Updated At
|
574
584
|
data_type: datetime
|
575
|
-
|
585
|
+
data_tests:
|
576
586
|
- not_null
|
577
587
|
- name: user_tags
|
578
588
|
description: Write a logical_name of the 'user_tags' table.
|
579
|
-
|
589
|
+
data_tests:
|
580
590
|
- dbt_utils.unique_combination_of_columns:
|
581
591
|
combination_of_columns:
|
582
592
|
- user_id
|
@@ -585,13 +595,13 @@ sources:
|
|
585
595
|
- name: id
|
586
596
|
description: id
|
587
597
|
data_type: int64
|
588
|
-
|
598
|
+
data_tests:
|
589
599
|
- unique
|
590
600
|
- not_null
|
591
601
|
- name: user_id
|
592
602
|
description: user_id
|
593
603
|
data_type: int64
|
594
|
-
|
604
|
+
data_tests:
|
595
605
|
- not_null
|
596
606
|
- relationships:
|
597
607
|
to: source('dummy', 'users')
|
@@ -601,7 +611,7 @@ sources:
|
|
601
611
|
- name: tag_id
|
602
612
|
description: tag_id
|
603
613
|
data_type: int64
|
604
|
-
|
614
|
+
data_tests:
|
605
615
|
- not_null
|
606
616
|
- relationships:
|
607
617
|
to: source('dummy', 'tags')
|
@@ -611,12 +621,12 @@ sources:
|
|
611
621
|
- name: created_at
|
612
622
|
description: Created At
|
613
623
|
data_type: datetime
|
614
|
-
|
624
|
+
data_tests:
|
615
625
|
- not_null
|
616
626
|
- name: updated_at
|
617
627
|
description: Updated At
|
618
628
|
data_type: datetime
|
619
|
-
|
629
|
+
data_tests:
|
620
630
|
- not_null
|
621
631
|
- name: users
|
622
632
|
description: User
|
@@ -632,24 +642,24 @@ sources:
|
|
632
642
|
- name: id
|
633
643
|
description: ID
|
634
644
|
data_type: int64
|
635
|
-
|
645
|
+
data_tests:
|
636
646
|
- unique
|
637
647
|
- not_null
|
638
648
|
- name: created_at
|
639
649
|
description: User Created At
|
640
650
|
data_type: datetime
|
641
|
-
|
651
|
+
data_tests:
|
642
652
|
- not_null:
|
643
653
|
where: id != 1
|
644
654
|
- name: updated_at
|
645
655
|
description: User Updated At
|
646
656
|
data_type: datetime
|
647
|
-
|
657
|
+
data_tests:
|
648
658
|
- not_null
|
649
659
|
- name: company_id
|
650
660
|
description: company_id
|
651
661
|
data_type: int64
|
652
|
-
|
662
|
+
data_tests:
|
653
663
|
- relationships:
|
654
664
|
to: source('dummy', 'companies')
|
655
665
|
field: id
|
@@ -748,8 +758,8 @@ Generate staging model files for dbt that reference the specified `TABLE_NAME`.
|
|
748
758
|
|
749
759
|
File | Description
|
750
760
|
--------- | ---------
|
751
|
-
`#{export_directory_path}/stg_#{source_name}__#{table_name}.sql` | Staging model file for dbt.
|
752
|
-
`#{export_directory_path}/stg_#{source_name}__#{table_name}.yml` | Staging model documentation file for dbt.
|
761
|
+
`#{export_directory_path}/models/staging/#{source_name}/stg_#{source_name}__#{table_name}.sql` | Staging model file for dbt.
|
762
|
+
`#{export_directory_path}/models/staging/#{source_name}/stg_#{source_name}__#{table_name}.yml` | Staging model documentation file for dbt.
|
753
763
|
|
754
764
|
Example:
|
755
765
|
|
@@ -757,7 +767,7 @@ Example:
|
|
757
767
|
$ bin/rails generate active_record:dbt:staging_model profiles
|
758
768
|
```
|
759
769
|
|
760
|
-
##### Generate `#{export_directory_path}/stg_#{source_name}__#{table_name}.sql`
|
770
|
+
##### Generate `#{export_directory_path}/models/staging/#{source_name}/stg_#{source_name}__#{table_name}.sql`
|
761
771
|
|
762
772
|
Example:
|
763
773
|
|
@@ -828,7 +838,7 @@ from final
|
|
828
838
|
|
829
839
|
```
|
830
840
|
|
831
|
-
##### Generate `#{export_directory_path}/stg_#{source_name}__#{table_name}.yml`
|
841
|
+
##### Generate `#{export_directory_path}/models/staging/#{source_name}/stg_#{source_name}__#{table_name}.yml`
|
832
842
|
|
833
843
|
Example:
|
834
844
|
|
@@ -836,6 +846,14 @@ Example:
|
|
836
846
|
>
|
837
847
|
> The output will be as shown below. It is recommended to indent the YAML file with a tool of your choice.
|
838
848
|
|
849
|
+
> [!WARNING]
|
850
|
+
>
|
851
|
+
> If you are using a version of dbt lower than v1.8, replace `tests:` with `data_tests:` in the generated file.
|
852
|
+
>
|
853
|
+
> [Add data tests to your DAG | dbt Developer Hub](https://docs.getdbt.com/docs/build/data-tests#new-data_tests-syntax)
|
854
|
+
>
|
855
|
+
>> Data tests were historically called "tests" in dbt as the only form of testing available. With the introduction of unit tests in v1.8, the key was renamed from `tests:` to `data_tests:`.
|
856
|
+
|
839
857
|
```yaml
|
840
858
|
---
|
841
859
|
version: 2
|
@@ -846,7 +864,7 @@ models:
|
|
846
864
|
- name: profile_id
|
847
865
|
description: profile_id
|
848
866
|
data_type: int64
|
849
|
-
|
867
|
+
data_tests:
|
850
868
|
- unique
|
851
869
|
- not_null
|
852
870
|
- relationships:
|
@@ -857,7 +875,7 @@ models:
|
|
857
875
|
- name: user_id
|
858
876
|
description: user_id
|
859
877
|
data_type: int64
|
860
|
-
|
878
|
+
data_tests:
|
861
879
|
- unique
|
862
880
|
- not_null
|
863
881
|
- relationships:
|
@@ -868,22 +886,22 @@ models:
|
|
868
886
|
- name: first_name
|
869
887
|
description: Write a description of the 'profiles.first_name' column.
|
870
888
|
data_type: string
|
871
|
-
|
889
|
+
data_tests:
|
872
890
|
- not_null
|
873
891
|
- name: last_name
|
874
892
|
description: Write a description of the 'profiles.last_name' column.
|
875
893
|
data_type: string
|
876
|
-
|
894
|
+
data_tests:
|
877
895
|
- not_null
|
878
896
|
- name: created_at
|
879
897
|
description: Created At
|
880
898
|
data_type: datetime
|
881
|
-
|
899
|
+
data_tests:
|
882
900
|
- not_null
|
883
901
|
- name: updated_at
|
884
902
|
description: Updated At
|
885
903
|
data_type: datetime
|
886
|
-
|
904
|
+
data_tests:
|
887
905
|
- not_null
|
888
906
|
|
889
907
|
```
|
@@ -933,8 +951,8 @@ Generate seed enum files for dbt from the specified `TABLE_NAME` and `ENUM_COLUM
|
|
933
951
|
|
934
952
|
File | Description
|
935
953
|
--------- | ---------
|
936
|
-
`#{export_directory_path}/seed_#{source_name}__#{table_name_singularize}_enum_#{enum_pluralized}.csv` | Seed enum file for dbt.
|
937
|
-
`#{export_directory_path}/seed_#{source_name}__#{table_name_singularize}_enum_#{enum_pluralized}.yml` | Seed enum documentation file for dbt.
|
954
|
+
`#{export_directory_path}/seeds/#{source_name}/seed_#{source_name}__#{table_name_singularize}_enum_#{enum_pluralized}.csv` | Seed enum file for dbt.
|
955
|
+
`#{export_directory_path}/seeds/#{source_name}/seed_#{source_name}__#{table_name_singularize}_enum_#{enum_pluralized}.yml` | Seed enum documentation file for dbt.
|
938
956
|
|
939
957
|
Example:
|
940
958
|
|
@@ -942,7 +960,7 @@ Example:
|
|
942
960
|
$ bin/rails generate active_record:dbt:enum posts status
|
943
961
|
```
|
944
962
|
|
945
|
-
##### Generate `#{export_directory_path}/seed_#{source_name}__#{table_name_singularize}_enum_#{enum_pluralized}.csv`
|
963
|
+
##### Generate `#{export_directory_path}/seeds/#{source_name}/seed_#{source_name}__#{table_name_singularize}_enum_#{enum_pluralized}.csv`
|
946
964
|
|
947
965
|
Example:
|
948
966
|
|
@@ -954,7 +972,7 @@ status_before_type_of_cast,status_key,status_en,status_ja
|
|
954
972
|
|
955
973
|
```
|
956
974
|
|
957
|
-
##### Generate `#{export_directory_path}/seed_#{source_name}__#{table_name_singularize}_enum_#{enum_pluralized}.yml`
|
975
|
+
##### Generate `#{export_directory_path}/seeds/#{source_name}/seed_#{source_name}__#{table_name_singularize}_enum_#{enum_pluralized}.yml`
|
958
976
|
|
959
977
|
Example:
|
960
978
|
|
@@ -962,6 +980,14 @@ Example:
|
|
962
980
|
>
|
963
981
|
> The output will be as shown below. It is recommended to indent the YAML file with a tool of your choice.
|
964
982
|
|
983
|
+
> [!WARNING]
|
984
|
+
>
|
985
|
+
> If you are using a version of dbt lower than v1.8, replace `tests:` with `data_tests:` in the generated file.
|
986
|
+
>
|
987
|
+
> [Add data tests to your DAG | dbt Developer Hub](https://docs.getdbt.com/docs/build/data-tests#new-data_tests-syntax)
|
988
|
+
>
|
989
|
+
>> Data tests were historically called "tests" in dbt as the only form of testing available. With the introduction of unit tests in v1.8, the key was renamed from `tests:` to `data_tests:`.
|
990
|
+
|
965
991
|
```yaml
|
966
992
|
---
|
967
993
|
version: 2
|
@@ -977,22 +1003,22 @@ seeds:
|
|
977
1003
|
columns:
|
978
1004
|
- name: status_before_type_of_cast
|
979
1005
|
description: Status
|
980
|
-
|
1006
|
+
data_tests:
|
981
1007
|
- unique
|
982
1008
|
- not_null
|
983
1009
|
- name: status_key
|
984
1010
|
description: Status(key)
|
985
|
-
|
1011
|
+
data_tests:
|
986
1012
|
- unique
|
987
1013
|
- not_null
|
988
1014
|
- name: status_en
|
989
1015
|
description: Status(en)
|
990
|
-
|
1016
|
+
data_tests:
|
991
1017
|
- unique
|
992
1018
|
- not_null
|
993
1019
|
- name: status_ja
|
994
1020
|
description: Status(ja)
|
995
|
-
|
1021
|
+
data_tests:
|
996
1022
|
- unique
|
997
1023
|
- not_null
|
998
1024
|
|
@@ -3,11 +3,11 @@
|
|
3
3
|
module ActiveRecord
|
4
4
|
module Dbt
|
5
5
|
module Column
|
6
|
-
class
|
7
|
-
include ActiveRecord::Dbt::Column::
|
8
|
-
include ActiveRecord::Dbt::Column::
|
9
|
-
include ActiveRecord::Dbt::Column::
|
10
|
-
include ActiveRecord::Dbt::Column::
|
6
|
+
class DataTest
|
7
|
+
include ActiveRecord::Dbt::Column::DataTestable::AcceptedValuesDataTestable
|
8
|
+
include ActiveRecord::Dbt::Column::DataTestable::NotNullDataTestable
|
9
|
+
include ActiveRecord::Dbt::Column::DataTestable::RelationshipsDataTestable
|
10
|
+
include ActiveRecord::Dbt::Column::DataTestable::UniqueDataTestable
|
11
11
|
|
12
12
|
attr_reader :table_name, :column, :primary_keys, :foreign_keys
|
13
13
|
|
@@ -22,15 +22,15 @@ module ActiveRecord
|
|
22
22
|
@config = ActiveRecord::Dbt::Config.instance
|
23
23
|
end
|
24
24
|
|
25
|
-
def
|
26
|
-
(
|
27
|
-
|
25
|
+
def properties
|
26
|
+
(data_tests.keys | data_tests_overrides_hash.keys).map do |key|
|
27
|
+
data_tests_overrides_hash[key] || data_tests[key]
|
28
28
|
end.presence
|
29
29
|
end
|
30
30
|
|
31
31
|
private
|
32
32
|
|
33
|
-
def
|
33
|
+
def data_tests
|
34
34
|
{
|
35
35
|
'unique_test' => unique_test,
|
36
36
|
'not_null_test' => not_null_test,
|
@@ -39,10 +39,10 @@ module ActiveRecord
|
|
39
39
|
}.compact
|
40
40
|
end
|
41
41
|
|
42
|
-
def
|
43
|
-
@
|
44
|
-
|
45
|
-
"#{extract_key(
|
42
|
+
def data_tests_overrides_hash
|
43
|
+
@data_tests_overrides_hash ||=
|
44
|
+
data_tests_overrides.index_by do |data_tests_override|
|
45
|
+
"#{extract_key(data_tests_override)}_test"
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
@@ -50,9 +50,9 @@ module ActiveRecord
|
|
50
50
|
item.is_a?(Hash) ? item.keys.first : item
|
51
51
|
end
|
52
52
|
|
53
|
-
def
|
54
|
-
@
|
55
|
-
source_config.dig(:table_overrides, table_name, :columns, column_name, :
|
53
|
+
def data_tests_overrides
|
54
|
+
@data_tests_overrides ||=
|
55
|
+
source_config.dig(:table_overrides, table_name, :columns, column_name, :data_tests) ||
|
56
56
|
[]
|
57
57
|
end
|
58
58
|
end
|
@@ -3,8 +3,8 @@
|
|
3
3
|
module ActiveRecord
|
4
4
|
module Dbt
|
5
5
|
module Column
|
6
|
-
module
|
7
|
-
module
|
6
|
+
module DataTestable
|
7
|
+
module AcceptedValuesDataTestable
|
8
8
|
extend ActiveRecord::Dbt::RequiredMethods
|
9
9
|
|
10
10
|
define_required_methods :@config, :column, :table_name, :column_name
|
@@ -3,9 +3,9 @@
|
|
3
3
|
module ActiveRecord
|
4
4
|
module Dbt
|
5
5
|
module Column
|
6
|
-
module
|
7
|
-
module
|
8
|
-
include ActiveRecord::Dbt::DbtPackage::Dbterd::Column::
|
6
|
+
module DataTestable
|
7
|
+
module RelationshipsDataTestable
|
8
|
+
include ActiveRecord::Dbt::DbtPackage::Dbterd::Column::DataTestable::RelationshipsMetaRelationshipType
|
9
9
|
|
10
10
|
extend ActiveRecord::Dbt::RequiredMethods
|
11
11
|
|