Skip to content

Commit e34b93e

Browse files
Merge pull request #20 from fivetran/bugfix/bring-back-fivetran-deleted
[Bug Fix] Bring back `fivetran_deleted` for `gl_detail` models
2 parents ebf60eb + a38eff1 commit e34b93e

13 files changed

+53
-31
lines changed

CHANGELOG.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,22 @@
1+
# dbt_sage_intacct_source v0.4.0
2+
[PR #20](https://github.com/fivetran/dbt_sage_intacct_source/pull/20) includes the following updates:
3+
4+
## Breaking Changes
5+
- Reintroduced `_fivetran_deleted` from the `gl_detail` source table, as the field was not fully deprecated within in the connector.
6+
**It is null in normal incremental syncs, but can populate true (or false) in historical resyncs.**
7+
- This ensures the general ledger models in the downstream `dbt_sage_intacct` transform package exclude deleted records from `stg_sage_intacct__gl_detail`.
8+
- Renamed `_fivetran_deleted` to:
9+
- `is_batch_deleted` in `stg_sage_intacct__gl_batch`
10+
- `is_detail_deleted` in `stg_sage_intacct__gl_detail`
11+
- This ensures column name uniqueness when they are joined into `int_sage_intacct__active_gl_detail` in the `dbt_sage_intacct` package.
12+
13+
## Documentation
14+
- Corrected references to connectors and connections in the README. ([#19](https://github.com/fivetran/dbt_sage_intacct_source/pull/19))
15+
- Corrected the `_fivetran_deleted` descriptions in the `src_sage_intacct.yml` and `stg_sage_intacct.yml` documentation.
16+
17+
## Under the Hood
18+
- Updated `gl_detail` yml and seed files with `_fivetran_deleted` documentation and records for testing.
19+
120
# dbt_sage_intacct_source v0.3.1
221
[PR #16](https://github.com/fivetran/dbt_sage_intacct_source/pull/16) includes the following updates:
322

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
## How do I use the dbt package?
2323
### Step 1: Prerequisites
2424
To use this dbt package, you must have the following:
25-
- At least one Fivetran Sage Intacct connector syncing data into your destination.
25+
- At least one Fivetran Sage Intacct connection syncing data into your destination.
2626
- A **BigQuery**, **Snowflake**, **Redshift**, **PostgreSQL**, or **Databricks** destination.
2727

2828
#### Databricks Dispatch Configuration
@@ -39,7 +39,7 @@ If you are **not** using the [Sage Intacct transformation package](https://githu
3939
```yaml
4040
packages:
4141
- package: fivetran/sage_intacct_source
42-
version: [">=0.3.0", "<0.4.0"] # we recommend using ranges to capture non-breaking changes automatically
42+
version: [">=0.4.0", "<0.5.0"] # we recommend using ranges to capture non-breaking changes automatically
4343
```
4444
### Step 3: Define database and schema variables
4545
By default, this package runs using your destination and the `sage_intacct` schema. If this is not where your Sage Intacct data is (for example, if your Sage Intacct schema is named `sage_intacct_fivetran`), add the following configuration to your root `dbt_project.yml` file:

dbt_project.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: 'sage_intacct_source'
2-
version: '0.3.1'
2+
version: '0.4.0'
33
config-version: 2
44
require-dbt-version: [">=1.3.0", "<2.0.0"]
55
models:

docs/catalog.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

docs/manifest.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

docs/run_results.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

integration_tests/dbt_project.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: 'sage_intacct_source_integration_tests'
2-
version: '0.3.1'
2+
version: '0.4.0'
33
config-version: 2
44

55
profile: 'integration_tests'
Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
recordno,accountno,accounttitle,amount,batch_date,batch_no,batch_title,batchkey,bookid,creditamount,debitamount,customerid,customername,description,docnumber,entry_date,entry_state,entrydescription,line_no,recordid,recordtype,totaldue,totalentered,totalpaid,tr_type,trx_amount,trx_creditamount,trx_debitamount,vendorid,vendorname,whencreated,whendue,whenmodified,whenpaid
2-
YGy2nQ7YHphQv5+5AdQTyQ==,15030,A+5CoJT/HDmjwrGYGL6RUg==,2492.5,2021-12-01,74885,El+ECK1x7a25SuLqaMwODA==,506019,/8yT7c/TpIKmxe0K8MmSNA==,0,2492.5,,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,06m0www4a75rDMeUgh3o0w==,2021-12-01,P,06m0www4a75rDMeUgh3o0w==,3,20760,1lkow/+J96atpaza+bjZwQ==,2492.5,2492.5,0,1,2492.5,0,2492.5,V-005638,NJa+iTk8TGFrCNzU4GaQMg==,2021-11-16,2021-11-16,2021-12-10 11:47:03,2021-12-10
3-
GA/oILgpDw/6ay94J1jgLA==,20000,HtcR/HtKU0hM5hLuZcjjuA==,-2492.5,2021-12-01,74885,El+ECK1x7a25SuLqaMwODA==,506019,/8yT7c/TpIKmxe0K8MmSNA==,2492.5,0,,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,06m0www4a75rDMeUgh3o0w==,2021-12-01,P,1B2M2Y8AsgTpgAmY7PhCfg==,2,20760,1lkow/+J96atpaza+bjZwQ==,2492.5,2492.5,0,-1,-2492.5,2492.5,0,V-005638,NJa+iTk8TGFrCNzU4GaQMg==,2021-11-16,2021-11-16,2021-12-08 16:00:57,2021-12-10
4-
aA1UkdHgMiUM9APkcv3MXA==,20000,HtcR/HtKU0hM5hLuZcjjuA==,-6825,2021-12-01,75155,SNfyN9QHUE4npoS72Hd1Bw==,506509,/8yT7c/TpIKmxe0K8MmSNA==,6825,0,,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,2021-12-01,P,1B2M2Y8AsgTpgAmY7PhCfg==,2,20239,1lkow/+J96atpaza+bjZwQ==,6825,6825,0,-1,-6825,6825,0,V-002809,fYhwLN+cpy+roem/6mSQXg==,2021-11-04,2021-11-04,2021-12-09 18:22:58,2021-12-10
5-
geRi+pxC0L/61P7xBaJdPA==,58300,GbTAkJACGOjrVzQghLqbWg==,6825,2021-12-01,75155,SNfyN9QHUE4npoS72Hd1Bw==,506509,/8yT7c/TpIKmxe0K8MmSNA==,0,6825,,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,2021-12-01,P,vItcRirL0sTcu0nfSOts+w==,3,20239,1lkow/+J96atpaza+bjZwQ==,6825,6825,0,1,6825,0,6825,V-002809,fYhwLN+cpy+roem/6mSQXg==,2021-11-04,2021-11-04,2021-12-10 11:31:18,2021-12-10
6-
SYe36P3OgdN7+/ocUIlQJw==,20000,HtcR/HtKU0hM5hLuZcjjuA==,378.38,2021-12-10,40933,SNfyN9QHUE4npoS72Hd1Bw==,506993,/8yT7c/TpIKmxe0K8MmSNA==,0,378.38,,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,2021-12-10,P,j13Eh8tAgyBPUNi2GaU8ow==,51,,SYjPoEyQZSe8RTfgN62BvA==,0,14000,14000,1,378.38,0,378.38,V-003017,Fik0+VTeuZo+2L4rH/Y5GA==,2021-12-10,2021-12-10,2021-12-10 12:05:54,2021-12-10
7-
RfwHVmMm2yi5pzPHaHgfwA==,20000,HtcR/HtKU0hM5hLuZcjjuA==,378.38,2021-12-10,40933,SNfyN9QHUE4npoS72Hd1Bw==,506993,/8yT7c/TpIKmxe0K8MmSNA==,0,378.38,,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,2021-12-10,P,j13Eh8tAgyBPUNi2GaU8ow==,63,,SYjPoEyQZSe8RTfgN62BvA==,0,14000,14000,1,378.38,0,378.38,V-003017,Fik0+VTeuZo+2L4rH/Y5GA==,2021-12-10,2021-12-10,2021-12-10 12:05:54,2021-12-10
8-
R+r/suM2XEm3pV4OpKEUAA==,20000,HtcR/HtKU0hM5hLuZcjjuA==,378.38,2021-12-10,40933,SNfyN9QHUE4npoS72Hd1Bw==,506993,/8yT7c/TpIKmxe0K8MmSNA==,0,378.38,,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,2021-12-10,P,j13Eh8tAgyBPUNi2GaU8ow==,15,,SYjPoEyQZSe8RTfgN62BvA==,0,14000,14000,1,378.38,0,378.38,V-003017,Fik0+VTeuZo+2L4rH/Y5GA==,2021-12-10,2021-12-10,2021-12-10 12:05:54,2021-12-10
9-
8eKBstZUwA0YkRjpTduzxw==,20000,HtcR/HtKU0hM5hLuZcjjuA==,378.38,2021-12-10,40933,SNfyN9QHUE4npoS72Hd1Bw==,506993,/8yT7c/TpIKmxe0K8MmSNA==,0,378.38,,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,2021-12-10,P,j13Eh8tAgyBPUNi2GaU8ow==,25,,SYjPoEyQZSe8RTfgN62BvA==,0,14000,14000,1,378.38,0,378.38,V-003017,Fik0+VTeuZo+2L4rH/Y5GA==,2021-12-10,2021-12-10,2021-12-10 12:05:54,2021-12-10
10-
LbAdQij3k+nNd4i0+vLJLw==,20000,HtcR/HtKU0hM5hLuZcjjuA==,378.38,2021-12-10,40933,SNfyN9QHUE4npoS72Hd1Bw==,506993,/8yT7c/TpIKmxe0K8MmSNA==,0,378.38,,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,2021-12-10,P,j13Eh8tAgyBPUNi2GaU8ow==,37,,SYjPoEyQZSe8RTfgN62BvA==,0,14000,14000,1,378.38,0,378.38,V-003017,Fik0+VTeuZo+2L4rH/Y5GA==,2021-12-10,2021-12-10,2021-12-10 12:05:54,2021-12-10
11-
lztVVJ9OI+1P5nTsHkyJOg==,20000,HtcR/HtKU0hM5hLuZcjjuA==,378.38,2021-12-10,40933,SNfyN9QHUE4npoS72Hd1Bw==,506993,/8yT7c/TpIKmxe0K8MmSNA==,0,378.38,,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,2021-12-10,P,j13Eh8tAgyBPUNi2GaU8ow==,49,,SYjPoEyQZSe8RTfgN62BvA==,0,14000,14000,1,378.38,0,378.38,V-003017,Fik0+VTeuZo+2L4rH/Y5GA==,2021-12-10,2021-12-10,2021-12-10 12:05:54,2021-12-10
1+
recordno,accountno,accounttitle,amount,batch_date,batch_no,batch_title,batchkey,bookid,creditamount,debitamount,customerid,customername,description,docnumber,entry_date,entry_state,entrydescription,line_no,recordid,recordtype,totaldue,totalentered,totalpaid,tr_type,trx_amount,trx_creditamount,trx_debitamount,vendorid,vendorname,whencreated,whendue,whenmodified,whenpaid,_fivetran_deleted
2+
YGy2nQ7YHphQv5+5AdQTyQ==,15030,A+5CoJT/HDmjwrGYGL6RUg==,2492.5,2021-12-01,74885,El+ECK1x7a25SuLqaMwODA==,506019,/8yT7c/TpIKmxe0K8MmSNA==,0,2492.5,,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,06m0www4a75rDMeUgh3o0w==,2021-12-01,P,06m0www4a75rDMeUgh3o0w==,3,20760,1lkow/+J96atpaza+bjZwQ==,2492.5,2492.5,0,1,2492.5,0,2492.5,V-005638,NJa+iTk8TGFrCNzU4GaQMg==,2021-11-16,2021-11-16,2021-12-10 11:47:03,2021-12-10,FALSE
3+
GA/oILgpDw/6ay94J1jgLA==,20000,HtcR/HtKU0hM5hLuZcjjuA==,-2492.5,2021-12-01,74885,El+ECK1x7a25SuLqaMwODA==,506019,/8yT7c/TpIKmxe0K8MmSNA==,2492.5,0,,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,06m0www4a75rDMeUgh3o0w==,2021-12-01,P,1B2M2Y8AsgTpgAmY7PhCfg==,2,20760,1lkow/+J96atpaza+bjZwQ==,2492.5,2492.5,0,-1,-2492.5,2492.5,0,V-005638,NJa+iTk8TGFrCNzU4GaQMg==,2021-11-16,2021-11-16,2021-12-08 16:00:57,2021-12-10,FALSE
4+
aA1UkdHgMiUM9APkcv3MXA==,20000,HtcR/HtKU0hM5hLuZcjjuA==,-6825,2021-12-01,75155,SNfyN9QHUE4npoS72Hd1Bw==,506509,/8yT7c/TpIKmxe0K8MmSNA==,6825,0,,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,2021-12-01,P,1B2M2Y8AsgTpgAmY7PhCfg==,2,20239,1lkow/+J96atpaza+bjZwQ==,6825,6825,0,-1,-6825,6825,0,V-002809,fYhwLN+cpy+roem/6mSQXg==,2021-11-04,2021-11-04,2021-12-09 18:22:58,2021-12-10,FALSE
5+
geRi+pxC0L/61P7xBaJdPA==,58300,GbTAkJACGOjrVzQghLqbWg==,6825,2021-12-01,75155,SNfyN9QHUE4npoS72Hd1Bw==,506509,/8yT7c/TpIKmxe0K8MmSNA==,0,6825,,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,2021-12-01,P,vItcRirL0sTcu0nfSOts+w==,3,20239,1lkow/+J96atpaza+bjZwQ==,6825,6825,0,1,6825,0,6825,V-002809,fYhwLN+cpy+roem/6mSQXg==,2021-11-04,2021-11-04,2021-12-10 11:31:18,2021-12-10,FALSE
6+
SYe36P3OgdN7+/ocUIlQJw==,20000,HtcR/HtKU0hM5hLuZcjjuA==,378.38,2021-12-10,40933,SNfyN9QHUE4npoS72Hd1Bw==,506993,/8yT7c/TpIKmxe0K8MmSNA==,0,378.38,,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,2021-12-10,P,j13Eh8tAgyBPUNi2GaU8ow==,51,,SYjPoEyQZSe8RTfgN62BvA==,0,14000,14000,1,378.38,0,378.38,V-003017,Fik0+VTeuZo+2L4rH/Y5GA==,2021-12-10,2021-12-10,2021-12-10 12:05:54,2021-12-10,FALSE
7+
RfwHVmMm2yi5pzPHaHgfwA==,20000,HtcR/HtKU0hM5hLuZcjjuA==,378.38,2021-12-10,40933,SNfyN9QHUE4npoS72Hd1Bw==,506993,/8yT7c/TpIKmxe0K8MmSNA==,0,378.38,,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,2021-12-10,P,j13Eh8tAgyBPUNi2GaU8ow==,63,,SYjPoEyQZSe8RTfgN62BvA==,0,14000,14000,1,378.38,0,378.38,V-003017,Fik0+VTeuZo+2L4rH/Y5GA==,2021-12-10,2021-12-10,2021-12-10 12:05:54,2021-12-10,FALSE
8+
R+r/suM2XEm3pV4OpKEUAA==,20000,HtcR/HtKU0hM5hLuZcjjuA==,378.38,2021-12-10,40933,SNfyN9QHUE4npoS72Hd1Bw==,506993,/8yT7c/TpIKmxe0K8MmSNA==,0,378.38,,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,2021-12-10,P,j13Eh8tAgyBPUNi2GaU8ow==,15,,SYjPoEyQZSe8RTfgN62BvA==,0,14000,14000,1,378.38,0,378.38,V-003017,Fik0+VTeuZo+2L4rH/Y5GA==,2021-12-10,2021-12-10,2021-12-10 12:05:54,2021-12-10,FALSE
9+
8eKBstZUwA0YkRjpTduzxw==,20000,HtcR/HtKU0hM5hLuZcjjuA==,378.38,2021-12-10,40933,SNfyN9QHUE4npoS72Hd1Bw==,506993,/8yT7c/TpIKmxe0K8MmSNA==,0,378.38,,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,2021-12-10,P,j13Eh8tAgyBPUNi2GaU8ow==,25,,SYjPoEyQZSe8RTfgN62BvA==,0,14000,14000,1,378.38,0,378.38,V-003017,Fik0+VTeuZo+2L4rH/Y5GA==,2021-12-10,2021-12-10,2021-12-10 12:05:54,2021-12-10,FALSE
10+
LbAdQij3k+nNd4i0+vLJLw==,20000,HtcR/HtKU0hM5hLuZcjjuA==,378.38,2021-12-10,40933,SNfyN9QHUE4npoS72Hd1Bw==,506993,/8yT7c/TpIKmxe0K8MmSNA==,0,378.38,,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,2021-12-10,P,j13Eh8tAgyBPUNi2GaU8ow==,37,,SYjPoEyQZSe8RTfgN62BvA==,0,14000,14000,1,378.38,0,378.38,V-003017,Fik0+VTeuZo+2L4rH/Y5GA==,2021-12-10,2021-12-10,2021-12-10 12:05:54,2021-12-10,FALSE
11+
lztVVJ9OI+1P5nTsHkyJOg==,20000,HtcR/HtKU0hM5hLuZcjjuA==,378.38,2021-12-10,40933,SNfyN9QHUE4npoS72Hd1Bw==,506993,/8yT7c/TpIKmxe0K8MmSNA==,0,378.38,,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,1B2M2Y8AsgTpgAmY7PhCfg==,2021-12-10,P,j13Eh8tAgyBPUNi2GaU8ow==,49,,SYjPoEyQZSe8RTfgN62BvA==,0,14000,14000,1,378.38,0,378.38,V-003017,Fik0+VTeuZo+2L4rH/Y5GA==,2021-12-10,2021-12-10,2021-12-10 12:05:54,2021-12-10,TRUE

macros/get_gl_detail_columns.sql

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@
4545
{"name": "whencreated", "datatype": "date"},
4646
{"name": "whendue", "datatype": "date"},
4747
{"name": "whenmodified", "datatype": dbt.type_timestamp()},
48-
{"name": "whenpaid", "datatype": "date"}
48+
{"name": "whenpaid", "datatype": "date"},
49+
{"name": "_fivetran_deleted", "datatype": "boolean"}
4950
] %}
5051
{{ return(columns) }}
5152
{% endmacro %}

models/src_sage_intacct.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ sources:
1919
- name: recordno
2020
description: Unique identity of the entry
2121
- name: _fivetran_deleted
22-
description: The timestamp of when the data was deleted by Fivetran
22+
description: Boolean field indicating whether the record was deleted. Due to source limitations, this field is currently populated with `nulls` in incremental syncs in Fivetran. In historical resyncs, it may be populated with `true` or `false`.
2323
- name: _fivetran_synced
2424
description: The timestamp of when the data was last synced by Fivetran
2525
- name: accountno
@@ -101,7 +101,7 @@ sources:
101101
- name: recordno
102102
description: Unique identity of the entry
103103
- name: _fivetran_deleted
104-
description: The timestamp of when the data was deleted by Fivetran
104+
description: Boolean field indicating whether the record was deleted.
105105
- name: _fivetran_synced
106106
description: The timestamp of when the data was last synced by Fivetran
107107
- name: accountno
@@ -165,7 +165,7 @@ sources:
165165
- name: recordno
166166
description: Unique identity of the entry
167167
- name: _fivetran_deleted
168-
description: The timestamp of when the data was deleted by Fivetran
168+
description: Boolean field indicating whether the record was deleted.
169169
- name: _fivetran_synced
170170
description: The timestamp of when the data was last synced by Fivetran
171171
- name: auwhencreated
@@ -307,7 +307,7 @@ sources:
307307
- name: recordno
308308
description: Unique identity of the entry
309309
- name: _fivetran_deleted
310-
description: The timestamp of when the data was deleted by Fivetran
310+
description: Boolean field indicating whether the record was deleted.
311311
- name: _fivetran_synced
312312
description: The timestamp of when the data was last synced by Fivetran
313313
- name: auwhencreated
@@ -449,7 +449,7 @@ sources:
449449
description: Records batch updates of records originating from the gl_detail table
450450
columns:
451451
- name: _fivetran_deleted
452-
description: The timestamp of when the data was deleted by Fivetran
452+
description: Boolean field indicating whether the record was deleted.
453453
- name: _fivetran_synced
454454
description: The timestamp of when the data was last synced by Fivetran
455455
- name: baselocation

0 commit comments

Comments
 (0)