├── .gitattributes ├── .gitignore ├── COPYING.txt ├── README.md ├── TEAM.sln ├── TEAM.sln.DotSettings ├── TEAM ├── App.config ├── DataGridViewDataItems.cs ├── DataGridViewDataObjects.cs ├── DataGridViewPhysicalModel.cs ├── DelayedTextBox.cs ├── Files │ ├── DIM_CUSTOMER.json │ ├── DIM_CUSTOMER_DAILY_SNAPSHOT.json │ ├── HUB_CUSTOMER.json │ ├── HUB_INCENTIVE_OFFER.json │ ├── HUB_MEMBERSHIP_PLAN.json │ ├── HUB_SEGMENT.json │ ├── LNK_CUSTOMER_COSTING.json │ ├── LNK_CUSTOMER_OFFER.json │ ├── LNK_MEMBERSHIP.json │ ├── LNK_RENEWAL_MEMBERSHIP.json │ ├── LSAT_CUSTOMER_COSTING.json │ ├── LSAT_CUSTOMER_OFFER.json │ ├── LSAT_MEMBERSHIP.json │ ├── PSA_PROFILER_CUSTOMER_CONTACT.json │ ├── PSA_PROFILER_CUSTOMER_OFFER.json │ ├── PSA_PROFILER_CUSTOMER_PERSONAL.json │ ├── PSA_PROFILER_CUST_MEMBERSHIP.json │ ├── PSA_PROFILER_ESTIMATED_WORTH.json │ ├── PSA_PROFILER_OFFER.json │ ├── PSA_PROFILER_PERSONALISED_COSTING.json │ ├── PSA_PROFILER_PLAN.json │ ├── PSA_USERMANAGED_SEGMENT.json │ ├── PhysicalModel │ │ ├── 000_Source │ │ │ └── dbo │ │ │ │ ├── CUSTOMER_CONTACT.json │ │ │ │ ├── CUSTOMER_OFFER.json │ │ │ │ ├── CUSTOMER_PERSONAL.json │ │ │ │ ├── CUST_MEMBERSHIP.json │ │ │ │ ├── ESTIMATED_WORTH.json │ │ │ │ ├── OFFER.json │ │ │ │ ├── PERSONALISED_COSTING.json │ │ │ │ └── PLAN.json │ │ ├── 100_Staging_Area │ │ │ └── dbo │ │ │ │ ├── STG_PROFILER_CUSTOMER_CONTACT.json │ │ │ │ ├── STG_PROFILER_CUSTOMER_OFFER.json │ │ │ │ ├── STG_PROFILER_CUSTOMER_PERSONAL.json │ │ │ │ ├── STG_PROFILER_CUST_MEMBERSHIP.json │ │ │ │ ├── STG_PROFILER_ESTIMATED_WORTH.json │ │ │ │ ├── STG_PROFILER_OFFER.json │ │ │ │ ├── STG_PROFILER_PERSONALISED_COSTING.json │ │ │ │ ├── STG_PROFILER_PLAN.json │ │ │ │ └── STG_USERMANAGED_SEGMENT.json │ │ ├── 150_Persistent_Staging_Area │ │ │ └── dbo │ │ │ │ ├── PSA_PROFILER_CUSTOMER_CONTACT.json │ │ │ │ ├── PSA_PROFILER_CUSTOMER_OFFER.json │ │ │ │ ├── PSA_PROFILER_CUSTOMER_PERSONAL.json │ │ │ │ ├── PSA_PROFILER_CUST_MEMBERSHIP.json │ │ │ │ ├── PSA_PROFILER_ESTIMATED_WORTH.json │ │ │ │ ├── PSA_PROFILER_OFFER.json │ │ │ │ ├── PSA_PROFILER_PERSONALISED_COSTING.json │ │ │ │ ├── PSA_PROFILER_PLAN.json │ │ │ │ └── PSA_USERMANAGED_SEGMENT.json │ │ ├── 200_Integration_Layer │ │ │ ├── bdv │ │ │ │ └── vw_CUSTOMER_DERIVED.json │ │ │ └── dbo │ │ │ │ ├── HUB_CUSTOMER.json │ │ │ │ ├── HUB_INCENTIVE_OFFER.json │ │ │ │ ├── HUB_MEMBERSHIP_PLAN.json │ │ │ │ ├── HUB_SEGMENT.json │ │ │ │ ├── LNK_CUSTOMER_COSTING.json │ │ │ │ ├── LNK_CUSTOMER_OFFER.json │ │ │ │ ├── LNK_MEMBERSHIP.json │ │ │ │ ├── LNK_RENEWAL_MEMBERSHIP.json │ │ │ │ ├── LSAT_CUSTOMER_COSTING.json │ │ │ │ ├── LSAT_CUSTOMER_OFFER.json │ │ │ │ ├── LSAT_MEMBERSHIP.json │ │ │ │ ├── SAT_CUSTOMER.json │ │ │ │ ├── SAT_CUSTOMER_CONTACT_DETAILS.json │ │ │ │ ├── SAT_CUSTOMER_DERIVED.json │ │ │ │ ├── SAT_INCENTIVE_OFFER.json │ │ │ │ ├── SAT_MEMBERSHIP_PLAN_DETAIL.json │ │ │ │ ├── SAT_MEMBERSHIP_PLAN_VALUATION.json │ │ │ │ ├── SAT_SEGMENT.json │ │ │ │ └── vw_CUSTOMER_DERIVED.json │ │ └── 300_Presentation_Layer │ │ │ └── dbo │ │ │ ├── DIM_CUSTOMER.json │ │ │ └── DIM_CUSTOMER_DAILY_SNAPSHOT.json │ ├── SAT_CUSTOMER.json │ ├── SAT_CUSTOMER_CONTACT_DETAILS.json │ ├── SAT_CUSTOMER_DERIVED.json │ ├── SAT_INCENTIVE_OFFER.json │ ├── SAT_MEMBERSHIP_PLAN_DETAIL.json │ ├── SAT_MEMBERSHIP_PLAN_VALUATION.json │ ├── SAT_SEGMENT.json │ ├── STG_PROFILER_CUSTOMER_CONTACT.json │ ├── STG_PROFILER_CUSTOMER_OFFER.json │ ├── STG_PROFILER_CUSTOMER_PERSONAL.json │ ├── STG_PROFILER_CUST_MEMBERSHIP.json │ ├── STG_PROFILER_ESTIMATED_WORTH.json │ ├── STG_PROFILER_OFFER.json │ ├── STG_PROFILER_PERSONALISED_COSTING.json │ ├── STG_PROFILER_PLAN.json │ ├── VDW_Samples_TEAM_Attribute_Mapping.json │ └── sample_TEAM_Attribute_Mapping.json ├── FodyWeavers.xml ├── FodyWeavers.xsd ├── Form_About.Designer.cs ├── Form_About.cs ├── Form_About.resx ├── Form_Alert.Designer.cs ├── Form_Alert.cs ├── Form_Alert.resx ├── Form_Base.Designer.cs ├── Form_Base.cs ├── Form_Base.resx ├── Form_Connection_Selection.Designer.cs ├── Form_Connection_Selection.cs ├── Form_Connection_Selection.resx ├── Form_Edit_DataObject.Designer.cs ├── Form_Edit_DataObject.cs ├── Form_Edit_DataObject.resx ├── Form_Edit_DataObjectMapping.Designer.cs ├── Form_Edit_DataObjectMapping.cs ├── Form_Edit_DataObjectMapping.resx ├── Form_Json_Configuration.Designer.cs ├── Form_Json_Configuration.cs ├── Form_Json_Configuration.resx ├── Form_Main.Designer.cs ├── Form_Main.cs ├── Form_Main.resx ├── Form_Manage_Configuration.Designer.cs ├── Form_Manage_Configuration.cs ├── Form_Manage_Configuration.resx ├── Form_Manage_Metadata.Designer.cs ├── Form_Manage_Metadata.cs ├── Form_Manage_Metadata.resx ├── Form_Repository.Designer.cs ├── Form_Repository.cs ├── Form_Repository.resx ├── Form_Validation.Designer.cs ├── Form_Validation.cs ├── Form_Validation.resx ├── GlobalSuppressions.cs ├── Libraries │ └── Snowflake.Data.dll ├── LocalTeamEnvironmentConfiguration.cs ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ ├── Settings.settings │ └── app.manifest ├── Resources │ ├── CogIcon.ico │ ├── CubeIcon.ico │ ├── DocumentationIcon.ico │ ├── ETLIcon.ico │ ├── ExitApplication.ico │ ├── HelpIconSmall.ico │ ├── LinkIcon.ico │ ├── OpenDirectoryIcon.ico │ ├── OpenFileIcon.ico │ ├── Ravos-logo-small.ico │ ├── Ravos-logo-small_transparant.ico │ ├── SaveFile.ico │ ├── Time.png │ ├── database_icon.png │ ├── fit-16.png │ ├── ghost-icon.png │ ├── log-file.png │ ├── minus-16.png │ ├── plus-16.png │ └── transparent-green-checkmark-hi.png ├── Schema │ └── interfaceDataWarehouseAutomationMetadata.json ├── Scripts │ ├── generateSampleIntegrationSchema.sql │ ├── generateSampleIntegrationSchemaView.sql │ ├── generateSamplePersistentStagingSchema.sql │ ├── generateSamplePresentationSchema.sql │ ├── generateSampleSourceSchema.sql │ └── generateSampleStagingSchema.sql ├── Support │ └── DataObjectMappingList.sql ├── TEAM.csproj ├── TEAM.deps.json ├── TabPageEnvironments.cs ├── TabPageSnowflakeConnection.cs ├── TabPageSqlServerConnection.cs ├── TeamJsonHandling.cs ├── ThreadHelper.cs └── ValidationSetting.cs ├── TEAM_Installation_Setup └── TEAM_Installation_Setup.vdproj └── Team_Library ├── EventLog.cs ├── FileHandling.cs ├── GlobalParameters.cs ├── JsonExportSetting.cs ├── JsonOutputHandling.cs ├── MetadataHandling.cs ├── SortableBindingList.cs ├── TEAM_Library.csproj ├── TeamClassification.cs ├── TeamConfiguration.cs ├── TeamConnection.cs ├── TeamDataItemMapping.cs ├── TeamDataObjectMapping.cs ├── TeamDataObjectMappingsFileCombination.cs ├── TeamEnvironment.cs ├── TeamModelLayer.cs ├── TeamObjectModel.cs ├── TeamPhysicalModel.cs ├── TeamValidation.cs └── Utility.cs /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | *.sql diff 15 | 16 | ############################################################################### 17 | # Set the merge driver for project and solution files 18 | # 19 | # Merging from the command prompt will add diff markers to the files if there 20 | # are conflicts (Merging from VS is not affected by the settings below, in VS 21 | # the diff markers are never inserted). Diff markers may cause the following 22 | # file extensions to fail to load in VS. An alternative would be to treat 23 | # these files as binary and thus will always conflict and require user 24 | # intervention with every merge. To do so, just uncomment the entries below 25 | ############################################################################### 26 | #*.sln merge=binary 27 | #*.csproj merge=binary 28 | #*.vbproj merge=binary 29 | #*.vcxproj merge=binary 30 | #*.vcproj merge=binary 31 | #*.dbproj merge=binary 32 | #*.fsproj merge=binary 33 | #*.lsproj merge=binary 34 | #*.wixproj merge=binary 35 | #*.modelproj merge=binary 36 | #*.sqlproj merge=binary 37 | #*.wwaproj merge=binary 38 | 39 | ############################################################################### 40 | # behavior for image files 41 | # 42 | # image files are treated as binary by default. 43 | ############################################################################### 44 | #*.jpg binary 45 | #*.png binary 46 | #*.gif binary 47 | 48 | ############################################################################### 49 | # diff behavior for common document formats 50 | # 51 | # Convert binary document formats to text before diffing them. This feature 52 | # is only available from the command line. Turn it on by uncommenting the 53 | # entries below. 54 | ############################################################################### 55 | #*.doc diff=astextplain 56 | #*.DOC diff=astextplain 57 | #*.docx diff=astextplain 58 | #*.DOCX diff=astextplain 59 | #*.dot diff=astextplain 60 | #*.DOT diff=astextplain 61 | #*.pdf diff=astextplain 62 | #*.PDF diff=astextplain 63 | #*.rtf diff=astextplain 64 | #*.RTF diff=astextplain 65 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *Dotfuscated* 6 | *.suo 7 | *.user 8 | *.userosscache 9 | *.sln.docstates 10 | 11 | # User-specific files (MonoDevelop/Xamarin Studio) 12 | *.userprefs 13 | 14 | # Build results 15 | [Dd]ebug/ 16 | [Dd]ebugPublic/ 17 | [Rr]elease/ 18 | [Rr]eleases/ 19 | [Xx]64/ 20 | [Xx]86/ 21 | [Bb]uild/ 22 | bld/ 23 | [Bb]in/ 24 | [Oo]bj/ 25 | 26 | # Visual Studio 2015 cache/options directory 27 | .vs/ 28 | # Uncomment if you have tasks that create the project's static files in wwwroot 29 | #wwwroot/ 30 | 31 | # MSTest test Results 32 | [Tt]est[Rr]esult*/ 33 | [Bb]uild[Ll]og.* 34 | 35 | # NUNIT 36 | *.VisualState.xml 37 | TestResult.xml 38 | 39 | # Build Results of an ATL Project 40 | [Dd]ebugPS/ 41 | [Rr]eleasePS/ 42 | dlldata.c 43 | 44 | # DNX 45 | project.lock.json 46 | artifacts/ 47 | 48 | *_i.c 49 | *_p.c 50 | *_i.h 51 | *.ilk 52 | *.meta 53 | *.obj 54 | *.pch 55 | *.pdb 56 | *.pgc 57 | *.pgd 58 | *.rsp 59 | *.sbr 60 | *.tlb 61 | *.tli 62 | *.tlh 63 | *.tmp 64 | *.tmp_proj 65 | *.log 66 | *.vspscc 67 | *.vssscc 68 | .builds 69 | *.pidb 70 | *.svclog 71 | *.scc 72 | 73 | # Chutzpah Test files 74 | _Chutzpah* 75 | 76 | # Visual C++ cache files 77 | ipch/ 78 | *.aps 79 | *.ncb 80 | *.opendb 81 | *.opensdf 82 | *.sdf 83 | *.cachefile 84 | *.VC.db 85 | 86 | # Visual Studio profiler 87 | *.psess 88 | *.vsp 89 | *.vspx 90 | *.sap 91 | 92 | # TFS 2012 Local Workspace 93 | $tf/ 94 | 95 | # Guidance Automation Toolkit 96 | *.gpState 97 | 98 | # ReSharper is a .NET coding add-in 99 | _ReSharper*/ 100 | *.[Rr]e[Ss]harper 101 | *.DotSettings.user 102 | 103 | # JustCode is a .NET coding add-in 104 | .JustCode 105 | 106 | # TeamCity is a build add-in 107 | _TeamCity* 108 | 109 | # DotCover is a Code Coverage Tool 110 | *.dotCover 111 | 112 | # NCrunch 113 | _NCrunch_* 114 | .*crunch*.local.xml 115 | nCrunchTemp_* 116 | 117 | # MightyMoose 118 | *.mm.* 119 | AutoTest.Net/ 120 | 121 | # Web workbench (sass) 122 | .sass-cache/ 123 | 124 | # Installshield output folder 125 | [Ee]xpress/ 126 | 127 | # DocProject is a documentation generator add-in 128 | DocProject/buildhelp/ 129 | DocProject/Help/*.HxT 130 | DocProject/Help/*.HxC 131 | DocProject/Help/*.hhc 132 | DocProject/Help/*.hhk 133 | DocProject/Help/*.hhp 134 | DocProject/Help/Html2 135 | DocProject/Help/html 136 | 137 | # Click-Once directory 138 | publish/ 139 | 140 | # Publish Web Output 141 | *.[Pp]ublish.xml 142 | *.azurePubxml 143 | 144 | # TODO: Un-comment the next line if you do not want to checkin 145 | # your web deploy settings because they may include unencrypted 146 | # passwords 147 | #*.pubxml 148 | *.publishproj 149 | 150 | # NuGet Packages 151 | *.nupkg 152 | # The packages folder can be ignored because of Package Restore 153 | **/packages/* 154 | # except build/, which is used as an MSBuild target. 155 | !**/packages/build/ 156 | # Uncomment if necessary however generally it will be regenerated when needed 157 | #!**/packages/repositories.config 158 | # NuGet v3's project.json files produces more ignoreable files 159 | *.nuget.props 160 | *.nuget.targets 161 | 162 | # Microsoft Azure Build Output 163 | csx/ 164 | *.build.csdef 165 | 166 | # Microsoft Azure Emulator 167 | ecf/ 168 | rcf/ 169 | 170 | # Windows Store app package directory 171 | AppPackages/ 172 | BundleArtifacts/ 173 | 174 | # Visual Studio cache files 175 | # files ending in .cache can be ignored 176 | *.[Cc]ache 177 | # but keep track of directories ending in .cache 178 | !*.[Cc]ache/ 179 | 180 | # Others 181 | ClientBin/ 182 | [Ss]tyle[Cc]op.* 183 | ~$* 184 | *~ 185 | *.dbmdl 186 | *.dbproj.schemaview 187 | *.pfx 188 | *.publishsettings 189 | node_modules/ 190 | orleans.codegen.cs 191 | 192 | # RIA/Silverlight projects 193 | Generated_Code/ 194 | 195 | # Backup & report files from converting an old project file 196 | # to a newer Visual Studio version. Backup files are not needed, 197 | # because we have git ;-) 198 | _UpgradeReport_Files/ 199 | Backup*/ 200 | UpgradeLog*.XML 201 | UpgradeLog*.htm 202 | 203 | # SQL Server files 204 | *.mdf 205 | *.ldf 206 | 207 | # Business Intelligence projects 208 | *.rdl.data 209 | *.bim.layout 210 | *.bim_*.settings 211 | 212 | # Microsoft Fakes 213 | FakesAssemblies/ 214 | 215 | # GhostDoc plugin setting file 216 | *.GhostDoc.xml 217 | 218 | # Node.js Tools for Visual Studio 219 | .ntvs_analysis.dat 220 | 221 | # Visual Studio 6 build log 222 | *.plg 223 | 224 | # Visual Studio 6 workspace options file 225 | *.opt 226 | 227 | # Visual Studio LightSwitch build output 228 | **/*.HTMLClient/GeneratedArtifacts 229 | **/*.DesktopClient/GeneratedArtifacts 230 | **/*.DesktopClient/ModelManifest.xml 231 | **/*.Server/GeneratedArtifacts 232 | **/*.Server/ModelManifest.xml 233 | _Pvt_Extensions 234 | 235 | # LightSwitch generated files 236 | GeneratedArtifacts/ 237 | ModelManifest.xml 238 | 239 | # Paket dependency manager 240 | .paket/paket.exe 241 | 242 | # FAKE - F# Make 243 | .fake/ 244 | TEAM/Dotfuscator/Dotfuscated/TEAM.exe 245 | TEAM/Dotfuscator/Dotfuscated/Map.xml -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TEAM 2 | 3 | The Taxonomy for ETL Automation Metadata (TEAM) is a tool for design metadata management, geared towards data warehouse automation use-cases. It is part of the 'engine' for data warehouse automation, alongside the Virtual Data Warehouse pattern manager and the generic schema for Data Warehouse Automation. 4 | 5 | * Additional information about the 'engine': https://roelantvos.com/blog/the-engine/ 6 | * Links to more information on the data warehouse automation ecosystem: https://roelantvos.com/blog/collaboration/ 7 | * An overview of the underpinning ideas on the metadata exchange format: https://roelantvos.com/blog/interface-for-data-warehouse-automation/ 8 | * The TEAM blog: https://roelantvos.com/blog/team/ 9 | 10 | ## Way of working 11 | 12 | Please report any bugs or issues as 'issues' in this Github. These issues will then be grouped into projects, for which I am creating a separate branch for each release. 13 | 14 | Once tested, the branch is merged and a new development branch is started for the next planned release. 15 | 16 | ## Getting started 17 | 18 | TEAM is packaged with a set of sample mappings, both in date warehouse automation JSON compliant format as well as tabular JSON. 19 | 20 | For a really quick way to review the files and conventions, simply install the application, navigate to the Configuration menu and select 'Deploy Examples'. From here, click the 'Generate Sample Mapping Metadata' button. 21 | 22 | This will copy the example file to the metadata directory, and code can be viewed and generated (in VDW) straight away. Open the Design Metadata grid to view the results, for example by right-clicking on a full row and select 'display'. Direct VDW to read these samples for further code generation. 23 | 24 | ## Troubleshooting 25 | 26 | * TEAM will create directories if required, and when not existing yet. To do so, please install TEAM in a location that is less protected by the OS. For example, Program Files directories in Windows will usually require higher level of authorisation for applications to create directories (administrative priviliges). The app will report errors if directories and files cannot be created 27 | * In some cases, configuration files from older versions will report a warning when used in a newer version. This warning will appear each time the app is started. The resolution is to save the configuration again, as this will upgrade the file to the latest format. This applies to JSON output handling and validation rules as well 28 | -------------------------------------------------------------------------------- /TEAM.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.5.33414.496 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TEAM", "TEAM\TEAM.csproj", "{73971441-2782-43CF-862C-1F636528858A}" 7 | EndProject 8 | Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "TEAM_Installation_Setup", "TEAM_Installation_Setup\TEAM_Installation_Setup.vdproj", "{1852EE88-A5AB-4241-AF6E-085ADE61C74A}" 9 | EndProject 10 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TEAM_Library", "Team_Library\TEAM_Library.csproj", "{CE615A6F-D85D-47C6-B829-0679BEE1C593}" 11 | EndProject 12 | Global 13 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 14 | Debug|Any CPU = Debug|Any CPU 15 | Debug|x64 = Debug|x64 16 | Release|Any CPU = Release|Any CPU 17 | Release|x64 = Release|x64 18 | EndGlobalSection 19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 20 | {73971441-2782-43CF-862C-1F636528858A}.Debug|Any CPU.ActiveCfg = Debug|x64 21 | {73971441-2782-43CF-862C-1F636528858A}.Debug|Any CPU.Build.0 = Debug|x64 22 | {73971441-2782-43CF-862C-1F636528858A}.Debug|x64.ActiveCfg = Debug|x64 23 | {73971441-2782-43CF-862C-1F636528858A}.Debug|x64.Build.0 = Debug|x64 24 | {73971441-2782-43CF-862C-1F636528858A}.Release|Any CPU.ActiveCfg = Release|Any CPU 25 | {73971441-2782-43CF-862C-1F636528858A}.Release|Any CPU.Build.0 = Release|Any CPU 26 | {73971441-2782-43CF-862C-1F636528858A}.Release|x64.ActiveCfg = Release|x64 27 | {73971441-2782-43CF-862C-1F636528858A}.Release|x64.Build.0 = Release|x64 28 | {1852EE88-A5AB-4241-AF6E-085ADE61C74A}.Debug|Any CPU.ActiveCfg = Debug 29 | {1852EE88-A5AB-4241-AF6E-085ADE61C74A}.Debug|x64.ActiveCfg = Debug 30 | {1852EE88-A5AB-4241-AF6E-085ADE61C74A}.Debug|x64.Build.0 = Debug 31 | {1852EE88-A5AB-4241-AF6E-085ADE61C74A}.Release|Any CPU.ActiveCfg = Release 32 | {1852EE88-A5AB-4241-AF6E-085ADE61C74A}.Release|x64.ActiveCfg = Release 33 | {1852EE88-A5AB-4241-AF6E-085ADE61C74A}.Release|x64.Build.0 = Release 34 | {CE615A6F-D85D-47C6-B829-0679BEE1C593}.Debug|Any CPU.ActiveCfg = Debug|x64 35 | {CE615A6F-D85D-47C6-B829-0679BEE1C593}.Debug|Any CPU.Build.0 = Debug|x64 36 | {CE615A6F-D85D-47C6-B829-0679BEE1C593}.Debug|x64.ActiveCfg = Debug|x64 37 | {CE615A6F-D85D-47C6-B829-0679BEE1C593}.Debug|x64.Build.0 = Debug|x64 38 | {CE615A6F-D85D-47C6-B829-0679BEE1C593}.Release|Any CPU.ActiveCfg = Release|Any CPU 39 | {CE615A6F-D85D-47C6-B829-0679BEE1C593}.Release|Any CPU.Build.0 = Release|Any CPU 40 | {CE615A6F-D85D-47C6-B829-0679BEE1C593}.Release|x64.ActiveCfg = Release|x64 41 | {CE615A6F-D85D-47C6-B829-0679BEE1C593}.Release|x64.Build.0 = Release|x64 42 | EndGlobalSection 43 | GlobalSection(SolutionProperties) = preSolution 44 | HideSolutionNode = FALSE 45 | EndGlobalSection 46 | GlobalSection(ExtensibilityGlobals) = postSolution 47 | SolutionGuid = {A5CD8A2D-C96F-4323-BC06-813131FEBF93} 48 | EndGlobalSection 49 | EndGlobal 50 | -------------------------------------------------------------------------------- /TEAM.sln.DotSettings: -------------------------------------------------------------------------------- 1 |  2 | True 3 | True -------------------------------------------------------------------------------- /TEAM/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /TEAM/DelayedTextBox.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | 4 | namespace TEAM 5 | { 6 | public class DelayedTextBox: TextBox 7 | { 8 | private Timer delayTimer; 9 | private int delayInterval; 10 | 11 | public event EventHandler DelayedTextChanged; 12 | 13 | public DelayedTextBox() 14 | { 15 | delayInterval = 1000; // Default delay interval in milliseconds 16 | InitializeDelayTimer(); 17 | } 18 | 19 | public int DelayInterval 20 | { 21 | get { return delayInterval; } 22 | set 23 | { 24 | delayInterval = value; 25 | delayTimer.Interval = delayInterval; 26 | } 27 | } 28 | 29 | private void InitializeDelayTimer() 30 | { 31 | delayTimer = new Timer(); 32 | delayTimer.Interval = delayInterval; 33 | delayTimer.Tick += DelayTimer_Tick; 34 | } 35 | 36 | protected override void OnTextChanged(EventArgs e) 37 | { 38 | base.OnTextChanged(e); 39 | delayTimer.Stop(); 40 | delayTimer.Start(); 41 | } 42 | 43 | private void DelayTimer_Tick(object sender, EventArgs e) 44 | { 45 | delayTimer.Stop(); 46 | DelayedTextChanged?.Invoke(this, EventArgs.Empty); 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/000_Source/dbo/CUSTOMER_CONTACT.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "CUSTOMER_CONTACT", 3 | "database": "000_Source", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "Contact_Number", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 2, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CustomerID", 18 | "dataType": "int", 19 | "characterLength": "4", 20 | "numericPrecision": "10", 21 | "numericScale": "0", 22 | "ordinalPosition": 1, 23 | "primaryKeyIndicator": "Y", 24 | "multiActiveIndicator": "Y" 25 | }, 26 | { 27 | "name": "Valid_From", 28 | "dataType": "date", 29 | "characterLength": "3", 30 | "numericPrecision": "10", 31 | "numericScale": "0", 32 | "ordinalPosition": 3, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | } 36 | ] 37 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/000_Source/dbo/CUSTOMER_OFFER.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "CUSTOMER_OFFER", 3 | "database": "000_Source", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "CustomerID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 1, 13 | "primaryKeyIndicator": "Y", 14 | "multiActiveIndicator": "Y" 15 | }, 16 | { 17 | "name": "OfferID", 18 | "dataType": "int", 19 | "characterLength": "4", 20 | "numericPrecision": "10", 21 | "numericScale": "0", 22 | "ordinalPosition": 2, 23 | "primaryKeyIndicator": "Y", 24 | "multiActiveIndicator": "Y" 25 | } 26 | ] 27 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/000_Source/dbo/CUSTOMER_PERSONAL.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "CUSTOMER_PERSONAL", 3 | "database": "000_Source", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "Country", 8 | "dataType": "varchar", 9 | "characterLength": "100", 10 | "numericPrecision": "0", 11 | "numericScale": "0", 12 | "ordinalPosition": 7, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CustomerID", 18 | "dataType": "int", 19 | "characterLength": "4", 20 | "numericPrecision": "10", 21 | "numericScale": "0", 22 | "ordinalPosition": 1, 23 | "primaryKeyIndicator": "Y", 24 | "multiActiveIndicator": "Y" 25 | }, 26 | { 27 | "name": "DOB", 28 | "dataType": "date", 29 | "characterLength": "3", 30 | "numericPrecision": "10", 31 | "numericScale": "0", 32 | "ordinalPosition": 9, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "Pronoun", 38 | "dataType": "varchar", 39 | "characterLength": "1", 40 | "numericPrecision": "0", 41 | "numericScale": "0", 42 | "ordinalPosition": 8, 43 | "primaryKeyIndicator": "N", 44 | "multiActiveIndicator": "N" 45 | }, 46 | { 47 | "name": "Given", 48 | "dataType": "varchar", 49 | "characterLength": "100", 50 | "numericPrecision": "0", 51 | "numericScale": "0", 52 | "ordinalPosition": 2, 53 | "primaryKeyIndicator": "N", 54 | "multiActiveIndicator": "N" 55 | }, 56 | { 57 | "name": "Postcode", 58 | "dataType": "varchar", 59 | "characterLength": "6", 60 | "numericPrecision": "0", 61 | "numericScale": "0", 62 | "ordinalPosition": 6, 63 | "primaryKeyIndicator": "N", 64 | "multiActiveIndicator": "N" 65 | }, 66 | { 67 | "name": "Referee_Offer_Made", 68 | "dataType": "int", 69 | "characterLength": "4", 70 | "numericPrecision": "10", 71 | "numericScale": "0", 72 | "ordinalPosition": 10, 73 | "primaryKeyIndicator": "N", 74 | "multiActiveIndicator": "N" 75 | }, 76 | { 77 | "name": "State", 78 | "dataType": "varchar", 79 | "characterLength": "3", 80 | "numericPrecision": "0", 81 | "numericScale": "0", 82 | "ordinalPosition": 5, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | }, 86 | { 87 | "name": "Suburb", 88 | "dataType": "varchar", 89 | "characterLength": "50", 90 | "numericPrecision": "0", 91 | "numericScale": "0", 92 | "ordinalPosition": 4, 93 | "primaryKeyIndicator": "N", 94 | "multiActiveIndicator": "N" 95 | }, 96 | { 97 | "name": "Surname", 98 | "dataType": "varchar", 99 | "characterLength": "100", 100 | "numericPrecision": "0", 101 | "numericScale": "0", 102 | "ordinalPosition": 3, 103 | "primaryKeyIndicator": "N", 104 | "multiActiveIndicator": "N" 105 | }, 106 | { 107 | "name": "Valid_From", 108 | "dataType": "date", 109 | "characterLength": "3", 110 | "numericPrecision": "10", 111 | "numericScale": "0", 112 | "ordinalPosition": 11, 113 | "primaryKeyIndicator": "N", 114 | "multiActiveIndicator": "N" 115 | } 116 | ] 117 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/000_Source/dbo/CUST_MEMBERSHIP.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "CUST_MEMBERSHIP", 3 | "database": "000_Source", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "Comment", 8 | "dataType": "varchar", 9 | "characterLength": "50", 10 | "numericPrecision": "0", 11 | "numericScale": "0", 12 | "ordinalPosition": 6, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CustomerID", 18 | "dataType": "int", 19 | "characterLength": "4", 20 | "numericPrecision": "10", 21 | "numericScale": "0", 22 | "ordinalPosition": 1, 23 | "primaryKeyIndicator": "Y", 24 | "multiActiveIndicator": "Y" 25 | }, 26 | { 27 | "name": "End_Date", 28 | "dataType": "datetime", 29 | "characterLength": "8", 30 | "numericPrecision": "23", 31 | "numericScale": "3", 32 | "ordinalPosition": 4, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "Plan_Code", 38 | "dataType": "varchar", 39 | "characterLength": "100", 40 | "numericPrecision": "0", 41 | "numericScale": "0", 42 | "ordinalPosition": 2, 43 | "primaryKeyIndicator": "Y", 44 | "multiActiveIndicator": "Y" 45 | }, 46 | { 47 | "name": "Start_Date", 48 | "dataType": "datetime", 49 | "characterLength": "8", 50 | "numericPrecision": "23", 51 | "numericScale": "3", 52 | "ordinalPosition": 3, 53 | "primaryKeyIndicator": "N", 54 | "multiActiveIndicator": "N" 55 | }, 56 | { 57 | "name": "Status", 58 | "dataType": "varchar", 59 | "characterLength": "10", 60 | "numericPrecision": "0", 61 | "numericScale": "0", 62 | "ordinalPosition": 5, 63 | "primaryKeyIndicator": "N", 64 | "multiActiveIndicator": "N" 65 | } 66 | ] 67 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/000_Source/dbo/ESTIMATED_WORTH.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ESTIMATED_WORTH", 3 | "database": "000_Source", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "Date_effective", 8 | "dataType": "datetime", 9 | "characterLength": "8", 10 | "numericPrecision": "23", 11 | "numericScale": "3", 12 | "ordinalPosition": 2, 13 | "primaryKeyIndicator": "Y", 14 | "multiActiveIndicator": "Y" 15 | }, 16 | { 17 | "name": "Plan_Code", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 1, 23 | "primaryKeyIndicator": "Y", 24 | "multiActiveIndicator": "Y" 25 | }, 26 | { 27 | "name": "Value_Amount", 28 | "dataType": "numeric", 29 | "characterLength": "9", 30 | "numericPrecision": "18", 31 | "numericScale": "0", 32 | "ordinalPosition": 3, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | } 36 | ] 37 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/000_Source/dbo/OFFER.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "OFFER", 3 | "database": "000_Source", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "Offer_Long_Description", 8 | "dataType": "varchar", 9 | "characterLength": "100", 10 | "numericPrecision": "0", 11 | "numericScale": "0", 12 | "ordinalPosition": 2, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "OfferID", 18 | "dataType": "int", 19 | "characterLength": "4", 20 | "numericPrecision": "10", 21 | "numericScale": "0", 22 | "ordinalPosition": 1, 23 | "primaryKeyIndicator": "Y", 24 | "multiActiveIndicator": "Y" 25 | } 26 | ] 27 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/000_Source/dbo/PERSONALISED_COSTING.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "PERSONALISED_COSTING", 3 | "database": "000_Source", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "Date_effective", 8 | "dataType": "datetime", 9 | "characterLength": "8", 10 | "numericPrecision": "23", 11 | "numericScale": "3", 12 | "ordinalPosition": 4, 13 | "primaryKeyIndicator": "Y", 14 | "multiActiveIndicator": "Y" 15 | }, 16 | { 17 | "name": "Member", 18 | "dataType": "int", 19 | "characterLength": "4", 20 | "numericPrecision": "10", 21 | "numericScale": "0", 22 | "ordinalPosition": 1, 23 | "primaryKeyIndicator": "Y", 24 | "multiActiveIndicator": "Y" 25 | }, 26 | { 27 | "name": "Monthly_Cost", 28 | "dataType": "numeric", 29 | "characterLength": "9", 30 | "numericPrecision": "18", 31 | "numericScale": "0", 32 | "ordinalPosition": 5, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "Plan_Code", 38 | "dataType": "varchar", 39 | "characterLength": "100", 40 | "numericPrecision": "0", 41 | "numericScale": "0", 42 | "ordinalPosition": 3, 43 | "primaryKeyIndicator": "Y", 44 | "multiActiveIndicator": "Y" 45 | }, 46 | { 47 | "name": "Segment", 48 | "dataType": "varchar", 49 | "characterLength": "100", 50 | "numericPrecision": "0", 51 | "numericScale": "0", 52 | "ordinalPosition": 2, 53 | "primaryKeyIndicator": "Y", 54 | "multiActiveIndicator": "Y" 55 | } 56 | ] 57 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/000_Source/dbo/PLAN.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "PLAN", 3 | "database": "000_Source", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "Plan_Code", 8 | "dataType": "varchar", 9 | "characterLength": "100", 10 | "numericPrecision": "0", 11 | "numericScale": "0", 12 | "ordinalPosition": 1, 13 | "primaryKeyIndicator": "Y", 14 | "multiActiveIndicator": "Y" 15 | }, 16 | { 17 | "name": "Plan_Desc", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 2, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "Renewal_Plan_Code", 28 | "dataType": "varchar", 29 | "characterLength": "100", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 3, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | } 36 | ] 37 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/100_Staging_Area/dbo/STG_PROFILER_CUSTOMER_CONTACT.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "STG_PROFILER_CUSTOMER_CONTACT", 3 | "database": "100_Staging_Area", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 5, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 4, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 6, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "Contact_Number", 38 | "dataType": "int", 39 | "characterLength": "4", 40 | "numericPrecision": "10", 41 | "numericScale": "0", 42 | "ordinalPosition": 8, 43 | "primaryKeyIndicator": "N", 44 | "multiActiveIndicator": "N" 45 | }, 46 | { 47 | "name": "CustomerID", 48 | "dataType": "int", 49 | "characterLength": "4", 50 | "numericPrecision": "10", 51 | "numericScale": "0", 52 | "ordinalPosition": 7, 53 | "primaryKeyIndicator": "N", 54 | "multiActiveIndicator": "N" 55 | }, 56 | { 57 | "name": "INSCRIPTION_RECORD_ID", 58 | "dataType": "int", 59 | "characterLength": "4", 60 | "numericPrecision": "10", 61 | "numericScale": "0", 62 | "ordinalPosition": 2, 63 | "primaryKeyIndicator": "N", 64 | "multiActiveIndicator": "N" 65 | }, 66 | { 67 | "name": "INSCRIPTION_TIMESTAMP", 68 | "dataType": "datetime2", 69 | "characterLength": "8", 70 | "numericPrecision": "27", 71 | "numericScale": "7", 72 | "ordinalPosition": 1, 73 | "primaryKeyIndicator": "N", 74 | "multiActiveIndicator": "N" 75 | }, 76 | { 77 | "name": "SOURCE_TIMESTAMP", 78 | "dataType": "datetime2", 79 | "characterLength": "8", 80 | "numericPrecision": "27", 81 | "numericScale": "7", 82 | "ordinalPosition": 3, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | }, 86 | { 87 | "name": "Valid_From", 88 | "dataType": "datetime2", 89 | "characterLength": "8", 90 | "numericPrecision": "27", 91 | "numericScale": "7", 92 | "ordinalPosition": 9, 93 | "primaryKeyIndicator": "N", 94 | "multiActiveIndicator": "N" 95 | } 96 | ] 97 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/100_Staging_Area/dbo/STG_PROFILER_CUSTOMER_OFFER.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "STG_PROFILER_CUSTOMER_OFFER", 3 | "database": "100_Staging_Area", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 5, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 4, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 6, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "CustomerID", 38 | "dataType": "int", 39 | "characterLength": "4", 40 | "numericPrecision": "10", 41 | "numericScale": "0", 42 | "ordinalPosition": 7, 43 | "primaryKeyIndicator": "N", 44 | "multiActiveIndicator": "N" 45 | }, 46 | { 47 | "name": "INSCRIPTION_RECORD_ID", 48 | "dataType": "int", 49 | "characterLength": "4", 50 | "numericPrecision": "10", 51 | "numericScale": "0", 52 | "ordinalPosition": 2, 53 | "primaryKeyIndicator": "N", 54 | "multiActiveIndicator": "N" 55 | }, 56 | { 57 | "name": "INSCRIPTION_TIMESTAMP", 58 | "dataType": "datetime2", 59 | "characterLength": "8", 60 | "numericPrecision": "27", 61 | "numericScale": "7", 62 | "ordinalPosition": 1, 63 | "primaryKeyIndicator": "N", 64 | "multiActiveIndicator": "N" 65 | }, 66 | { 67 | "name": "OfferID", 68 | "dataType": "int", 69 | "characterLength": "4", 70 | "numericPrecision": "10", 71 | "numericScale": "0", 72 | "ordinalPosition": 8, 73 | "primaryKeyIndicator": "N", 74 | "multiActiveIndicator": "N" 75 | }, 76 | { 77 | "name": "SOURCE_TIMESTAMP", 78 | "dataType": "datetime2", 79 | "characterLength": "8", 80 | "numericPrecision": "27", 81 | "numericScale": "7", 82 | "ordinalPosition": 3, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | } 86 | ] 87 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/100_Staging_Area/dbo/STG_PROFILER_CUSTOMER_PERSONAL.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "STG_PROFILER_CUSTOMER_PERSONAL", 3 | "database": "100_Staging_Area", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 5, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 4, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 6, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "Country", 38 | "dataType": "nvarchar", 39 | "characterLength": "100", 40 | "numericPrecision": "0", 41 | "numericScale": "0", 42 | "ordinalPosition": 13, 43 | "primaryKeyIndicator": "N", 44 | "multiActiveIndicator": "N" 45 | }, 46 | { 47 | "name": "CustomerID", 48 | "dataType": "int", 49 | "characterLength": "4", 50 | "numericPrecision": "10", 51 | "numericScale": "0", 52 | "ordinalPosition": 7, 53 | "primaryKeyIndicator": "N", 54 | "multiActiveIndicator": "N" 55 | }, 56 | { 57 | "name": "DOB", 58 | "dataType": "datetime2", 59 | "characterLength": "8", 60 | "numericPrecision": "27", 61 | "numericScale": "7", 62 | "ordinalPosition": 15, 63 | "primaryKeyIndicator": "N", 64 | "multiActiveIndicator": "N" 65 | }, 66 | { 67 | "name": "Pronoun", 68 | "dataType": "nvarchar", 69 | "characterLength": "100", 70 | "numericPrecision": "0", 71 | "numericScale": "0", 72 | "ordinalPosition": 14, 73 | "primaryKeyIndicator": "N", 74 | "multiActiveIndicator": "N" 75 | }, 76 | { 77 | "name": "Given", 78 | "dataType": "nvarchar", 79 | "characterLength": "100", 80 | "numericPrecision": "0", 81 | "numericScale": "0", 82 | "ordinalPosition": 8, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | }, 86 | { 87 | "name": "INSCRIPTION_RECORD_ID", 88 | "dataType": "int", 89 | "characterLength": "4", 90 | "numericPrecision": "10", 91 | "numericScale": "0", 92 | "ordinalPosition": 2, 93 | "primaryKeyIndicator": "N", 94 | "multiActiveIndicator": "N" 95 | }, 96 | { 97 | "name": "INSCRIPTION_TIMESTAMP", 98 | "dataType": "datetime2", 99 | "characterLength": "8", 100 | "numericPrecision": "27", 101 | "numericScale": "7", 102 | "ordinalPosition": 1, 103 | "primaryKeyIndicator": "N", 104 | "multiActiveIndicator": "N" 105 | }, 106 | { 107 | "name": "Postcode", 108 | "dataType": "nvarchar", 109 | "characterLength": "100", 110 | "numericPrecision": "0", 111 | "numericScale": "0", 112 | "ordinalPosition": 12, 113 | "primaryKeyIndicator": "N", 114 | "multiActiveIndicator": "N" 115 | }, 116 | { 117 | "name": "Referee_Offer_Made", 118 | "dataType": "int", 119 | "characterLength": "4", 120 | "numericPrecision": "10", 121 | "numericScale": "0", 122 | "ordinalPosition": 16, 123 | "primaryKeyIndicator": "N", 124 | "multiActiveIndicator": "N" 125 | }, 126 | { 127 | "name": "SOURCE_TIMESTAMP", 128 | "dataType": "datetime2", 129 | "characterLength": "8", 130 | "numericPrecision": "27", 131 | "numericScale": "7", 132 | "ordinalPosition": 3, 133 | "primaryKeyIndicator": "N", 134 | "multiActiveIndicator": "N" 135 | }, 136 | { 137 | "name": "State", 138 | "dataType": "nvarchar", 139 | "characterLength": "100", 140 | "numericPrecision": "0", 141 | "numericScale": "0", 142 | "ordinalPosition": 11, 143 | "primaryKeyIndicator": "N", 144 | "multiActiveIndicator": "N" 145 | }, 146 | { 147 | "name": "Suburb", 148 | "dataType": "nvarchar", 149 | "characterLength": "100", 150 | "numericPrecision": "0", 151 | "numericScale": "0", 152 | "ordinalPosition": 10, 153 | "primaryKeyIndicator": "N", 154 | "multiActiveIndicator": "N" 155 | }, 156 | { 157 | "name": "Surname", 158 | "dataType": "nvarchar", 159 | "characterLength": "100", 160 | "numericPrecision": "0", 161 | "numericScale": "0", 162 | "ordinalPosition": 9, 163 | "primaryKeyIndicator": "N", 164 | "multiActiveIndicator": "N" 165 | }, 166 | { 167 | "name": "Valid_From", 168 | "dataType": "datetime2", 169 | "characterLength": "8", 170 | "numericPrecision": "27", 171 | "numericScale": "7", 172 | "ordinalPosition": 17, 173 | "primaryKeyIndicator": "N", 174 | "multiActiveIndicator": "N" 175 | } 176 | ] 177 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/100_Staging_Area/dbo/STG_PROFILER_CUST_MEMBERSHIP.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "STG_PROFILER_CUST_MEMBERSHIP", 3 | "database": "100_Staging_Area", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 5, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 4, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 6, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "Comment", 38 | "dataType": "nvarchar", 39 | "characterLength": "100", 40 | "numericPrecision": "0", 41 | "numericScale": "0", 42 | "ordinalPosition": 12, 43 | "primaryKeyIndicator": "N", 44 | "multiActiveIndicator": "N" 45 | }, 46 | { 47 | "name": "CustomerID", 48 | "dataType": "int", 49 | "characterLength": "4", 50 | "numericPrecision": "10", 51 | "numericScale": "0", 52 | "ordinalPosition": 7, 53 | "primaryKeyIndicator": "N", 54 | "multiActiveIndicator": "N" 55 | }, 56 | { 57 | "name": "End_Date", 58 | "dataType": "datetime2", 59 | "characterLength": "8", 60 | "numericPrecision": "27", 61 | "numericScale": "7", 62 | "ordinalPosition": 10, 63 | "primaryKeyIndicator": "N", 64 | "multiActiveIndicator": "N" 65 | }, 66 | { 67 | "name": "INSCRIPTION_RECORD_ID", 68 | "dataType": "int", 69 | "characterLength": "4", 70 | "numericPrecision": "10", 71 | "numericScale": "0", 72 | "ordinalPosition": 2, 73 | "primaryKeyIndicator": "N", 74 | "multiActiveIndicator": "N" 75 | }, 76 | { 77 | "name": "INSCRIPTION_TIMESTAMP", 78 | "dataType": "datetime2", 79 | "characterLength": "8", 80 | "numericPrecision": "27", 81 | "numericScale": "7", 82 | "ordinalPosition": 1, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | }, 86 | { 87 | "name": "Plan_Code", 88 | "dataType": "nvarchar", 89 | "characterLength": "100", 90 | "numericPrecision": "0", 91 | "numericScale": "0", 92 | "ordinalPosition": 8, 93 | "primaryKeyIndicator": "N", 94 | "multiActiveIndicator": "N" 95 | }, 96 | { 97 | "name": "SOURCE_TIMESTAMP", 98 | "dataType": "datetime2", 99 | "characterLength": "8", 100 | "numericPrecision": "27", 101 | "numericScale": "7", 102 | "ordinalPosition": 3, 103 | "primaryKeyIndicator": "N", 104 | "multiActiveIndicator": "N" 105 | }, 106 | { 107 | "name": "Start_Date", 108 | "dataType": "datetime2", 109 | "characterLength": "8", 110 | "numericPrecision": "27", 111 | "numericScale": "7", 112 | "ordinalPosition": 9, 113 | "primaryKeyIndicator": "N", 114 | "multiActiveIndicator": "N" 115 | }, 116 | { 117 | "name": "Status", 118 | "dataType": "nvarchar", 119 | "characterLength": "100", 120 | "numericPrecision": "0", 121 | "numericScale": "0", 122 | "ordinalPosition": 11, 123 | "primaryKeyIndicator": "N", 124 | "multiActiveIndicator": "N" 125 | } 126 | ] 127 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/100_Staging_Area/dbo/STG_PROFILER_ESTIMATED_WORTH.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "STG_PROFILER_ESTIMATED_WORTH", 3 | "database": "100_Staging_Area", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 5, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 4, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 6, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "Date_effective", 38 | "dataType": "datetime2", 39 | "characterLength": "8", 40 | "numericPrecision": "27", 41 | "numericScale": "7", 42 | "ordinalPosition": 8, 43 | "primaryKeyIndicator": "N", 44 | "multiActiveIndicator": "N" 45 | }, 46 | { 47 | "name": "INSCRIPTION_RECORD_ID", 48 | "dataType": "int", 49 | "characterLength": "4", 50 | "numericPrecision": "10", 51 | "numericScale": "0", 52 | "ordinalPosition": 2, 53 | "primaryKeyIndicator": "N", 54 | "multiActiveIndicator": "N" 55 | }, 56 | { 57 | "name": "INSCRIPTION_TIMESTAMP", 58 | "dataType": "datetime2", 59 | "characterLength": "8", 60 | "numericPrecision": "27", 61 | "numericScale": "7", 62 | "ordinalPosition": 1, 63 | "primaryKeyIndicator": "N", 64 | "multiActiveIndicator": "N" 65 | }, 66 | { 67 | "name": "Plan_Code", 68 | "dataType": "nvarchar", 69 | "characterLength": "100", 70 | "numericPrecision": "0", 71 | "numericScale": "0", 72 | "ordinalPosition": 7, 73 | "primaryKeyIndicator": "N", 74 | "multiActiveIndicator": "N" 75 | }, 76 | { 77 | "name": "SOURCE_TIMESTAMP", 78 | "dataType": "datetime2", 79 | "characterLength": "8", 80 | "numericPrecision": "27", 81 | "numericScale": "7", 82 | "ordinalPosition": 3, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | }, 86 | { 87 | "name": "Value_Amount", 88 | "dataType": "numeric", 89 | "characterLength": "17", 90 | "numericPrecision": "38", 91 | "numericScale": "20", 92 | "ordinalPosition": 9, 93 | "primaryKeyIndicator": "N", 94 | "multiActiveIndicator": "N" 95 | } 96 | ] 97 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/100_Staging_Area/dbo/STG_PROFILER_OFFER.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "STG_PROFILER_OFFER", 3 | "database": "100_Staging_Area", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 5, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 4, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 6, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "INSCRIPTION_RECORD_ID", 38 | "dataType": "int", 39 | "characterLength": "4", 40 | "numericPrecision": "10", 41 | "numericScale": "0", 42 | "ordinalPosition": 2, 43 | "primaryKeyIndicator": "N", 44 | "multiActiveIndicator": "N" 45 | }, 46 | { 47 | "name": "INSCRIPTION_TIMESTAMP", 48 | "dataType": "datetime2", 49 | "characterLength": "8", 50 | "numericPrecision": "27", 51 | "numericScale": "7", 52 | "ordinalPosition": 1, 53 | "primaryKeyIndicator": "N", 54 | "multiActiveIndicator": "N" 55 | }, 56 | { 57 | "name": "Offer_Long_Description", 58 | "dataType": "nvarchar", 59 | "characterLength": "100", 60 | "numericPrecision": "0", 61 | "numericScale": "0", 62 | "ordinalPosition": 8, 63 | "primaryKeyIndicator": "N", 64 | "multiActiveIndicator": "N" 65 | }, 66 | { 67 | "name": "OfferID", 68 | "dataType": "int", 69 | "characterLength": "4", 70 | "numericPrecision": "10", 71 | "numericScale": "0", 72 | "ordinalPosition": 7, 73 | "primaryKeyIndicator": "N", 74 | "multiActiveIndicator": "N" 75 | }, 76 | { 77 | "name": "SOURCE_TIMESTAMP", 78 | "dataType": "datetime2", 79 | "characterLength": "8", 80 | "numericPrecision": "27", 81 | "numericScale": "7", 82 | "ordinalPosition": 3, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | } 86 | ] 87 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/100_Staging_Area/dbo/STG_PROFILER_PERSONALISED_COSTING.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "STG_PROFILER_PERSONALISED_COSTING", 3 | "database": "100_Staging_Area", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 5, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 4, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 6, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "Date_effective", 38 | "dataType": "datetime2", 39 | "characterLength": "8", 40 | "numericPrecision": "27", 41 | "numericScale": "7", 42 | "ordinalPosition": 10, 43 | "primaryKeyIndicator": "N", 44 | "multiActiveIndicator": "N" 45 | }, 46 | { 47 | "name": "INSCRIPTION_RECORD_ID", 48 | "dataType": "int", 49 | "characterLength": "4", 50 | "numericPrecision": "10", 51 | "numericScale": "0", 52 | "ordinalPosition": 2, 53 | "primaryKeyIndicator": "N", 54 | "multiActiveIndicator": "N" 55 | }, 56 | { 57 | "name": "INSCRIPTION_TIMESTAMP", 58 | "dataType": "datetime2", 59 | "characterLength": "8", 60 | "numericPrecision": "27", 61 | "numericScale": "7", 62 | "ordinalPosition": 1, 63 | "primaryKeyIndicator": "N", 64 | "multiActiveIndicator": "N" 65 | }, 66 | { 67 | "name": "Member", 68 | "dataType": "int", 69 | "characterLength": "4", 70 | "numericPrecision": "10", 71 | "numericScale": "0", 72 | "ordinalPosition": 7, 73 | "primaryKeyIndicator": "N", 74 | "multiActiveIndicator": "N" 75 | }, 76 | { 77 | "name": "Monthly_Cost", 78 | "dataType": "numeric", 79 | "characterLength": "17", 80 | "numericPrecision": "38", 81 | "numericScale": "20", 82 | "ordinalPosition": 11, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | }, 86 | { 87 | "name": "Plan_Code", 88 | "dataType": "nvarchar", 89 | "characterLength": "100", 90 | "numericPrecision": "0", 91 | "numericScale": "0", 92 | "ordinalPosition": 9, 93 | "primaryKeyIndicator": "N", 94 | "multiActiveIndicator": "N" 95 | }, 96 | { 97 | "name": "Segment", 98 | "dataType": "nvarchar", 99 | "characterLength": "100", 100 | "numericPrecision": "0", 101 | "numericScale": "0", 102 | "ordinalPosition": 8, 103 | "primaryKeyIndicator": "N", 104 | "multiActiveIndicator": "N" 105 | }, 106 | { 107 | "name": "SOURCE_TIMESTAMP", 108 | "dataType": "datetime2", 109 | "characterLength": "8", 110 | "numericPrecision": "27", 111 | "numericScale": "7", 112 | "ordinalPosition": 3, 113 | "primaryKeyIndicator": "N", 114 | "multiActiveIndicator": "N" 115 | } 116 | ] 117 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/100_Staging_Area/dbo/STG_PROFILER_PLAN.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "STG_PROFILER_PLAN", 3 | "database": "100_Staging_Area", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 5, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 4, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 6, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "INSCRIPTION_RECORD_ID", 38 | "dataType": "int", 39 | "characterLength": "4", 40 | "numericPrecision": "10", 41 | "numericScale": "0", 42 | "ordinalPosition": 2, 43 | "primaryKeyIndicator": "N", 44 | "multiActiveIndicator": "N" 45 | }, 46 | { 47 | "name": "INSCRIPTION_TIMESTAMP", 48 | "dataType": "datetime2", 49 | "characterLength": "8", 50 | "numericPrecision": "27", 51 | "numericScale": "7", 52 | "ordinalPosition": 1, 53 | "primaryKeyIndicator": "N", 54 | "multiActiveIndicator": "N" 55 | }, 56 | { 57 | "name": "Plan_Code", 58 | "dataType": "nvarchar", 59 | "characterLength": "100", 60 | "numericPrecision": "0", 61 | "numericScale": "0", 62 | "ordinalPosition": 7, 63 | "primaryKeyIndicator": "N", 64 | "multiActiveIndicator": "N" 65 | }, 66 | { 67 | "name": "Plan_Desc", 68 | "dataType": "nvarchar", 69 | "characterLength": "100", 70 | "numericPrecision": "0", 71 | "numericScale": "0", 72 | "ordinalPosition": 8, 73 | "primaryKeyIndicator": "N", 74 | "multiActiveIndicator": "N" 75 | }, 76 | { 77 | "name": "Renewal_Plan_Code", 78 | "dataType": "nvarchar", 79 | "characterLength": "100", 80 | "numericPrecision": "0", 81 | "numericScale": "0", 82 | "ordinalPosition": 9, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | }, 86 | { 87 | "name": "SOURCE_TIMESTAMP", 88 | "dataType": "datetime2", 89 | "characterLength": "8", 90 | "numericPrecision": "27", 91 | "numericScale": "7", 92 | "ordinalPosition": 3, 93 | "primaryKeyIndicator": "N", 94 | "multiActiveIndicator": "N" 95 | } 96 | ] 97 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/100_Staging_Area/dbo/STG_USERMANAGED_SEGMENT.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "STG_USERMANAGED_SEGMENT", 3 | "database": "100_Staging_Area", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 5, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 4, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 6, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "Demographic_Segment_Code", 38 | "dataType": "nvarchar", 39 | "characterLength": "100", 40 | "numericPrecision": "0", 41 | "numericScale": "0", 42 | "ordinalPosition": 7, 43 | "primaryKeyIndicator": "N", 44 | "multiActiveIndicator": "N" 45 | }, 46 | { 47 | "name": "Demographic_Segment_Description", 48 | "dataType": "nvarchar", 49 | "characterLength": "100", 50 | "numericPrecision": "0", 51 | "numericScale": "0", 52 | "ordinalPosition": 8, 53 | "primaryKeyIndicator": "N", 54 | "multiActiveIndicator": "N" 55 | }, 56 | { 57 | "name": "INSCRIPTION_RECORD_ID", 58 | "dataType": "int", 59 | "characterLength": "4", 60 | "numericPrecision": "10", 61 | "numericScale": "0", 62 | "ordinalPosition": 2, 63 | "primaryKeyIndicator": "N", 64 | "multiActiveIndicator": "N" 65 | }, 66 | { 67 | "name": "INSCRIPTION_TIMESTAMP", 68 | "dataType": "datetime2", 69 | "characterLength": "8", 70 | "numericPrecision": "27", 71 | "numericScale": "7", 72 | "ordinalPosition": 1, 73 | "primaryKeyIndicator": "N", 74 | "multiActiveIndicator": "N" 75 | }, 76 | { 77 | "name": "SOURCE_TIMESTAMP", 78 | "dataType": "datetime2", 79 | "characterLength": "8", 80 | "numericPrecision": "27", 81 | "numericScale": "7", 82 | "ordinalPosition": 3, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | } 86 | ] 87 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/150_Persistent_Staging_Area/dbo/PSA_PROFILER_CUSTOMER_CONTACT.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "PSA_PROFILER_CUSTOMER_CONTACT", 3 | "database": "150_Persistent_Staging_Area", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 5, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 4, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 6, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "Contact_Number", 38 | "dataType": "int", 39 | "characterLength": "4", 40 | "numericPrecision": "10", 41 | "numericScale": "0", 42 | "ordinalPosition": 8, 43 | "primaryKeyIndicator": "N", 44 | "multiActiveIndicator": "N" 45 | }, 46 | { 47 | "name": "CustomerID", 48 | "dataType": "int", 49 | "characterLength": "4", 50 | "numericPrecision": "10", 51 | "numericScale": "0", 52 | "ordinalPosition": 7, 53 | "primaryKeyIndicator": "Y", 54 | "multiActiveIndicator": "Y" 55 | }, 56 | { 57 | "name": "INSCRIPTION_RECORD_ID", 58 | "dataType": "int", 59 | "characterLength": "4", 60 | "numericPrecision": "10", 61 | "numericScale": "0", 62 | "ordinalPosition": 2, 63 | "primaryKeyIndicator": "Y", 64 | "multiActiveIndicator": "Y" 65 | }, 66 | { 67 | "name": "INSCRIPTION_TIMESTAMP", 68 | "dataType": "datetime2", 69 | "characterLength": "8", 70 | "numericPrecision": "27", 71 | "numericScale": "7", 72 | "ordinalPosition": 1, 73 | "primaryKeyIndicator": "Y", 74 | "multiActiveIndicator": "N" 75 | }, 76 | { 77 | "name": "SOURCE_TIMESTAMP", 78 | "dataType": "datetime2", 79 | "characterLength": "8", 80 | "numericPrecision": "27", 81 | "numericScale": "7", 82 | "ordinalPosition": 3, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | }, 86 | { 87 | "name": "Valid_From", 88 | "dataType": "datetime2", 89 | "characterLength": "8", 90 | "numericPrecision": "27", 91 | "numericScale": "7", 92 | "ordinalPosition": 9, 93 | "primaryKeyIndicator": "N", 94 | "multiActiveIndicator": "N" 95 | } 96 | ] 97 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/150_Persistent_Staging_Area/dbo/PSA_PROFILER_CUSTOMER_OFFER.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "PSA_PROFILER_CUSTOMER_OFFER", 3 | "database": "150_Persistent_Staging_Area", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 5, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 4, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 6, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "CustomerID", 38 | "dataType": "int", 39 | "characterLength": "4", 40 | "numericPrecision": "10", 41 | "numericScale": "0", 42 | "ordinalPosition": 7, 43 | "primaryKeyIndicator": "Y", 44 | "multiActiveIndicator": "Y" 45 | }, 46 | { 47 | "name": "INSCRIPTION_RECORD_ID", 48 | "dataType": "int", 49 | "characterLength": "4", 50 | "numericPrecision": "10", 51 | "numericScale": "0", 52 | "ordinalPosition": 2, 53 | "primaryKeyIndicator": "Y", 54 | "multiActiveIndicator": "Y" 55 | }, 56 | { 57 | "name": "INSCRIPTION_TIMESTAMP", 58 | "dataType": "datetime2", 59 | "characterLength": "8", 60 | "numericPrecision": "27", 61 | "numericScale": "7", 62 | "ordinalPosition": 1, 63 | "primaryKeyIndicator": "Y", 64 | "multiActiveIndicator": "N" 65 | }, 66 | { 67 | "name": "OfferID", 68 | "dataType": "int", 69 | "characterLength": "4", 70 | "numericPrecision": "10", 71 | "numericScale": "0", 72 | "ordinalPosition": 8, 73 | "primaryKeyIndicator": "Y", 74 | "multiActiveIndicator": "Y" 75 | }, 76 | { 77 | "name": "SOURCE_TIMESTAMP", 78 | "dataType": "datetime2", 79 | "characterLength": "8", 80 | "numericPrecision": "27", 81 | "numericScale": "7", 82 | "ordinalPosition": 3, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | } 86 | ] 87 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/150_Persistent_Staging_Area/dbo/PSA_PROFILER_CUSTOMER_PERSONAL.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "PSA_PROFILER_CUSTOMER_PERSONAL", 3 | "database": "150_Persistent_Staging_Area", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 5, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 4, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 6, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "Country", 38 | "dataType": "nvarchar", 39 | "characterLength": "100", 40 | "numericPrecision": "0", 41 | "numericScale": "0", 42 | "ordinalPosition": 13, 43 | "primaryKeyIndicator": "N", 44 | "multiActiveIndicator": "N" 45 | }, 46 | { 47 | "name": "CustomerID", 48 | "dataType": "int", 49 | "characterLength": "4", 50 | "numericPrecision": "10", 51 | "numericScale": "0", 52 | "ordinalPosition": 7, 53 | "primaryKeyIndicator": "Y", 54 | "multiActiveIndicator": "Y" 55 | }, 56 | { 57 | "name": "DOB", 58 | "dataType": "datetime2", 59 | "characterLength": "8", 60 | "numericPrecision": "27", 61 | "numericScale": "7", 62 | "ordinalPosition": 15, 63 | "primaryKeyIndicator": "N", 64 | "multiActiveIndicator": "N" 65 | }, 66 | { 67 | "name": "Pronoun", 68 | "dataType": "nvarchar", 69 | "characterLength": "100", 70 | "numericPrecision": "0", 71 | "numericScale": "0", 72 | "ordinalPosition": 14, 73 | "primaryKeyIndicator": "N", 74 | "multiActiveIndicator": "N" 75 | }, 76 | { 77 | "name": "Given", 78 | "dataType": "nvarchar", 79 | "characterLength": "100", 80 | "numericPrecision": "0", 81 | "numericScale": "0", 82 | "ordinalPosition": 8, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | }, 86 | { 87 | "name": "INSCRIPTION_RECORD_ID", 88 | "dataType": "int", 89 | "characterLength": "4", 90 | "numericPrecision": "10", 91 | "numericScale": "0", 92 | "ordinalPosition": 2, 93 | "primaryKeyIndicator": "Y", 94 | "multiActiveIndicator": "Y" 95 | }, 96 | { 97 | "name": "INSCRIPTION_TIMESTAMP", 98 | "dataType": "datetime2", 99 | "characterLength": "8", 100 | "numericPrecision": "27", 101 | "numericScale": "7", 102 | "ordinalPosition": 1, 103 | "primaryKeyIndicator": "Y", 104 | "multiActiveIndicator": "N" 105 | }, 106 | { 107 | "name": "Postcode", 108 | "dataType": "nvarchar", 109 | "characterLength": "100", 110 | "numericPrecision": "0", 111 | "numericScale": "0", 112 | "ordinalPosition": 12, 113 | "primaryKeyIndicator": "N", 114 | "multiActiveIndicator": "N" 115 | }, 116 | { 117 | "name": "Referee_Offer_Made", 118 | "dataType": "int", 119 | "characterLength": "4", 120 | "numericPrecision": "10", 121 | "numericScale": "0", 122 | "ordinalPosition": 16, 123 | "primaryKeyIndicator": "N", 124 | "multiActiveIndicator": "N" 125 | }, 126 | { 127 | "name": "SOURCE_TIMESTAMP", 128 | "dataType": "datetime2", 129 | "characterLength": "8", 130 | "numericPrecision": "27", 131 | "numericScale": "7", 132 | "ordinalPosition": 3, 133 | "primaryKeyIndicator": "N", 134 | "multiActiveIndicator": "N" 135 | }, 136 | { 137 | "name": "State", 138 | "dataType": "nvarchar", 139 | "characterLength": "100", 140 | "numericPrecision": "0", 141 | "numericScale": "0", 142 | "ordinalPosition": 11, 143 | "primaryKeyIndicator": "N", 144 | "multiActiveIndicator": "N" 145 | }, 146 | { 147 | "name": "Suburb", 148 | "dataType": "nvarchar", 149 | "characterLength": "100", 150 | "numericPrecision": "0", 151 | "numericScale": "0", 152 | "ordinalPosition": 10, 153 | "primaryKeyIndicator": "N", 154 | "multiActiveIndicator": "N" 155 | }, 156 | { 157 | "name": "Surname", 158 | "dataType": "nvarchar", 159 | "characterLength": "100", 160 | "numericPrecision": "0", 161 | "numericScale": "0", 162 | "ordinalPosition": 9, 163 | "primaryKeyIndicator": "N", 164 | "multiActiveIndicator": "N" 165 | }, 166 | { 167 | "name": "Valid_From", 168 | "dataType": "datetime2", 169 | "characterLength": "8", 170 | "numericPrecision": "27", 171 | "numericScale": "7", 172 | "ordinalPosition": 17, 173 | "primaryKeyIndicator": "N", 174 | "multiActiveIndicator": "N" 175 | } 176 | ] 177 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/150_Persistent_Staging_Area/dbo/PSA_PROFILER_CUST_MEMBERSHIP.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "PSA_PROFILER_CUST_MEMBERSHIP", 3 | "database": "150_Persistent_Staging_Area", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 5, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 4, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 6, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "Comment", 38 | "dataType": "nvarchar", 39 | "characterLength": "100", 40 | "numericPrecision": "0", 41 | "numericScale": "0", 42 | "ordinalPosition": 12, 43 | "primaryKeyIndicator": "N", 44 | "multiActiveIndicator": "N" 45 | }, 46 | { 47 | "name": "CustomerID", 48 | "dataType": "int", 49 | "characterLength": "4", 50 | "numericPrecision": "10", 51 | "numericScale": "0", 52 | "ordinalPosition": 7, 53 | "primaryKeyIndicator": "Y", 54 | "multiActiveIndicator": "Y" 55 | }, 56 | { 57 | "name": "End_Date", 58 | "dataType": "datetime2", 59 | "characterLength": "8", 60 | "numericPrecision": "27", 61 | "numericScale": "7", 62 | "ordinalPosition": 10, 63 | "primaryKeyIndicator": "N", 64 | "multiActiveIndicator": "N" 65 | }, 66 | { 67 | "name": "INSCRIPTION_RECORD_ID", 68 | "dataType": "int", 69 | "characterLength": "4", 70 | "numericPrecision": "10", 71 | "numericScale": "0", 72 | "ordinalPosition": 2, 73 | "primaryKeyIndicator": "Y", 74 | "multiActiveIndicator": "Y" 75 | }, 76 | { 77 | "name": "INSCRIPTION_TIMESTAMP", 78 | "dataType": "datetime2", 79 | "characterLength": "8", 80 | "numericPrecision": "27", 81 | "numericScale": "7", 82 | "ordinalPosition": 1, 83 | "primaryKeyIndicator": "Y", 84 | "multiActiveIndicator": "N" 85 | }, 86 | { 87 | "name": "Plan_Code", 88 | "dataType": "nvarchar", 89 | "characterLength": "100", 90 | "numericPrecision": "0", 91 | "numericScale": "0", 92 | "ordinalPosition": 8, 93 | "primaryKeyIndicator": "Y", 94 | "multiActiveIndicator": "Y" 95 | }, 96 | { 97 | "name": "SOURCE_TIMESTAMP", 98 | "dataType": "datetime2", 99 | "characterLength": "8", 100 | "numericPrecision": "27", 101 | "numericScale": "7", 102 | "ordinalPosition": 3, 103 | "primaryKeyIndicator": "N", 104 | "multiActiveIndicator": "N" 105 | }, 106 | { 107 | "name": "Start_Date", 108 | "dataType": "datetime2", 109 | "characterLength": "8", 110 | "numericPrecision": "27", 111 | "numericScale": "7", 112 | "ordinalPosition": 9, 113 | "primaryKeyIndicator": "N", 114 | "multiActiveIndicator": "N" 115 | }, 116 | { 117 | "name": "Status", 118 | "dataType": "nvarchar", 119 | "characterLength": "100", 120 | "numericPrecision": "0", 121 | "numericScale": "0", 122 | "ordinalPosition": 11, 123 | "primaryKeyIndicator": "N", 124 | "multiActiveIndicator": "N" 125 | } 126 | ] 127 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/150_Persistent_Staging_Area/dbo/PSA_PROFILER_ESTIMATED_WORTH.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "PSA_PROFILER_ESTIMATED_WORTH", 3 | "database": "150_Persistent_Staging_Area", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 5, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 4, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 6, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "Date_effective", 38 | "dataType": "datetime2", 39 | "characterLength": "8", 40 | "numericPrecision": "27", 41 | "numericScale": "7", 42 | "ordinalPosition": 8, 43 | "primaryKeyIndicator": "Y", 44 | "multiActiveIndicator": "Y" 45 | }, 46 | { 47 | "name": "INSCRIPTION_RECORD_ID", 48 | "dataType": "int", 49 | "characterLength": "4", 50 | "numericPrecision": "10", 51 | "numericScale": "0", 52 | "ordinalPosition": 2, 53 | "primaryKeyIndicator": "Y", 54 | "multiActiveIndicator": "Y" 55 | }, 56 | { 57 | "name": "INSCRIPTION_TIMESTAMP", 58 | "dataType": "datetime2", 59 | "characterLength": "8", 60 | "numericPrecision": "27", 61 | "numericScale": "7", 62 | "ordinalPosition": 1, 63 | "primaryKeyIndicator": "Y", 64 | "multiActiveIndicator": "N" 65 | }, 66 | { 67 | "name": "Plan_Code", 68 | "dataType": "nvarchar", 69 | "characterLength": "100", 70 | "numericPrecision": "0", 71 | "numericScale": "0", 72 | "ordinalPosition": 7, 73 | "primaryKeyIndicator": "Y", 74 | "multiActiveIndicator": "Y" 75 | }, 76 | { 77 | "name": "SOURCE_TIMESTAMP", 78 | "dataType": "datetime2", 79 | "characterLength": "8", 80 | "numericPrecision": "27", 81 | "numericScale": "7", 82 | "ordinalPosition": 3, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | }, 86 | { 87 | "name": "Value_Amount", 88 | "dataType": "numeric", 89 | "characterLength": "17", 90 | "numericPrecision": "38", 91 | "numericScale": "20", 92 | "ordinalPosition": 9, 93 | "primaryKeyIndicator": "N", 94 | "multiActiveIndicator": "N" 95 | } 96 | ] 97 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/150_Persistent_Staging_Area/dbo/PSA_PROFILER_OFFER.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "PSA_PROFILER_OFFER", 3 | "database": "150_Persistent_Staging_Area", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 5, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 4, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 6, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "INSCRIPTION_RECORD_ID", 38 | "dataType": "int", 39 | "characterLength": "4", 40 | "numericPrecision": "10", 41 | "numericScale": "0", 42 | "ordinalPosition": 2, 43 | "primaryKeyIndicator": "Y", 44 | "multiActiveIndicator": "Y" 45 | }, 46 | { 47 | "name": "INSCRIPTION_TIMESTAMP", 48 | "dataType": "datetime2", 49 | "characterLength": "8", 50 | "numericPrecision": "27", 51 | "numericScale": "7", 52 | "ordinalPosition": 1, 53 | "primaryKeyIndicator": "Y", 54 | "multiActiveIndicator": "N" 55 | }, 56 | { 57 | "name": "Offer_Long_Description", 58 | "dataType": "nvarchar", 59 | "characterLength": "100", 60 | "numericPrecision": "0", 61 | "numericScale": "0", 62 | "ordinalPosition": 8, 63 | "primaryKeyIndicator": "N", 64 | "multiActiveIndicator": "N" 65 | }, 66 | { 67 | "name": "OfferID", 68 | "dataType": "int", 69 | "characterLength": "4", 70 | "numericPrecision": "10", 71 | "numericScale": "0", 72 | "ordinalPosition": 7, 73 | "primaryKeyIndicator": "Y", 74 | "multiActiveIndicator": "Y" 75 | }, 76 | { 77 | "name": "SOURCE_TIMESTAMP", 78 | "dataType": "datetime2", 79 | "characterLength": "8", 80 | "numericPrecision": "27", 81 | "numericScale": "7", 82 | "ordinalPosition": 3, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | } 86 | ] 87 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/150_Persistent_Staging_Area/dbo/PSA_PROFILER_PERSONALISED_COSTING.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "PSA_PROFILER_PERSONALISED_COSTING", 3 | "database": "150_Persistent_Staging_Area", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 5, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 4, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 6, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "Date_effective", 38 | "dataType": "datetime2", 39 | "characterLength": "8", 40 | "numericPrecision": "27", 41 | "numericScale": "7", 42 | "ordinalPosition": 10, 43 | "primaryKeyIndicator": "Y", 44 | "multiActiveIndicator": "Y" 45 | }, 46 | { 47 | "name": "INSCRIPTION_RECORD_ID", 48 | "dataType": "int", 49 | "characterLength": "4", 50 | "numericPrecision": "10", 51 | "numericScale": "0", 52 | "ordinalPosition": 2, 53 | "primaryKeyIndicator": "Y", 54 | "multiActiveIndicator": "Y" 55 | }, 56 | { 57 | "name": "INSCRIPTION_TIMESTAMP", 58 | "dataType": "datetime2", 59 | "characterLength": "8", 60 | "numericPrecision": "27", 61 | "numericScale": "7", 62 | "ordinalPosition": 1, 63 | "primaryKeyIndicator": "Y", 64 | "multiActiveIndicator": "N" 65 | }, 66 | { 67 | "name": "Member", 68 | "dataType": "int", 69 | "characterLength": "4", 70 | "numericPrecision": "10", 71 | "numericScale": "0", 72 | "ordinalPosition": 7, 73 | "primaryKeyIndicator": "Y", 74 | "multiActiveIndicator": "Y" 75 | }, 76 | { 77 | "name": "Monthly_Cost", 78 | "dataType": "numeric", 79 | "characterLength": "17", 80 | "numericPrecision": "38", 81 | "numericScale": "20", 82 | "ordinalPosition": 11, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | }, 86 | { 87 | "name": "Plan_Code", 88 | "dataType": "nvarchar", 89 | "characterLength": "100", 90 | "numericPrecision": "0", 91 | "numericScale": "0", 92 | "ordinalPosition": 9, 93 | "primaryKeyIndicator": "Y", 94 | "multiActiveIndicator": "Y" 95 | }, 96 | { 97 | "name": "Segment", 98 | "dataType": "nvarchar", 99 | "characterLength": "100", 100 | "numericPrecision": "0", 101 | "numericScale": "0", 102 | "ordinalPosition": 8, 103 | "primaryKeyIndicator": "Y", 104 | "multiActiveIndicator": "Y" 105 | }, 106 | { 107 | "name": "SOURCE_TIMESTAMP", 108 | "dataType": "datetime2", 109 | "characterLength": "8", 110 | "numericPrecision": "27", 111 | "numericScale": "7", 112 | "ordinalPosition": 3, 113 | "primaryKeyIndicator": "N", 114 | "multiActiveIndicator": "N" 115 | } 116 | ] 117 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/150_Persistent_Staging_Area/dbo/PSA_PROFILER_PLAN.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "PSA_PROFILER_PLAN", 3 | "database": "150_Persistent_Staging_Area", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 5, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 4, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 6, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "INSCRIPTION_RECORD_ID", 38 | "dataType": "int", 39 | "characterLength": "4", 40 | "numericPrecision": "10", 41 | "numericScale": "0", 42 | "ordinalPosition": 2, 43 | "primaryKeyIndicator": "Y", 44 | "multiActiveIndicator": "Y" 45 | }, 46 | { 47 | "name": "INSCRIPTION_TIMESTAMP", 48 | "dataType": "datetime2", 49 | "characterLength": "8", 50 | "numericPrecision": "27", 51 | "numericScale": "7", 52 | "ordinalPosition": 1, 53 | "primaryKeyIndicator": "Y", 54 | "multiActiveIndicator": "N" 55 | }, 56 | { 57 | "name": "Plan_Code", 58 | "dataType": "nvarchar", 59 | "characterLength": "100", 60 | "numericPrecision": "0", 61 | "numericScale": "0", 62 | "ordinalPosition": 7, 63 | "primaryKeyIndicator": "Y", 64 | "multiActiveIndicator": "Y" 65 | }, 66 | { 67 | "name": "Plan_Desc", 68 | "dataType": "nvarchar", 69 | "characterLength": "100", 70 | "numericPrecision": "0", 71 | "numericScale": "0", 72 | "ordinalPosition": 8, 73 | "primaryKeyIndicator": "N", 74 | "multiActiveIndicator": "N" 75 | }, 76 | { 77 | "name": "Renewal_Plan_Code", 78 | "dataType": "nvarchar", 79 | "characterLength": "100", 80 | "numericPrecision": "0", 81 | "numericScale": "0", 82 | "ordinalPosition": 9, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | }, 86 | { 87 | "name": "SOURCE_TIMESTAMP", 88 | "dataType": "datetime2", 89 | "characterLength": "8", 90 | "numericPrecision": "27", 91 | "numericScale": "7", 92 | "ordinalPosition": 3, 93 | "primaryKeyIndicator": "N", 94 | "multiActiveIndicator": "N" 95 | } 96 | ] 97 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/150_Persistent_Staging_Area/dbo/PSA_USERMANAGED_SEGMENT.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "PSA_USERMANAGED_SEGMENT", 3 | "database": "150_Persistent_Staging_Area", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 5, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 4, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 6, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "Demographic_Segment_Code", 38 | "dataType": "nvarchar", 39 | "characterLength": "100", 40 | "numericPrecision": "0", 41 | "numericScale": "0", 42 | "ordinalPosition": 7, 43 | "primaryKeyIndicator": "Y", 44 | "multiActiveIndicator": "Y" 45 | }, 46 | { 47 | "name": "Demographic_Segment_Description", 48 | "dataType": "nvarchar", 49 | "characterLength": "100", 50 | "numericPrecision": "0", 51 | "numericScale": "0", 52 | "ordinalPosition": 8, 53 | "primaryKeyIndicator": "N", 54 | "multiActiveIndicator": "N" 55 | }, 56 | { 57 | "name": "INSCRIPTION_RECORD_ID", 58 | "dataType": "int", 59 | "characterLength": "4", 60 | "numericPrecision": "10", 61 | "numericScale": "0", 62 | "ordinalPosition": 2, 63 | "primaryKeyIndicator": "Y", 64 | "multiActiveIndicator": "Y" 65 | }, 66 | { 67 | "name": "INSCRIPTION_TIMESTAMP", 68 | "dataType": "datetime2", 69 | "characterLength": "8", 70 | "numericPrecision": "27", 71 | "numericScale": "7", 72 | "ordinalPosition": 1, 73 | "primaryKeyIndicator": "Y", 74 | "multiActiveIndicator": "N" 75 | }, 76 | { 77 | "name": "SOURCE_TIMESTAMP", 78 | "dataType": "datetime2", 79 | "characterLength": "8", 80 | "numericPrecision": "27", 81 | "numericScale": "7", 82 | "ordinalPosition": 3, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | } 86 | ] 87 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/200_Integration_Layer/bdv/vw_CUSTOMER_DERIVED.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vw_CUSTOMER_DERIVED", 3 | "database": "200_Integration_Layer", 4 | "schema": "bdv", 5 | "columns": [ 6 | { 7 | "name": "CHANGE_DATA_INDICATOR", 8 | "dataType": "varchar", 9 | "characterLength": "100", 10 | "numericPrecision": "0", 11 | "numericScale": "0", 12 | "ordinalPosition": 4, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CUSTOMER_ID", 18 | "dataType": "nvarchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 1, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "INSCRIPTION_RECORD_ID", 28 | "dataType": "int", 29 | "characterLength": "4", 30 | "numericPrecision": "10", 31 | "numericScale": "0", 32 | "ordinalPosition": 5, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "INSCRIPTION_TIMESTAMP", 38 | "dataType": "datetime2", 39 | "characterLength": "8", 40 | "numericPrecision": "27", 41 | "numericScale": "7", 42 | "ordinalPosition": 2, 43 | "primaryKeyIndicator": "N", 44 | "multiActiveIndicator": "N" 45 | }, 46 | { 47 | "name": "REFERRAL_OFFER_CLEAN", 48 | "dataType": "varchar", 49 | "characterLength": "7", 50 | "numericPrecision": "0", 51 | "numericScale": "0", 52 | "ordinalPosition": 6, 53 | "primaryKeyIndicator": "N", 54 | "multiActiveIndicator": "N" 55 | }, 56 | { 57 | "name": "SOURCE_TIMESTAMP", 58 | "dataType": "datetime2", 59 | "characterLength": "8", 60 | "numericPrecision": "27", 61 | "numericScale": "7", 62 | "ordinalPosition": 3, 63 | "primaryKeyIndicator": "N", 64 | "multiActiveIndicator": "N" 65 | } 66 | ] 67 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/200_Integration_Layer/dbo/HUB_CUSTOMER.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "HUB_CUSTOMER", 3 | "database": "200_Integration_Layer", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 2, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CUSTOMER_ID", 18 | "dataType": "nvarchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 4, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CUSTOMER_SK", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 1, 33 | "primaryKeyIndicator": "Y", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "INSCRIPTION_TIMESTAMP", 38 | "dataType": "datetime2", 39 | "characterLength": "8", 40 | "numericPrecision": "27", 41 | "numericScale": "7", 42 | "ordinalPosition": 3, 43 | "primaryKeyIndicator": "N", 44 | "multiActiveIndicator": "N" 45 | } 46 | ] 47 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/200_Integration_Layer/dbo/HUB_INCENTIVE_OFFER.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "HUB_INCENTIVE_OFFER", 3 | "database": "200_Integration_Layer", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 2, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "INCENTIVE_OFFER_SK", 18 | "dataType": "binary", 19 | "characterLength": "16", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 1, 23 | "primaryKeyIndicator": "Y", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "INSCRIPTION_TIMESTAMP", 28 | "dataType": "datetime2", 29 | "characterLength": "8", 30 | "numericPrecision": "27", 31 | "numericScale": "7", 32 | "ordinalPosition": 3, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "OFFER_ID", 38 | "dataType": "nvarchar", 39 | "characterLength": "100", 40 | "numericPrecision": "0", 41 | "numericScale": "0", 42 | "ordinalPosition": 4, 43 | "primaryKeyIndicator": "N", 44 | "multiActiveIndicator": "N" 45 | } 46 | ] 47 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/200_Integration_Layer/dbo/HUB_MEMBERSHIP_PLAN.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "HUB_MEMBERSHIP_PLAN", 3 | "database": "200_Integration_Layer", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 2, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "INSCRIPTION_TIMESTAMP", 18 | "dataType": "datetime2", 19 | "characterLength": "8", 20 | "numericPrecision": "27", 21 | "numericScale": "7", 22 | "ordinalPosition": 3, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "MEMBERSHIP_PLAN_SK", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 1, 33 | "primaryKeyIndicator": "Y", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "PLAN_CODE", 38 | "dataType": "nvarchar", 39 | "characterLength": "100", 40 | "numericPrecision": "0", 41 | "numericScale": "0", 42 | "ordinalPosition": 4, 43 | "primaryKeyIndicator": "N", 44 | "multiActiveIndicator": "N" 45 | }, 46 | { 47 | "name": "PLAN_SUFFIX", 48 | "dataType": "nvarchar", 49 | "characterLength": "100", 50 | "numericPrecision": "0", 51 | "numericScale": "0", 52 | "ordinalPosition": 5, 53 | "primaryKeyIndicator": "N", 54 | "multiActiveIndicator": "N" 55 | } 56 | ] 57 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/200_Integration_Layer/dbo/HUB_SEGMENT.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "HUB_SEGMENT", 3 | "database": "200_Integration_Layer", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 2, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "INSCRIPTION_TIMESTAMP", 18 | "dataType": "datetime2", 19 | "characterLength": "8", 20 | "numericPrecision": "27", 21 | "numericScale": "7", 22 | "ordinalPosition": 3, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "SEGMENT_CODE", 28 | "dataType": "nvarchar", 29 | "characterLength": "100", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 4, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "SEGMENT_SK", 38 | "dataType": "binary", 39 | "characterLength": "16", 40 | "numericPrecision": "0", 41 | "numericScale": "0", 42 | "ordinalPosition": 1, 43 | "primaryKeyIndicator": "Y", 44 | "multiActiveIndicator": "N" 45 | } 46 | ] 47 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/200_Integration_Layer/dbo/LNK_CUSTOMER_COSTING.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "LNK_CUSTOMER_COSTING", 3 | "database": "200_Integration_Layer", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 2, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CUSTOMER_COSTING_SK", 18 | "dataType": "binary", 19 | "characterLength": "16", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 1, 23 | "primaryKeyIndicator": "Y", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CUSTOMER_SK", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 5, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "INSCRIPTION_TIMESTAMP", 38 | "dataType": "datetime2", 39 | "characterLength": "8", 40 | "numericPrecision": "27", 41 | "numericScale": "7", 42 | "ordinalPosition": 3, 43 | "primaryKeyIndicator": "N", 44 | "multiActiveIndicator": "N" 45 | }, 46 | { 47 | "name": "MEMBERSHIP_PLAN_SK", 48 | "dataType": "binary", 49 | "characterLength": "16", 50 | "numericPrecision": "0", 51 | "numericScale": "0", 52 | "ordinalPosition": 4, 53 | "primaryKeyIndicator": "N", 54 | "multiActiveIndicator": "N" 55 | }, 56 | { 57 | "name": "SEGMENT_SK", 58 | "dataType": "binary", 59 | "characterLength": "16", 60 | "numericPrecision": "0", 61 | "numericScale": "0", 62 | "ordinalPosition": 6, 63 | "primaryKeyIndicator": "N", 64 | "multiActiveIndicator": "N" 65 | } 66 | ] 67 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/200_Integration_Layer/dbo/LNK_CUSTOMER_OFFER.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "LNK_CUSTOMER_OFFER", 3 | "database": "200_Integration_Layer", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 2, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CUSTOMER_OFFER_SK", 18 | "dataType": "binary", 19 | "characterLength": "16", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 1, 23 | "primaryKeyIndicator": "Y", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CUSTOMER_SK", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 4, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "INCENTIVE_OFFER_SK", 38 | "dataType": "binary", 39 | "characterLength": "16", 40 | "numericPrecision": "0", 41 | "numericScale": "0", 42 | "ordinalPosition": 5, 43 | "primaryKeyIndicator": "N", 44 | "multiActiveIndicator": "N" 45 | }, 46 | { 47 | "name": "INSCRIPTION_TIMESTAMP", 48 | "dataType": "datetime2", 49 | "characterLength": "8", 50 | "numericPrecision": "27", 51 | "numericScale": "7", 52 | "ordinalPosition": 3, 53 | "primaryKeyIndicator": "N", 54 | "multiActiveIndicator": "N" 55 | } 56 | ] 57 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/200_Integration_Layer/dbo/LNK_MEMBERSHIP.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "LNK_MEMBERSHIP", 3 | "database": "200_Integration_Layer", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 2, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CUSTOMER_SK", 18 | "dataType": "binary", 19 | "characterLength": "16", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 4, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "INSCRIPTION_TIMESTAMP", 28 | "dataType": "datetime2", 29 | "characterLength": "8", 30 | "numericPrecision": "27", 31 | "numericScale": "7", 32 | "ordinalPosition": 3, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "MEMBERSHIP_PLAN_SK", 38 | "dataType": "binary", 39 | "characterLength": "16", 40 | "numericPrecision": "0", 41 | "numericScale": "0", 42 | "ordinalPosition": 5, 43 | "primaryKeyIndicator": "N", 44 | "multiActiveIndicator": "N" 45 | }, 46 | { 47 | "name": "MEMBERSHIP_SK", 48 | "dataType": "binary", 49 | "characterLength": "16", 50 | "numericPrecision": "0", 51 | "numericScale": "0", 52 | "ordinalPosition": 1, 53 | "primaryKeyIndicator": "Y", 54 | "multiActiveIndicator": "N" 55 | }, 56 | { 57 | "name": "SALES_CHANNEL", 58 | "dataType": "nvarchar", 59 | "characterLength": "100", 60 | "numericPrecision": "0", 61 | "numericScale": "0", 62 | "ordinalPosition": 6, 63 | "primaryKeyIndicator": "N", 64 | "multiActiveIndicator": "N" 65 | } 66 | ] 67 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/200_Integration_Layer/dbo/LNK_RENEWAL_MEMBERSHIP.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "LNK_RENEWAL_MEMBERSHIP", 3 | "database": "200_Integration_Layer", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 2, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "INSCRIPTION_TIMESTAMP", 18 | "dataType": "datetime2", 19 | "characterLength": "8", 20 | "numericPrecision": "27", 21 | "numericScale": "7", 22 | "ordinalPosition": 3, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "MEMBERSHIP_PLAN_SK", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 4, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "RENEWAL_MEMBERSHIP_SK", 38 | "dataType": "binary", 39 | "characterLength": "16", 40 | "numericPrecision": "0", 41 | "numericScale": "0", 42 | "ordinalPosition": 1, 43 | "primaryKeyIndicator": "Y", 44 | "multiActiveIndicator": "N" 45 | }, 46 | { 47 | "name": "RENEWAL_PLAN_SK", 48 | "dataType": "binary", 49 | "characterLength": "16", 50 | "numericPrecision": "0", 51 | "numericScale": "0", 52 | "ordinalPosition": 5, 53 | "primaryKeyIndicator": "N", 54 | "multiActiveIndicator": "N" 55 | } 56 | ] 57 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/200_Integration_Layer/dbo/LSAT_CUSTOMER_COSTING.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "LSAT_CUSTOMER_COSTING", 3 | "database": "200_Integration_Layer", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 6, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 7, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 8, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "COSTING_EFFECTIVE_DATE", 38 | "dataType": "datetime2", 39 | "characterLength": "8", 40 | "numericPrecision": "27", 41 | "numericScale": "7", 42 | "ordinalPosition": 2, 43 | "primaryKeyIndicator": "Y", 44 | "multiActiveIndicator": "Y" 45 | }, 46 | { 47 | "name": "CUSTOMER_COSTING_SK", 48 | "dataType": "binary", 49 | "characterLength": "16", 50 | "numericPrecision": "0", 51 | "numericScale": "0", 52 | "ordinalPosition": 1, 53 | "primaryKeyIndicator": "Y", 54 | "multiActiveIndicator": "N" 55 | }, 56 | { 57 | "name": "INSCRIPTION_RECORD_ID", 58 | "dataType": "int", 59 | "characterLength": "4", 60 | "numericPrecision": "10", 61 | "numericScale": "0", 62 | "ordinalPosition": 4, 63 | "primaryKeyIndicator": "Y", 64 | "multiActiveIndicator": "Y" 65 | }, 66 | { 67 | "name": "INSCRIPTION_TIMESTAMP", 68 | "dataType": "datetime2", 69 | "characterLength": "8", 70 | "numericPrecision": "27", 71 | "numericScale": "7", 72 | "ordinalPosition": 3, 73 | "primaryKeyIndicator": "Y", 74 | "multiActiveIndicator": "N" 75 | }, 76 | { 77 | "name": "PERSONAL_MONTHLY_COST", 78 | "dataType": "numeric", 79 | "characterLength": "17", 80 | "numericPrecision": "38", 81 | "numericScale": "20", 82 | "ordinalPosition": 9, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | }, 86 | { 87 | "name": "STATE_TIMESTAMP", 88 | "dataType": "datetime2", 89 | "characterLength": "8", 90 | "numericPrecision": "27", 91 | "numericScale": "7", 92 | "ordinalPosition": 5, 93 | "primaryKeyIndicator": "N", 94 | "multiActiveIndicator": "N" 95 | } 96 | ] 97 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/200_Integration_Layer/dbo/LSAT_CUSTOMER_OFFER.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "LSAT_CUSTOMER_OFFER", 3 | "database": "200_Integration_Layer", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 5, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 6, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 7, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "CUSTOMER_OFFER_SK", 38 | "dataType": "binary", 39 | "characterLength": "16", 40 | "numericPrecision": "0", 41 | "numericScale": "0", 42 | "ordinalPosition": 1, 43 | "primaryKeyIndicator": "Y", 44 | "multiActiveIndicator": "N" 45 | }, 46 | { 47 | "name": "INSCRIPTION_RECORD_ID", 48 | "dataType": "int", 49 | "characterLength": "4", 50 | "numericPrecision": "10", 51 | "numericScale": "0", 52 | "ordinalPosition": 3, 53 | "primaryKeyIndicator": "Y", 54 | "multiActiveIndicator": "Y" 55 | }, 56 | { 57 | "name": "INSCRIPTION_TIMESTAMP", 58 | "dataType": "datetime2", 59 | "characterLength": "8", 60 | "numericPrecision": "27", 61 | "numericScale": "7", 62 | "ordinalPosition": 2, 63 | "primaryKeyIndicator": "Y", 64 | "multiActiveIndicator": "N" 65 | }, 66 | { 67 | "name": "STATE_TIMESTAMP", 68 | "dataType": "datetime2", 69 | "characterLength": "8", 70 | "numericPrecision": "27", 71 | "numericScale": "7", 72 | "ordinalPosition": 4, 73 | "primaryKeyIndicator": "N", 74 | "multiActiveIndicator": "N" 75 | } 76 | ] 77 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/200_Integration_Layer/dbo/LSAT_MEMBERSHIP.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "LSAT_MEMBERSHIP", 3 | "database": "200_Integration_Layer", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 5, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 6, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 7, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "INSCRIPTION_RECORD_ID", 38 | "dataType": "int", 39 | "characterLength": "4", 40 | "numericPrecision": "10", 41 | "numericScale": "0", 42 | "ordinalPosition": 3, 43 | "primaryKeyIndicator": "Y", 44 | "multiActiveIndicator": "Y" 45 | }, 46 | { 47 | "name": "INSCRIPTION_TIMESTAMP", 48 | "dataType": "datetime2", 49 | "characterLength": "8", 50 | "numericPrecision": "27", 51 | "numericScale": "7", 52 | "ordinalPosition": 2, 53 | "primaryKeyIndicator": "Y", 54 | "multiActiveIndicator": "N" 55 | }, 56 | { 57 | "name": "MEMBERSHIP_END_DATE", 58 | "dataType": "datetime2", 59 | "characterLength": "8", 60 | "numericPrecision": "27", 61 | "numericScale": "7", 62 | "ordinalPosition": 9, 63 | "primaryKeyIndicator": "N", 64 | "multiActiveIndicator": "N" 65 | }, 66 | { 67 | "name": "MEMBERSHIP_SK", 68 | "dataType": "binary", 69 | "characterLength": "16", 70 | "numericPrecision": "0", 71 | "numericScale": "0", 72 | "ordinalPosition": 1, 73 | "primaryKeyIndicator": "Y", 74 | "multiActiveIndicator": "N" 75 | }, 76 | { 77 | "name": "MEMBERSHIP_START_DATE", 78 | "dataType": "datetime2", 79 | "characterLength": "8", 80 | "numericPrecision": "27", 81 | "numericScale": "7", 82 | "ordinalPosition": 8, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | }, 86 | { 87 | "name": "MEMBERSHIP_STATUS", 88 | "dataType": "nvarchar", 89 | "characterLength": "100", 90 | "numericPrecision": "0", 91 | "numericScale": "0", 92 | "ordinalPosition": 10, 93 | "primaryKeyIndicator": "N", 94 | "multiActiveIndicator": "N" 95 | }, 96 | { 97 | "name": "STATE_TIMESTAMP", 98 | "dataType": "datetime2", 99 | "characterLength": "8", 100 | "numericPrecision": "27", 101 | "numericScale": "7", 102 | "ordinalPosition": 4, 103 | "primaryKeyIndicator": "N", 104 | "multiActiveIndicator": "N" 105 | } 106 | ] 107 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/200_Integration_Layer/dbo/SAT_CUSTOMER.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SAT_CUSTOMER", 3 | "database": "200_Integration_Layer", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 5, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 6, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 7, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "COUNTRY", 38 | "dataType": "nvarchar", 39 | "characterLength": "100", 40 | "numericPrecision": "0", 41 | "numericScale": "0", 42 | "ordinalPosition": 13, 43 | "primaryKeyIndicator": "N", 44 | "multiActiveIndicator": "N" 45 | }, 46 | { 47 | "name": "CUSTOMER_SK", 48 | "dataType": "binary", 49 | "characterLength": "16", 50 | "numericPrecision": "0", 51 | "numericScale": "0", 52 | "ordinalPosition": 1, 53 | "primaryKeyIndicator": "Y", 54 | "multiActiveIndicator": "N" 55 | }, 56 | { 57 | "name": "DATE_OF_BIRTH", 58 | "dataType": "datetime2", 59 | "characterLength": "8", 60 | "numericPrecision": "27", 61 | "numericScale": "7", 62 | "ordinalPosition": 15, 63 | "primaryKeyIndicator": "N", 64 | "multiActiveIndicator": "N" 65 | }, 66 | { 67 | "name": "PREF_GENDER_PRONOUN", 68 | "dataType": "nvarchar", 69 | "characterLength": "100", 70 | "numericPrecision": "0", 71 | "numericScale": "0", 72 | "ordinalPosition": 14, 73 | "primaryKeyIndicator": "N", 74 | "multiActiveIndicator": "N" 75 | }, 76 | { 77 | "name": "GIVEN_NAME", 78 | "dataType": "nvarchar", 79 | "characterLength": "100", 80 | "numericPrecision": "0", 81 | "numericScale": "0", 82 | "ordinalPosition": 8, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | }, 86 | { 87 | "name": "INSCRIPTION_RECORD_ID", 88 | "dataType": "int", 89 | "characterLength": "4", 90 | "numericPrecision": "10", 91 | "numericScale": "0", 92 | "ordinalPosition": 3, 93 | "primaryKeyIndicator": "Y", 94 | "multiActiveIndicator": "Y" 95 | }, 96 | { 97 | "name": "INSCRIPTION_TIMESTAMP", 98 | "dataType": "datetime2", 99 | "characterLength": "8", 100 | "numericPrecision": "27", 101 | "numericScale": "7", 102 | "ordinalPosition": 2, 103 | "primaryKeyIndicator": "Y", 104 | "multiActiveIndicator": "N" 105 | }, 106 | { 107 | "name": "POSTCODE", 108 | "dataType": "nvarchar", 109 | "characterLength": "100", 110 | "numericPrecision": "0", 111 | "numericScale": "0", 112 | "ordinalPosition": 11, 113 | "primaryKeyIndicator": "N", 114 | "multiActiveIndicator": "N" 115 | }, 116 | { 117 | "name": "REFERRAL_OFFER_MADE_INDICATOR", 118 | "dataType": "nvarchar", 119 | "characterLength": "100", 120 | "numericPrecision": "0", 121 | "numericScale": "0", 122 | "ordinalPosition": 16, 123 | "primaryKeyIndicator": "N", 124 | "multiActiveIndicator": "N" 125 | }, 126 | { 127 | "name": "STATE", 128 | "dataType": "nvarchar", 129 | "characterLength": "100", 130 | "numericPrecision": "0", 131 | "numericScale": "0", 132 | "ordinalPosition": 12, 133 | "primaryKeyIndicator": "N", 134 | "multiActiveIndicator": "N" 135 | }, 136 | { 137 | "name": "STATE_TIMESTAMP", 138 | "dataType": "datetime2", 139 | "characterLength": "8", 140 | "numericPrecision": "27", 141 | "numericScale": "7", 142 | "ordinalPosition": 4, 143 | "primaryKeyIndicator": "N", 144 | "multiActiveIndicator": "N" 145 | }, 146 | { 147 | "name": "SUBURB", 148 | "dataType": "nvarchar", 149 | "characterLength": "100", 150 | "numericPrecision": "0", 151 | "numericScale": "0", 152 | "ordinalPosition": 10, 153 | "primaryKeyIndicator": "N", 154 | "multiActiveIndicator": "N" 155 | }, 156 | { 157 | "name": "SURNAME", 158 | "dataType": "nvarchar", 159 | "characterLength": "100", 160 | "numericPrecision": "0", 161 | "numericScale": "0", 162 | "ordinalPosition": 9, 163 | "primaryKeyIndicator": "N", 164 | "multiActiveIndicator": "N" 165 | } 166 | ] 167 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/200_Integration_Layer/dbo/SAT_CUSTOMER_CONTACT_DETAILS.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SAT_CUSTOMER_CONTACT_DETAILS", 3 | "database": "200_Integration_Layer", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 5, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 6, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 7, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "CONTACT_NUMBER", 38 | "dataType": "nvarchar", 39 | "characterLength": "100", 40 | "numericPrecision": "0", 41 | "numericScale": "0", 42 | "ordinalPosition": 8, 43 | "primaryKeyIndicator": "N", 44 | "multiActiveIndicator": "N" 45 | }, 46 | { 47 | "name": "CUSTOMER_SK", 48 | "dataType": "binary", 49 | "characterLength": "16", 50 | "numericPrecision": "0", 51 | "numericScale": "0", 52 | "ordinalPosition": 1, 53 | "primaryKeyIndicator": "Y", 54 | "multiActiveIndicator": "N" 55 | }, 56 | { 57 | "name": "INSCRIPTION_RECORD_ID", 58 | "dataType": "int", 59 | "characterLength": "4", 60 | "numericPrecision": "10", 61 | "numericScale": "0", 62 | "ordinalPosition": 3, 63 | "primaryKeyIndicator": "Y", 64 | "multiActiveIndicator": "Y" 65 | }, 66 | { 67 | "name": "INSCRIPTION_TIMESTAMP", 68 | "dataType": "datetime2", 69 | "characterLength": "8", 70 | "numericPrecision": "27", 71 | "numericScale": "7", 72 | "ordinalPosition": 2, 73 | "primaryKeyIndicator": "Y", 74 | "multiActiveIndicator": "N" 75 | }, 76 | { 77 | "name": "STATE_TIMESTAMP", 78 | "dataType": "datetime2", 79 | "characterLength": "8", 80 | "numericPrecision": "27", 81 | "numericScale": "7", 82 | "ordinalPosition": 4, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | } 86 | ] 87 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/200_Integration_Layer/dbo/SAT_CUSTOMER_DERIVED.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SAT_CUSTOMER_DERIVED", 3 | "database": "200_Integration_Layer", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 5, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 6, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 7, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "CUSTOMER_SK", 38 | "dataType": "binary", 39 | "characterLength": "16", 40 | "numericPrecision": "0", 41 | "numericScale": "0", 42 | "ordinalPosition": 1, 43 | "primaryKeyIndicator": "Y", 44 | "multiActiveIndicator": "N" 45 | }, 46 | { 47 | "name": "INSCRIPTION_RECORD_ID", 48 | "dataType": "int", 49 | "characterLength": "4", 50 | "numericPrecision": "10", 51 | "numericScale": "0", 52 | "ordinalPosition": 3, 53 | "primaryKeyIndicator": "Y", 54 | "multiActiveIndicator": "Y" 55 | }, 56 | { 57 | "name": "INSCRIPTION_TIMESTAMP", 58 | "dataType": "datetime2", 59 | "characterLength": "8", 60 | "numericPrecision": "27", 61 | "numericScale": "7", 62 | "ordinalPosition": 2, 63 | "primaryKeyIndicator": "Y", 64 | "multiActiveIndicator": "N" 65 | }, 66 | { 67 | "name": "REFERRAL_OFFER_CLEAN", 68 | "dataType": "nvarchar", 69 | "characterLength": "100", 70 | "numericPrecision": "0", 71 | "numericScale": "0", 72 | "ordinalPosition": 8, 73 | "primaryKeyIndicator": "N", 74 | "multiActiveIndicator": "N" 75 | }, 76 | { 77 | "name": "STATE_TIMESTAMP", 78 | "dataType": "datetime2", 79 | "characterLength": "8", 80 | "numericPrecision": "27", 81 | "numericScale": "7", 82 | "ordinalPosition": 4, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | } 86 | ] 87 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/200_Integration_Layer/dbo/SAT_INCENTIVE_OFFER.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SAT_INCENTIVE_OFFER", 3 | "database": "200_Integration_Layer", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 5, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 6, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 7, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "INCENTIVE_OFFER_SK", 38 | "dataType": "binary", 39 | "characterLength": "16", 40 | "numericPrecision": "0", 41 | "numericScale": "0", 42 | "ordinalPosition": 1, 43 | "primaryKeyIndicator": "Y", 44 | "multiActiveIndicator": "N" 45 | }, 46 | { 47 | "name": "INSCRIPTION_RECORD_ID", 48 | "dataType": "int", 49 | "characterLength": "4", 50 | "numericPrecision": "10", 51 | "numericScale": "0", 52 | "ordinalPosition": 3, 53 | "primaryKeyIndicator": "Y", 54 | "multiActiveIndicator": "Y" 55 | }, 56 | { 57 | "name": "INSCRIPTION_TIMESTAMP", 58 | "dataType": "datetime2", 59 | "characterLength": "8", 60 | "numericPrecision": "27", 61 | "numericScale": "7", 62 | "ordinalPosition": 2, 63 | "primaryKeyIndicator": "Y", 64 | "multiActiveIndicator": "N" 65 | }, 66 | { 67 | "name": "OFFER_DESCRIPTION", 68 | "dataType": "nvarchar", 69 | "characterLength": "100", 70 | "numericPrecision": "0", 71 | "numericScale": "0", 72 | "ordinalPosition": 8, 73 | "primaryKeyIndicator": "N", 74 | "multiActiveIndicator": "N" 75 | }, 76 | { 77 | "name": "STATE_TIMESTAMP", 78 | "dataType": "datetime2", 79 | "characterLength": "8", 80 | "numericPrecision": "27", 81 | "numericScale": "7", 82 | "ordinalPosition": 4, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | } 86 | ] 87 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/200_Integration_Layer/dbo/SAT_MEMBERSHIP_PLAN_DETAIL.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SAT_MEMBERSHIP_PLAN_DETAIL", 3 | "database": "200_Integration_Layer", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 5, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 6, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 7, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "INSCRIPTION_RECORD_ID", 38 | "dataType": "int", 39 | "characterLength": "4", 40 | "numericPrecision": "10", 41 | "numericScale": "0", 42 | "ordinalPosition": 3, 43 | "primaryKeyIndicator": "Y", 44 | "multiActiveIndicator": "Y" 45 | }, 46 | { 47 | "name": "INSCRIPTION_TIMESTAMP", 48 | "dataType": "datetime2", 49 | "characterLength": "8", 50 | "numericPrecision": "27", 51 | "numericScale": "7", 52 | "ordinalPosition": 2, 53 | "primaryKeyIndicator": "Y", 54 | "multiActiveIndicator": "N" 55 | }, 56 | { 57 | "name": "MEMBERSHIP_PLAN_SK", 58 | "dataType": "binary", 59 | "characterLength": "16", 60 | "numericPrecision": "0", 61 | "numericScale": "0", 62 | "ordinalPosition": 1, 63 | "primaryKeyIndicator": "Y", 64 | "multiActiveIndicator": "N" 65 | }, 66 | { 67 | "name": "PLAN_DESCRIPTION", 68 | "dataType": "nvarchar", 69 | "characterLength": "100", 70 | "numericPrecision": "0", 71 | "numericScale": "0", 72 | "ordinalPosition": 8, 73 | "primaryKeyIndicator": "N", 74 | "multiActiveIndicator": "N" 75 | }, 76 | { 77 | "name": "STATE_TIMESTAMP", 78 | "dataType": "datetime2", 79 | "characterLength": "8", 80 | "numericPrecision": "27", 81 | "numericScale": "7", 82 | "ordinalPosition": 4, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | } 86 | ] 87 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/200_Integration_Layer/dbo/SAT_MEMBERSHIP_PLAN_VALUATION.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SAT_MEMBERSHIP_PLAN_VALUATION", 3 | "database": "200_Integration_Layer", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 6, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 7, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 8, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "INSCRIPTION_RECORD_ID", 38 | "dataType": "int", 39 | "characterLength": "4", 40 | "numericPrecision": "10", 41 | "numericScale": "0", 42 | "ordinalPosition": 4, 43 | "primaryKeyIndicator": "Y", 44 | "multiActiveIndicator": "Y" 45 | }, 46 | { 47 | "name": "INSCRIPTION_TIMESTAMP", 48 | "dataType": "datetime2", 49 | "characterLength": "8", 50 | "numericPrecision": "27", 51 | "numericScale": "7", 52 | "ordinalPosition": 3, 53 | "primaryKeyIndicator": "Y", 54 | "multiActiveIndicator": "N" 55 | }, 56 | { 57 | "name": "MEMBERSHIP_PLAN_SK", 58 | "dataType": "binary", 59 | "characterLength": "16", 60 | "numericPrecision": "0", 61 | "numericScale": "0", 62 | "ordinalPosition": 1, 63 | "primaryKeyIndicator": "Y", 64 | "multiActiveIndicator": "N" 65 | }, 66 | { 67 | "name": "PLAN_VALUATION_AMOUNT", 68 | "dataType": "numeric", 69 | "characterLength": "17", 70 | "numericPrecision": "38", 71 | "numericScale": "20", 72 | "ordinalPosition": 9, 73 | "primaryKeyIndicator": "N", 74 | "multiActiveIndicator": "N" 75 | }, 76 | { 77 | "name": "PLAN_VALUATION_DATE", 78 | "dataType": "datetime2", 79 | "characterLength": "8", 80 | "numericPrecision": "27", 81 | "numericScale": "7", 82 | "ordinalPosition": 2, 83 | "primaryKeyIndicator": "Y", 84 | "multiActiveIndicator": "Y" 85 | }, 86 | { 87 | "name": "STATE_TIMESTAMP", 88 | "dataType": "datetime2", 89 | "characterLength": "8", 90 | "numericPrecision": "27", 91 | "numericScale": "7", 92 | "ordinalPosition": 5, 93 | "primaryKeyIndicator": "N", 94 | "multiActiveIndicator": "N" 95 | } 96 | ] 97 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/200_Integration_Layer/dbo/SAT_SEGMENT.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SAT_SEGMENT", 3 | "database": "200_Integration_Layer", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 5, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATA_INDICATOR", 18 | "dataType": "varchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 6, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHECKSUM", 28 | "dataType": "binary", 29 | "characterLength": "16", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 7, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "INSCRIPTION_RECORD_ID", 38 | "dataType": "int", 39 | "characterLength": "4", 40 | "numericPrecision": "10", 41 | "numericScale": "0", 42 | "ordinalPosition": 3, 43 | "primaryKeyIndicator": "Y", 44 | "multiActiveIndicator": "Y" 45 | }, 46 | { 47 | "name": "INSCRIPTION_TIMESTAMP", 48 | "dataType": "datetime2", 49 | "characterLength": "8", 50 | "numericPrecision": "27", 51 | "numericScale": "7", 52 | "ordinalPosition": 2, 53 | "primaryKeyIndicator": "Y", 54 | "multiActiveIndicator": "N" 55 | }, 56 | { 57 | "name": "SEGMENT_DESCRIPTION", 58 | "dataType": "nvarchar", 59 | "characterLength": "100", 60 | "numericPrecision": "0", 61 | "numericScale": "0", 62 | "ordinalPosition": 8, 63 | "primaryKeyIndicator": "N", 64 | "multiActiveIndicator": "N" 65 | }, 66 | { 67 | "name": "SEGMENT_SK ", 68 | "dataType": "binary", 69 | "characterLength": "16", 70 | "numericPrecision": "0", 71 | "numericScale": "0", 72 | "ordinalPosition": 1, 73 | "primaryKeyIndicator": "Y", 74 | "multiActiveIndicator": "Y" 75 | }, 76 | { 77 | "name": "STATE_TIMESTAMP", 78 | "dataType": "datetime2", 79 | "characterLength": "8", 80 | "numericPrecision": "27", 81 | "numericScale": "7", 82 | "ordinalPosition": 4, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | } 86 | ] 87 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/200_Integration_Layer/dbo/vw_CUSTOMER_DERIVED.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vw_CUSTOMER_DERIVED", 3 | "database": "200_Integration_Layer", 4 | "schema": "bdv", 5 | "columns": [ 6 | { 7 | "name": "CHANGE_DATA_INDICATOR", 8 | "dataType": "varchar", 9 | "characterLength": "100", 10 | "numericPrecision": "0", 11 | "numericScale": "0", 12 | "ordinalPosition": 4, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CUSTOMER_ID", 18 | "dataType": "nvarchar", 19 | "characterLength": "100", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 1, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "INSCRIPTION_RECORD_ID", 28 | "dataType": "int", 29 | "characterLength": "4", 30 | "numericPrecision": "10", 31 | "numericScale": "0", 32 | "ordinalPosition": 5, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "INSCRIPTION_TIMESTAMP", 38 | "dataType": "datetime2", 39 | "characterLength": "8", 40 | "numericPrecision": "27", 41 | "numericScale": "7", 42 | "ordinalPosition": 2, 43 | "primaryKeyIndicator": "N", 44 | "multiActiveIndicator": "N" 45 | }, 46 | { 47 | "name": "REFERRAL_OFFER_CLEAN", 48 | "dataType": "varchar", 49 | "characterLength": "7", 50 | "numericPrecision": "0", 51 | "numericScale": "0", 52 | "ordinalPosition": 6, 53 | "primaryKeyIndicator": "N", 54 | "multiActiveIndicator": "N" 55 | }, 56 | { 57 | "name": "SOURCE_TIMESTAMP", 58 | "dataType": "datetime2", 59 | "characterLength": "8", 60 | "numericPrecision": "27", 61 | "numericScale": "7", 62 | "ordinalPosition": 3, 63 | "primaryKeyIndicator": "N", 64 | "multiActiveIndicator": "N" 65 | } 66 | ] 67 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/300_Presentation_Layer/dbo/DIM_CUSTOMER.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "DIM_CUSTOMER", 3 | "database": "300_Presentation_Layer", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "CHANGE_DATA_INDICATOR", 8 | "dataType": "varchar", 9 | "characterLength": "1", 10 | "numericPrecision": "0", 11 | "numericScale": "0", 12 | "ordinalPosition": 7, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CHANGE_DATETIME", 18 | "dataType": "datetime2", 19 | "characterLength": "8", 20 | "numericPrecision": "27", 21 | "numericScale": "7", 22 | "ordinalPosition": 5, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CHANGE_EXPIRY_DATETIME", 28 | "dataType": "datetime2", 29 | "characterLength": "8", 30 | "numericPrecision": "27", 31 | "numericScale": "7", 32 | "ordinalPosition": 6, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "CONTACT_NUMBER", 38 | "dataType": "nvarchar", 39 | "characterLength": "100", 40 | "numericPrecision": "0", 41 | "numericScale": "0", 42 | "ordinalPosition": 17, 43 | "primaryKeyIndicator": "N", 44 | "multiActiveIndicator": "N" 45 | }, 46 | { 47 | "name": "COUNTRY", 48 | "dataType": "nvarchar", 49 | "characterLength": "100", 50 | "numericPrecision": "0", 51 | "numericScale": "0", 52 | "ordinalPosition": 15, 53 | "primaryKeyIndicator": "N", 54 | "multiActiveIndicator": "N" 55 | }, 56 | { 57 | "name": "CUSTOMER_ID", 58 | "dataType": "nvarchar", 59 | "characterLength": "100", 60 | "numericPrecision": "0", 61 | "numericScale": "0", 62 | "ordinalPosition": 9, 63 | "primaryKeyIndicator": "N", 64 | "multiActiveIndicator": "N" 65 | }, 66 | { 67 | "name": "CUSTOMER_SK", 68 | "dataType": "binary", 69 | "characterLength": "16", 70 | "numericPrecision": "0", 71 | "numericScale": "0", 72 | "ordinalPosition": 8, 73 | "primaryKeyIndicator": "N", 74 | "multiActiveIndicator": "N" 75 | }, 76 | { 77 | "name": "DATE_OF_BIRTH", 78 | "dataType": "datetime2", 79 | "characterLength": "8", 80 | "numericPrecision": "27", 81 | "numericScale": "7", 82 | "ordinalPosition": 16, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | }, 86 | { 87 | "name": "DIM_CUSTOMER_SK", 88 | "dataType": "int", 89 | "characterLength": "4", 90 | "numericPrecision": "10", 91 | "numericScale": "0", 92 | "ordinalPosition": 1, 93 | "primaryKeyIndicator": "Y", 94 | "multiActiveIndicator": "N" 95 | }, 96 | { 97 | "name": "PREF_GENDER_PRONOUN", 98 | "dataType": "nvarchar", 99 | "characterLength": "100", 100 | "numericPrecision": "0", 101 | "numericScale": "0", 102 | "ordinalPosition": 12, 103 | "primaryKeyIndicator": "N", 104 | "multiActiveIndicator": "N" 105 | }, 106 | { 107 | "name": "GIVEN_NAME", 108 | "dataType": "nvarchar", 109 | "characterLength": "100", 110 | "numericPrecision": "0", 111 | "numericScale": "0", 112 | "ordinalPosition": 10, 113 | "primaryKeyIndicator": "N", 114 | "multiActiveIndicator": "N" 115 | }, 116 | { 117 | "name": "INSERT_MODULE_INSTANCE_ID", 118 | "dataType": "int", 119 | "characterLength": "4", 120 | "numericPrecision": "10", 121 | "numericScale": "0", 122 | "ordinalPosition": 2, 123 | "primaryKeyIndicator": "N", 124 | "multiActiveIndicator": "N" 125 | }, 126 | { 127 | "name": "POSTCODE", 128 | "dataType": "nvarchar", 129 | "characterLength": "100", 130 | "numericPrecision": "0", 131 | "numericScale": "0", 132 | "ordinalPosition": 14, 133 | "primaryKeyIndicator": "N", 134 | "multiActiveIndicator": "N" 135 | }, 136 | { 137 | "name": "RECORD_CHECKSUM_TYPE1", 138 | "dataType": "char", 139 | "characterLength": "32", 140 | "numericPrecision": "0", 141 | "numericScale": "0", 142 | "ordinalPosition": 3, 143 | "primaryKeyIndicator": "N", 144 | "multiActiveIndicator": "N" 145 | }, 146 | { 147 | "name": "RECORD_CHECKSUM_TYPE2", 148 | "dataType": "char", 149 | "characterLength": "32", 150 | "numericPrecision": "0", 151 | "numericScale": "0", 152 | "ordinalPosition": 4, 153 | "primaryKeyIndicator": "N", 154 | "multiActiveIndicator": "N" 155 | }, 156 | { 157 | "name": "STATE", 158 | "dataType": "nvarchar", 159 | "characterLength": "100", 160 | "numericPrecision": "0", 161 | "numericScale": "0", 162 | "ordinalPosition": 18, 163 | "primaryKeyIndicator": "N", 164 | "multiActiveIndicator": "N" 165 | }, 166 | { 167 | "name": "SUBURB", 168 | "dataType": "nvarchar", 169 | "characterLength": "100", 170 | "numericPrecision": "0", 171 | "numericScale": "0", 172 | "ordinalPosition": 13, 173 | "primaryKeyIndicator": "N", 174 | "multiActiveIndicator": "N" 175 | }, 176 | { 177 | "name": "SURNAME", 178 | "dataType": "nvarchar", 179 | "characterLength": "100", 180 | "numericPrecision": "0", 181 | "numericScale": "0", 182 | "ordinalPosition": 11, 183 | "primaryKeyIndicator": "N", 184 | "multiActiveIndicator": "N" 185 | } 186 | ] 187 | } -------------------------------------------------------------------------------- /TEAM/Files/PhysicalModel/300_Presentation_Layer/dbo/DIM_CUSTOMER_DAILY_SNAPSHOT.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "DIM_CUSTOMER_DAILY_SNAPSHOT", 3 | "database": "300_Presentation_Layer", 4 | "schema": "dbo", 5 | "columns": [ 6 | { 7 | "name": "AUDIT_TRAIL_ID", 8 | "dataType": "int", 9 | "characterLength": "4", 10 | "numericPrecision": "10", 11 | "numericScale": "0", 12 | "ordinalPosition": 2, 13 | "primaryKeyIndicator": "N", 14 | "multiActiveIndicator": "N" 15 | }, 16 | { 17 | "name": "CONTACT_NUMBER", 18 | "dataType": "nvarchar", 19 | "characterLength": "1000", 20 | "numericPrecision": "0", 21 | "numericScale": "0", 22 | "ordinalPosition": 10, 23 | "primaryKeyIndicator": "N", 24 | "multiActiveIndicator": "N" 25 | }, 26 | { 27 | "name": "CUSTOMER_ID", 28 | "dataType": "nvarchar", 29 | "characterLength": "1000", 30 | "numericPrecision": "0", 31 | "numericScale": "0", 32 | "ordinalPosition": 6, 33 | "primaryKeyIndicator": "N", 34 | "multiActiveIndicator": "N" 35 | }, 36 | { 37 | "name": "CUSTOMER_SK", 38 | "dataType": "nvarchar", 39 | "characterLength": "1000", 40 | "numericPrecision": "0", 41 | "numericScale": "0", 42 | "ordinalPosition": 5, 43 | "primaryKeyIndicator": "N", 44 | "multiActiveIndicator": "N" 45 | }, 46 | { 47 | "name": "DATE_OF_BIRTH", 48 | "dataType": "nvarchar", 49 | "characterLength": "1000", 50 | "numericPrecision": "0", 51 | "numericScale": "0", 52 | "ordinalPosition": 7, 53 | "primaryKeyIndicator": "N", 54 | "multiActiveIndicator": "N" 55 | }, 56 | { 57 | "name": "DIM_CUSTOMER_DAILY_SNAPSHOT_SK", 58 | "dataType": "binary", 59 | "characterLength": "16", 60 | "numericPrecision": "0", 61 | "numericScale": "0", 62 | "ordinalPosition": 1, 63 | "primaryKeyIndicator": "N", 64 | "multiActiveIndicator": "N" 65 | }, 66 | { 67 | "name": "GIVEN_NAME", 68 | "dataType": "nvarchar", 69 | "characterLength": "1000", 70 | "numericPrecision": "0", 71 | "numericScale": "0", 72 | "ordinalPosition": 8, 73 | "primaryKeyIndicator": "N", 74 | "multiActiveIndicator": "N" 75 | }, 76 | { 77 | "name": "INSCRIPTION_TIMESTAMP", 78 | "dataType": "datetime2", 79 | "characterLength": "8", 80 | "numericPrecision": "27", 81 | "numericScale": "7", 82 | "ordinalPosition": 3, 83 | "primaryKeyIndicator": "N", 84 | "multiActiveIndicator": "N" 85 | }, 86 | { 87 | "name": "RECORD_SOURCE_INDICATOR", 88 | "dataType": "nvarchar", 89 | "characterLength": "100", 90 | "numericPrecision": "0", 91 | "numericScale": "0", 92 | "ordinalPosition": 4, 93 | "primaryKeyIndicator": "N", 94 | "multiActiveIndicator": "N" 95 | }, 96 | { 97 | "name": "REFERRAL_OFFER_CLEAN", 98 | "dataType": "nvarchar", 99 | "characterLength": "1000", 100 | "numericPrecision": "0", 101 | "numericScale": "0", 102 | "ordinalPosition": 11, 103 | "primaryKeyIndicator": "N", 104 | "multiActiveIndicator": "N" 105 | }, 106 | { 107 | "name": "SUBURB", 108 | "dataType": "nvarchar", 109 | "characterLength": "1000", 110 | "numericPrecision": "0", 111 | "numericScale": "0", 112 | "ordinalPosition": 9, 113 | "primaryKeyIndicator": "N", 114 | "multiActiveIndicator": "N" 115 | } 116 | ] 117 | } -------------------------------------------------------------------------------- /TEAM/FodyWeavers.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | -------------------------------------------------------------------------------- /TEAM/Form_About.Designer.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using System.Windows.Forms; 3 | 4 | namespace TEAM 5 | { 6 | partial class FormAbout 7 | { 8 | /// 9 | /// Required designer variable. 10 | /// 11 | private System.ComponentModel.IContainer components = null; 12 | 13 | /// 14 | /// Clean up any resources being used. 15 | /// 16 | /// true if managed resources should be disposed; otherwise, false. 17 | protected override void Dispose(bool disposing) 18 | { 19 | if (disposing && (components != null)) 20 | { 21 | components.Dispose(); 22 | } 23 | base.Dispose(disposing); 24 | } 25 | 26 | #region Windows Form Designer generated code 27 | 28 | /// 29 | /// Required method for Designer support - do not modify 30 | /// the contents of this method with the code editor. 31 | /// 32 | private void InitializeComponent() 33 | { 34 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormAbout)); 35 | buttonClose = new Button(); 36 | textBox1 = new TextBox(); 37 | linkLabel1 = new LinkLabel(); 38 | SuspendLayout(); 39 | // 40 | // buttonClose 41 | // 42 | buttonClose.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; 43 | buttonClose.Location = new System.Drawing.Point(110, 259); 44 | buttonClose.Name = "buttonClose"; 45 | buttonClose.Size = new System.Drawing.Size(109, 40); 46 | buttonClose.TabIndex = 1; 47 | buttonClose.Text = "Close"; 48 | buttonClose.UseVisualStyleBackColor = true; 49 | buttonClose.Click += buttonClose_Click; 50 | // 51 | // textBox1 52 | // 53 | textBox1.BorderStyle = BorderStyle.None; 54 | textBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); 55 | textBox1.Location = new System.Drawing.Point(41, 56); 56 | textBox1.Name = "textBox1"; 57 | textBox1.Size = new System.Drawing.Size(264, 13); 58 | textBox1.TabIndex = 2; 59 | textBox1.Text = "Taxonomy of ETL Automation Metadata"; 60 | textBox1.TextAlign = HorizontalAlignment.Center; 61 | // 62 | // linkLabel1 63 | // 64 | linkLabel1.AutoSize = true; 65 | linkLabel1.Location = new System.Drawing.Point(13, 216); 66 | linkLabel1.Name = "linkLabel1"; 67 | linkLabel1.Size = new System.Drawing.Size(315, 13); 68 | linkLabel1.TabIndex = 21; 69 | linkLabel1.TabStop = true; 70 | linkLabel1.Text = "https://github.com/data-solution-automation-engine/TEAM"; 71 | linkLabel1.LinkClicked += linkLabel1_LinkClicked_1; 72 | // 73 | // FormAbout 74 | // 75 | AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); 76 | AutoScaleMode = AutoScaleMode.Dpi; 77 | BackColor = System.Drawing.SystemColors.ControlLightLight; 78 | BackgroundImage = (System.Drawing.Image)resources.GetObject("$this.BackgroundImage"); 79 | BackgroundImageLayout = ImageLayout.Center; 80 | ClientSize = new System.Drawing.Size(334, 311); 81 | ControlBox = false; 82 | Controls.Add(linkLabel1); 83 | Controls.Add(textBox1); 84 | Controls.Add(buttonClose); 85 | DoubleBuffered = true; 86 | Icon = (System.Drawing.Icon)resources.GetObject("$this.Icon"); 87 | MaximizeBox = false; 88 | MaximumSize = new System.Drawing.Size(350, 350); 89 | MinimizeBox = false; 90 | MinimumSize = new System.Drawing.Size(350, 350); 91 | Name = "FormAbout"; 92 | StartPosition = FormStartPosition.CenterScreen; 93 | Text = "About"; 94 | ResumeLayout(false); 95 | PerformLayout(); 96 | } 97 | 98 | private void richTextBox1_LinkClicked(object sender, System.EventArgs e) 99 | { 100 | throw new System.NotImplementedException(); 101 | } 102 | 103 | #endregion 104 | private System.Windows.Forms.Button buttonClose; 105 | private System.Windows.Forms.TextBox textBox1; 106 | private LinkLabel linkLabelTeam; 107 | private LinkLabel linkLabel1; 108 | } 109 | } -------------------------------------------------------------------------------- /TEAM/Form_About.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Windows.Forms; 4 | 5 | namespace TEAM 6 | { 7 | public partial class FormAbout : FormBase 8 | { 9 | public FormAbout() 10 | { 11 | AutoScaleMode = AutoScaleMode.Dpi; 12 | InitializeComponent(); 13 | FormBorderStyle = FormBorderStyle.FixedSingle; 14 | } 15 | 16 | private void buttonClose_Click(object sender, EventArgs e) 17 | { 18 | Close(); 19 | } 20 | 21 | private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 22 | { 23 | // Specify that the link was visited. 24 | linkLabelTeam.LinkVisited = true; 25 | // Navigate to a URL. 26 | Process.Start("http://www.roelantvos.com"); 27 | } 28 | 29 | private void linkLabel1_LinkClicked_1(object sender, LinkLabelLinkClickedEventArgs e) 30 | { 31 | // Specify that the link was visited. 32 | linkLabelTeam.LinkVisited = true; 33 | // Navigate to a URL. 34 | Process.Start("https://github.com/RoelantVos/TEAM"); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /TEAM/Form_Base.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace TEAM 2 | { 3 | partial class FormBase 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | SuspendLayout(); 32 | // 33 | // FormBase 34 | // 35 | AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); 36 | AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; 37 | ClientSize = new System.Drawing.Size(284, 261); 38 | Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); 39 | Name = "FormBase"; 40 | Text = "FormBase"; 41 | ResumeLayout(false); 42 | } 43 | #endregion 44 | } 45 | } -------------------------------------------------------------------------------- /TEAM/Form_Base.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | using TEAM_Library; 4 | 5 | namespace TEAM 6 | { 7 | public partial class FormBase : Form 8 | { 9 | protected FormMain MyParent; 10 | 11 | public FormBase() 12 | { 13 | AutoScaleMode = AutoScaleMode.Dpi; 14 | InitializeComponent(); 15 | } 16 | 17 | public FormBase(FormMain myParent) 18 | { 19 | AutoScaleMode = AutoScaleMode.Dpi; 20 | MyParent = myParent; 21 | InitializeComponent(); 22 | } 23 | 24 | /// 25 | /// Reusable global parameters. Accessed throughout the app. 26 | /// 27 | public static GlobalParameters globalParameters { get; set; } = new GlobalParameters(); 28 | 29 | /// 30 | /// TEAM configurations (e.g. conventions, prefixes, attribute names). 31 | /// 32 | public static TeamConfiguration TeamConfiguration { get; set; } = new TeamConfiguration(); 33 | 34 | #region Metadata objects in memory 35 | 36 | // In-memory representation of the Physical Model Metadata. 37 | public static TeamPhysicalModel PhysicalModel { get; set; } = new TeamPhysicalModel(); 38 | 39 | // In-memory representation of the Attribute Mapping Metadata. 40 | public static TeamDataItemMapping AttributeMapping { get; set; } = new TeamDataItemMapping(); 41 | 42 | #endregion 43 | 44 | /// 45 | /// TEAM working environment collection. 46 | /// 47 | public static TeamEnvironmentCollection TeamEnvironmentCollection { get; set; } = new TeamEnvironmentCollection(); 48 | 49 | /// 50 | /// Instance of the export configuration for JSON files (options). 51 | /// 52 | public static JsonExportSetting JsonExportSetting { get; set; } = new JsonExportSetting(); 53 | 54 | /// 55 | /// Instance of the validation settings (validation options). 56 | /// 57 | public static ValidationSetting ValidationSetting { get; set; } = new ValidationSetting(); 58 | 59 | // Create the grid views. 60 | internal static DataGridViewDataObjects _dataGridViewDataObjects; 61 | internal static DataGridViewDataItems _dataGridViewDataItems; 62 | internal static DataGridViewPhysicalModel _dataGridViewPhysicalModel; 63 | 64 | internal static EventLog TeamEventLog { get; set; } = new EventLog(); 65 | 66 | public class FilterEventArgs : EventArgs 67 | { 68 | public bool DoFilter { get; private set; } 69 | 70 | public FilterEventArgs(bool doFilter) 71 | { 72 | DoFilter = doFilter; 73 | } 74 | } 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /TEAM/Form_Connection_Selection.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | 11 | namespace TEAM 12 | { 13 | public partial class Form_Connection_Selection : Form 14 | { 15 | private string _value { get; set; } 16 | 17 | public Form_Connection_Selection() 18 | { 19 | AutoScaleMode = AutoScaleMode.Dpi; 20 | InitializeComponent(); 21 | } 22 | 23 | private void buttonCancel_Click(object sender, EventArgs e) 24 | { 25 | this.DialogResult = System.Windows.Forms.DialogResult.Cancel; 26 | this.Close(); 27 | } 28 | 29 | private void radioButtonSqlServer_CheckedChanged(object sender, EventArgs e) 30 | { 31 | if (radioButtonSqlServer.Checked) 32 | { 33 | _value = "sqlserver"; 34 | } 35 | } 36 | 37 | private void radioButtonSnowflake_CheckedChanged(object sender, EventArgs e) 38 | { 39 | if (radioButtonSnowflake.Checked) 40 | { 41 | _value = "snowflake"; 42 | } 43 | } 44 | public string GetValue() 45 | { 46 | return this._value; 47 | } 48 | 49 | private void buttonSelect_Click(object sender, EventArgs e) 50 | { 51 | this.DialogResult = DialogResult.OK; 52 | this.Close(); 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /TEAM/Form_Edit_DataObject.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace TEAM 2 | { 3 | partial class Form_Edit_DataObject 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form_Edit_DataObject)); 32 | buttonSave = new System.Windows.Forms.Button(); 33 | buttonClose = new System.Windows.Forms.Button(); 34 | richTextBoxFormContent = new System.Windows.Forms.RichTextBox(); 35 | SuspendLayout(); 36 | // 37 | // buttonSave 38 | // 39 | buttonSave.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; 40 | buttonSave.Location = new System.Drawing.Point(1057, 582); 41 | buttonSave.Name = "buttonSave"; 42 | buttonSave.Size = new System.Drawing.Size(109, 40); 43 | buttonSave.TabIndex = 2; 44 | buttonSave.Text = "Save"; 45 | buttonSave.UseVisualStyleBackColor = true; 46 | buttonSave.Click += SaveJson; 47 | // 48 | // buttonClose 49 | // 50 | buttonClose.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; 51 | buttonClose.Location = new System.Drawing.Point(1172, 582); 52 | buttonClose.Name = "buttonClose"; 53 | buttonClose.Size = new System.Drawing.Size(109, 40); 54 | buttonClose.TabIndex = 3; 55 | buttonClose.Text = "Close"; 56 | buttonClose.UseVisualStyleBackColor = true; 57 | buttonClose.Click += buttonClose_Click; 58 | // 59 | // richTextBoxFormContent 60 | // 61 | richTextBoxFormContent.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; 62 | richTextBoxFormContent.BackColor = System.Drawing.SystemColors.Window; 63 | richTextBoxFormContent.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 64 | richTextBoxFormContent.HideSelection = false; 65 | richTextBoxFormContent.Location = new System.Drawing.Point(12, 12); 66 | richTextBoxFormContent.Name = "richTextBoxFormContent"; 67 | richTextBoxFormContent.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.ForcedVertical; 68 | richTextBoxFormContent.Size = new System.Drawing.Size(1269, 564); 69 | richTextBoxFormContent.TabIndex = 4; 70 | richTextBoxFormContent.Text = ""; 71 | // 72 | // Form_Edit_DataObject 73 | // 74 | AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); 75 | AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; 76 | ClientSize = new System.Drawing.Size(1293, 634); 77 | Controls.Add(richTextBoxFormContent); 78 | Controls.Add(buttonClose); 79 | Controls.Add(buttonSave); 80 | Icon = (System.Drawing.Icon)resources.GetObject("$this.Icon"); 81 | Name = "Form_Edit_DataObject"; 82 | StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 83 | Text = "Edit"; 84 | ResumeLayout(false); 85 | } 86 | 87 | #endregion 88 | private System.Windows.Forms.Button buttonSave; 89 | private System.Windows.Forms.Button buttonClose; 90 | private System.Windows.Forms.RichTextBox richTextBoxFormContent; 91 | } 92 | } -------------------------------------------------------------------------------- /TEAM/Form_Edit_DataObject.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System; 3 | using System.Data; 4 | using System.Windows.Forms; 5 | 6 | namespace TEAM 7 | { 8 | public partial class Form_Edit_DataObject : FormBase 9 | { 10 | public DataGridViewCell EditedCell { get; set; } 11 | public DataWarehouseAutomation.DataObject EditedDataObject { get; set; } 12 | 13 | public Form_Edit_DataObject() 14 | { 15 | AutoScaleMode = AutoScaleMode.Dpi; 16 | InitializeComponent(); 17 | } 18 | 19 | public Form_Edit_DataObject(DataGridViewCell cell) 20 | { 21 | AutoScaleMode = AutoScaleMode.Dpi; 22 | InitializeComponent(); 23 | EditedCell = cell; 24 | 25 | DataRowView dataBoundItem = (DataRowView)EditedCell.OwningRow.DataBoundItem; 26 | 27 | EditedDataObject = (DataWarehouseAutomation.DataObject)dataBoundItem.Row[cell.ColumnIndex]; 28 | 29 | richTextBoxFormContent.Text = JsonConvert.SerializeObject(EditedDataObject, Formatting.Indented); 30 | } 31 | 32 | #region Save button delegate 33 | 34 | delegate void ShowSaveButtonCallBack(bool showSaveButton); 35 | public void ShowSaveButton(bool showSaveButton) 36 | { 37 | if (buttonSave.InvokeRequired) 38 | { 39 | var d = new ShowSaveButtonCallBack(ShowSaveButton); 40 | try 41 | { 42 | Invoke(d, showSaveButton); 43 | } 44 | catch 45 | { 46 | // ignored 47 | } 48 | } 49 | else 50 | { 51 | try 52 | { 53 | buttonSave.Visible = false; 54 | } 55 | catch 56 | { 57 | // ignored 58 | } 59 | } 60 | } 61 | 62 | #endregion 63 | 64 | #region Form name delegate 65 | delegate void SetFormNameCallBack(string text); 66 | 67 | public void SetFormName(string text) 68 | { 69 | if (InvokeRequired) 70 | { 71 | var d = new SetFormNameCallBack(SetFormName); 72 | try 73 | { 74 | Invoke(d, text); 75 | } 76 | catch 77 | { 78 | // ignored 79 | } 80 | } 81 | else 82 | { 83 | try 84 | { 85 | Text = text; 86 | } 87 | catch 88 | { 89 | // ignored 90 | } 91 | } 92 | } 93 | #endregion 94 | 95 | // Multi threading delegate for updating the user back in the original form. 96 | delegate void SetTextCallBack(string text); 97 | public void SetText(string text) 98 | { 99 | if (richTextBoxFormContent.InvokeRequired) 100 | { 101 | var d = new SetTextCallBack(SetText); 102 | try 103 | { 104 | Invoke(d, text); 105 | } 106 | catch 107 | { 108 | // ignored 109 | } 110 | } 111 | else 112 | { 113 | try 114 | { 115 | richTextBoxFormContent.AppendText(text); 116 | } 117 | catch 118 | { 119 | // ignored 120 | } 121 | } 122 | } 123 | 124 | #region OnSave event for passing back values to main grid 125 | public delegate void OnSaveEventHandler(object sender, OnSaveEventArgs e); 126 | public event OnSaveEventHandler OnSave; 127 | 128 | public class OnSaveEventArgs : EventArgs 129 | { 130 | public string RichTextBoxContents { get; set; } 131 | public DataGridViewCell CurrentCell { get; set; } 132 | 133 | public OnSaveEventArgs(string value, DataGridViewCell cell) 134 | { 135 | RichTextBoxContents = value; 136 | CurrentCell = cell; 137 | } 138 | } 139 | 140 | private void SaveJson(object sender, EventArgs e) 141 | { 142 | if (OnSave == null) 143 | return; 144 | 145 | OnSaveEventArgs args = new OnSaveEventArgs(richTextBoxFormContent.Text, EditedCell); 146 | OnSave(this, args); 147 | 148 | Close(); 149 | } 150 | 151 | #endregion 152 | 153 | private void buttonClose_Click(object sender, EventArgs e) 154 | { 155 | Close(); 156 | } 157 | } 158 | } 159 | -------------------------------------------------------------------------------- /TEAM/Form_Edit_DataObjectMapping.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace TEAM 2 | { 3 | partial class Form_Edit_DataObjectMapping 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form_Edit_DataObjectMapping)); 32 | buttonSave = new System.Windows.Forms.Button(); 33 | buttonClose = new System.Windows.Forms.Button(); 34 | richTextBoxFormContent = new System.Windows.Forms.RichTextBox(); 35 | SuspendLayout(); 36 | // 37 | // buttonSave 38 | // 39 | buttonSave.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; 40 | buttonSave.Location = new System.Drawing.Point(1057, 648); 41 | buttonSave.Name = "buttonSave"; 42 | buttonSave.Size = new System.Drawing.Size(109, 40); 43 | buttonSave.TabIndex = 2; 44 | buttonSave.Text = "Save"; 45 | buttonSave.UseVisualStyleBackColor = true; 46 | buttonSave.Click += SaveJson; 47 | // 48 | // buttonClose 49 | // 50 | buttonClose.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; 51 | buttonClose.Location = new System.Drawing.Point(1172, 648); 52 | buttonClose.Name = "buttonClose"; 53 | buttonClose.Size = new System.Drawing.Size(109, 40); 54 | buttonClose.TabIndex = 3; 55 | buttonClose.Text = "Close"; 56 | buttonClose.UseVisualStyleBackColor = true; 57 | buttonClose.Click += buttonClose_Click; 58 | // 59 | // richTextBoxFormContent 60 | // 61 | richTextBoxFormContent.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; 62 | richTextBoxFormContent.BackColor = System.Drawing.SystemColors.Window; 63 | richTextBoxFormContent.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 64 | richTextBoxFormContent.HideSelection = false; 65 | richTextBoxFormContent.Location = new System.Drawing.Point(12, 12); 66 | richTextBoxFormContent.Name = "richTextBoxFormContent"; 67 | richTextBoxFormContent.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.ForcedVertical; 68 | richTextBoxFormContent.Size = new System.Drawing.Size(1269, 631); 69 | richTextBoxFormContent.TabIndex = 4; 70 | richTextBoxFormContent.Text = ""; 71 | // 72 | // Form_Edit_DataObjectMapping 73 | // 74 | AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); 75 | AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; 76 | ClientSize = new System.Drawing.Size(1293, 700); 77 | Controls.Add(richTextBoxFormContent); 78 | Controls.Add(buttonClose); 79 | Controls.Add(buttonSave); 80 | Icon = (System.Drawing.Icon)resources.GetObject("$this.Icon"); 81 | Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); 82 | Name = "Form_Edit_DataObjectMapping"; 83 | StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 84 | Text = "Edit"; 85 | ResumeLayout(false); 86 | } 87 | 88 | #endregion 89 | private System.Windows.Forms.Button buttonSave; 90 | private System.Windows.Forms.Button buttonClose; 91 | private System.Windows.Forms.RichTextBox richTextBoxFormContent; 92 | } 93 | } -------------------------------------------------------------------------------- /TEAM/Form_Edit_DataObjectMapping.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System; 3 | using System.Windows.Forms; 4 | using DataWarehouseAutomation; 5 | 6 | namespace TEAM 7 | { 8 | public partial class Form_Edit_DataObjectMapping : FormBase 9 | { 10 | public DataGridViewRow EditedRow { get; set; } 11 | public DataObjectMapping EditedDataObjectMapping { get; set; } 12 | 13 | public Form_Edit_DataObjectMapping() 14 | { 15 | AutoScaleMode = AutoScaleMode.Dpi; 16 | InitializeComponent(); 17 | } 18 | 19 | public Form_Edit_DataObjectMapping(DataGridViewRow row, DataObjectMapping dataObjectMapping) 20 | { 21 | AutoScaleMode = AutoScaleMode.Dpi; 22 | InitializeComponent(); 23 | EditedRow = row; 24 | EditedDataObjectMapping = dataObjectMapping; 25 | 26 | //DataRowView dataBoundItem = (DataRowView)EditedRow.DataBoundItem; 27 | 28 | //EditedDataObjectMapping = (DataWarehouseAutomation.DataObjectMapping)dataBoundItem.Row[cell.ColumnIndex]; 29 | 30 | //var dataObjectMapping = DataGridViewDataObjects.GetDataObjectMapping(row); 31 | //string dataObjectMappingJson = JsonConvert.SerializeObject(dataObjectMapping, Formatting.Indented); 32 | 33 | richTextBoxFormContent.Text = JsonConvert.SerializeObject(EditedDataObjectMapping, Formatting.Indented); 34 | } 35 | 36 | #region Save button delegate 37 | 38 | delegate void ShowSaveButtonCallBack(bool showSaveButton); 39 | public void ShowSaveButton(bool showSaveButton) 40 | { 41 | if (buttonSave.InvokeRequired) 42 | { 43 | var d = new ShowSaveButtonCallBack(ShowSaveButton); 44 | try 45 | { 46 | Invoke(d, showSaveButton); 47 | } 48 | catch 49 | { 50 | // ignored 51 | } 52 | } 53 | else 54 | { 55 | try 56 | { 57 | buttonSave.Visible = false; 58 | } 59 | catch 60 | { 61 | // ignored 62 | } 63 | } 64 | } 65 | 66 | #endregion 67 | 68 | #region Form name delegate 69 | 70 | delegate void SetFormNameCallBack(string text); 71 | 72 | public void SetFormName(string text) 73 | { 74 | if (InvokeRequired) 75 | { 76 | var d = new SetFormNameCallBack(SetFormName); 77 | try 78 | { 79 | Invoke(d, text); 80 | } 81 | catch 82 | { 83 | // ignored 84 | } 85 | } 86 | else 87 | { 88 | try 89 | { 90 | Text = text; 91 | } 92 | catch 93 | { 94 | // ignored 95 | } 96 | } 97 | } 98 | 99 | #endregion 100 | 101 | #region Set text delegate 102 | 103 | // Multi threading delegate for updating the user back in the original form. 104 | delegate void SetTextCallBack(string text); 105 | public void SetText(string text) 106 | { 107 | if (richTextBoxFormContent.InvokeRequired) 108 | { 109 | var d = new SetTextCallBack(SetText); 110 | try 111 | { 112 | Invoke(d, text); 113 | } 114 | catch 115 | { 116 | // ignored 117 | } 118 | } 119 | else 120 | { 121 | try 122 | { 123 | richTextBoxFormContent.AppendText(text); 124 | } 125 | catch 126 | { 127 | // ignored 128 | } 129 | } 130 | } 131 | 132 | #endregion 133 | 134 | #region OnSave event for passing back values to main grid 135 | 136 | public delegate void OnSaveEventHandler(object sender, OnSaveEventArgs e); 137 | public event OnSaveEventHandler OnSave; 138 | 139 | public class OnSaveEventArgs : EventArgs 140 | { 141 | public string RichTextBoxContents { get; set; } 142 | public DataGridViewRow CurrentRow { get; set; } 143 | 144 | public OnSaveEventArgs(string value, DataGridViewRow row) 145 | { 146 | RichTextBoxContents = value; 147 | CurrentRow = row; 148 | } 149 | } 150 | 151 | private void SaveJson(object sender, EventArgs e) 152 | { 153 | if (OnSave == null) 154 | return; 155 | 156 | OnSaveEventArgs args = new OnSaveEventArgs(richTextBoxFormContent.Text, EditedRow); 157 | OnSave(this, args); 158 | 159 | Close(); 160 | } 161 | 162 | #endregion 163 | 164 | private void buttonClose_Click(object sender, EventArgs e) 165 | { 166 | Close(); 167 | } 168 | } 169 | } 170 | -------------------------------------------------------------------------------- /TEAM/Libraries/Snowflake.Data.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/data-solution-automation-engine/TEAM/e30f0cc26f7afda7e8c88081aec4daf618b339bd/TEAM/Libraries/Snowflake.Data.dll -------------------------------------------------------------------------------- /TEAM/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | using System.Windows.Forms; 4 | 5 | namespace TEAM 6 | { 7 | static class Program 8 | { 9 | /// 10 | /// The main entry point for the application. 11 | /// 12 | [STAThread] 13 | static void Main() 14 | { 15 | Application.EnableVisualStyles(); 16 | Application.SetHighDpiMode(HighDpiMode.SystemAware); 17 | Application.SetCompatibleTextRenderingDefault(false); 18 | Application.Run(new FormMain()); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /TEAM/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("TEAM")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("TEAM")] 13 | [assembly: AssemblyCopyright("Open Source - Roelant Vos")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("0d140741-01fc-431d-8f81-e52168dd870a")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.6.5.3")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /TEAM/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace TEAM.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /TEAM/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /TEAM/Properties/app.manifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 54 | -------------------------------------------------------------------------------- /TEAM/Resources/CogIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/data-solution-automation-engine/TEAM/e30f0cc26f7afda7e8c88081aec4daf618b339bd/TEAM/Resources/CogIcon.ico -------------------------------------------------------------------------------- /TEAM/Resources/CubeIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/data-solution-automation-engine/TEAM/e30f0cc26f7afda7e8c88081aec4daf618b339bd/TEAM/Resources/CubeIcon.ico -------------------------------------------------------------------------------- /TEAM/Resources/DocumentationIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/data-solution-automation-engine/TEAM/e30f0cc26f7afda7e8c88081aec4daf618b339bd/TEAM/Resources/DocumentationIcon.ico -------------------------------------------------------------------------------- /TEAM/Resources/ETLIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/data-solution-automation-engine/TEAM/e30f0cc26f7afda7e8c88081aec4daf618b339bd/TEAM/Resources/ETLIcon.ico -------------------------------------------------------------------------------- /TEAM/Resources/ExitApplication.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/data-solution-automation-engine/TEAM/e30f0cc26f7afda7e8c88081aec4daf618b339bd/TEAM/Resources/ExitApplication.ico -------------------------------------------------------------------------------- /TEAM/Resources/HelpIconSmall.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/data-solution-automation-engine/TEAM/e30f0cc26f7afda7e8c88081aec4daf618b339bd/TEAM/Resources/HelpIconSmall.ico -------------------------------------------------------------------------------- /TEAM/Resources/LinkIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/data-solution-automation-engine/TEAM/e30f0cc26f7afda7e8c88081aec4daf618b339bd/TEAM/Resources/LinkIcon.ico -------------------------------------------------------------------------------- /TEAM/Resources/OpenDirectoryIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/data-solution-automation-engine/TEAM/e30f0cc26f7afda7e8c88081aec4daf618b339bd/TEAM/Resources/OpenDirectoryIcon.ico -------------------------------------------------------------------------------- /TEAM/Resources/OpenFileIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/data-solution-automation-engine/TEAM/e30f0cc26f7afda7e8c88081aec4daf618b339bd/TEAM/Resources/OpenFileIcon.ico -------------------------------------------------------------------------------- /TEAM/Resources/Ravos-logo-small.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/data-solution-automation-engine/TEAM/e30f0cc26f7afda7e8c88081aec4daf618b339bd/TEAM/Resources/Ravos-logo-small.ico -------------------------------------------------------------------------------- /TEAM/Resources/Ravos-logo-small_transparant.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/data-solution-automation-engine/TEAM/e30f0cc26f7afda7e8c88081aec4daf618b339bd/TEAM/Resources/Ravos-logo-small_transparant.ico -------------------------------------------------------------------------------- /TEAM/Resources/SaveFile.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/data-solution-automation-engine/TEAM/e30f0cc26f7afda7e8c88081aec4daf618b339bd/TEAM/Resources/SaveFile.ico -------------------------------------------------------------------------------- /TEAM/Resources/Time.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/data-solution-automation-engine/TEAM/e30f0cc26f7afda7e8c88081aec4daf618b339bd/TEAM/Resources/Time.png -------------------------------------------------------------------------------- /TEAM/Resources/database_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/data-solution-automation-engine/TEAM/e30f0cc26f7afda7e8c88081aec4daf618b339bd/TEAM/Resources/database_icon.png -------------------------------------------------------------------------------- /TEAM/Resources/fit-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/data-solution-automation-engine/TEAM/e30f0cc26f7afda7e8c88081aec4daf618b339bd/TEAM/Resources/fit-16.png -------------------------------------------------------------------------------- /TEAM/Resources/ghost-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/data-solution-automation-engine/TEAM/e30f0cc26f7afda7e8c88081aec4daf618b339bd/TEAM/Resources/ghost-icon.png -------------------------------------------------------------------------------- /TEAM/Resources/log-file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/data-solution-automation-engine/TEAM/e30f0cc26f7afda7e8c88081aec4daf618b339bd/TEAM/Resources/log-file.png -------------------------------------------------------------------------------- /TEAM/Resources/minus-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/data-solution-automation-engine/TEAM/e30f0cc26f7afda7e8c88081aec4daf618b339bd/TEAM/Resources/minus-16.png -------------------------------------------------------------------------------- /TEAM/Resources/plus-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/data-solution-automation-engine/TEAM/e30f0cc26f7afda7e8c88081aec4daf618b339bd/TEAM/Resources/plus-16.png -------------------------------------------------------------------------------- /TEAM/Resources/transparent-green-checkmark-hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/data-solution-automation-engine/TEAM/e30f0cc26f7afda7e8c88081aec4daf618b339bd/TEAM/Resources/transparent-green-checkmark-hi.png -------------------------------------------------------------------------------- /TEAM/Scripts/generateSampleIntegrationSchemaView.sql: -------------------------------------------------------------------------------- 1 | CREATE OR ALTER VIEW [bdv].[vw_CUSTOMER_DERIVED] AS 2 | SELECT b.CUSTOMER_ID 3 | ,a.[INSCRIPTION_TIMESTAMP] 4 | ,a.[STATE_TIMESTAMP] AS [SOURCE_TIMESTAMP] 5 | --,a.[LOAD_END_DATETIME] 6 | --,a.[CURRENT_RECORD_INDICATOR] 7 | --,a.[ETL_INSERT_RUN_ID] 8 | --,[ETL_UPDATE_RUN_ID] 9 | ,a.[CHANGE_DATA_INDICATOR] 10 | ,a.[INSCRIPTION_RECORD_ID] 11 | ,CASE [REFERRAL_OFFER_MADE_INDICATOR] 12 | WHEN '1' THEN 'True' 13 | WHEN '0' THEN 'False' 14 | ELSE 'Unknown' 15 | END AS REFERRAL_OFFER_CLEAN 16 | FROM dbo.[SAT_CUSTOMER] a 17 | JOIN dbo.[HUB_CUSTOMER] b ON a.CUSTOMER_SK = b.CUSTOMER_SK -------------------------------------------------------------------------------- /TEAM/Scripts/generateSamplePresentationSchema.sql: -------------------------------------------------------------------------------- 1 | IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[DIM_CUSTOMER]') AND type in (N'U')) DROP TABLE [dbo].[DIM_CUSTOMER] 2 | 3 | CREATE TABLE [dbo].[DIM_CUSTOMER]( 4 | [DIM_CUSTOMER_SK] [int] IDENTITY(1,1) NOT NULL, 5 | [INSERT_MODULE_INSTANCE_ID] [int] NOT NULL, 6 | [RECORD_CHECKSUM_TYPE1] [char](32) NOT NULL, 7 | [RECORD_CHECKSUM_TYPE2] [char](32) NOT NULL, 8 | [CHANGE_DATETIME] [datetime2](7) NOT NULL, 9 | [CHANGE_EXPIRY_DATETIME] [datetime2](7) NOT NULL, 10 | [CHANGE_DATA_INDICATOR] [varchar](1) NOT NULL, 11 | [CUSTOMER_SK] [binary](16) NOT NULL, 12 | [CUSTOMER_ID] [nvarchar](100) NOT NULL, 13 | [GIVEN_NAME] [nvarchar](100) NOT NULL, 14 | [SURNAME] [nvarchar](100) NOT NULL, 15 | [PREF_GENDER_PRONOUN] [nvarchar](100) NOT NULL, 16 | [SUBURB] [nvarchar](100) NOT NULL, 17 | [POSTCODE] [nvarchar](100) NOT NULL, 18 | [COUNTRY] [nvarchar](100) NOT NULL, 19 | [DATE_OF_BIRTH] [datetime2](7) NOT NULL, 20 | [CONTACT_NUMBER] [nvarchar](100) NULL, 21 | [STATE] [nvarchar](100) NULL, 22 | CONSTRAINT [PK_DIM_CUSTOMER_TBL] PRIMARY KEY CLUSTERED 23 | ( 24 | [DIM_CUSTOMER_SK] ASC 25 | )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] 26 | ) ON [PRIMARY] 27 | -------------------------------------------------------------------------------- /TEAM/Support/DataObjectMappingList.sql: -------------------------------------------------------------------------------- 1 | /* 2 | This query prepares a list of data object mappings based on a SQL server catalog. 3 | The resulting JSON file can be imported in TEAM to create a list of mappings that are essentially one-to-one without having to type them in. 4 | */ 5 | 6 | SELECT 7 | 1 AS enabledIndicator 8 | ,HASHBYTES('MD5',src.TABLE_SCHEMA+'|'+src.TABLE_CATALOG+'|'+src.TABLE_NAME) AS tableMappingHash 9 | ,src.TABLE_NAME AS sourceTable 10 | ,'StagingConnectionInternalId' AS sourceConnectionKey 11 | ,'STG__'+src.TABLE_NAME as targetTable 12 | ,'PsaConnectionInternalId' as targetConnectionKey 13 | ,COALESCE(pk.KEY_COLUMNS,'') as businessKeyDefinition 14 | ,'' AS filterCriteria 15 | FROM INFORMATION_SCHEMA.TABLES src 16 | LEFT JOIN 17 | ( 18 | SELECT 19 | CONSTRAINT_SCHEMA 20 | ,TABLE_NAME 21 | --,CHARINDEX(',',KEY_COLUMNS) 22 | ,CASE 23 | WHEN CHARINDEX(';',KEY_COLUMNS)>0 24 | THEN 'COMPOSITE('+KEY_COLUMNS+')' 25 | ELSE KEY_COLUMNS 26 | END AS KEY_COLUMNS 27 | FROM 28 | ( 29 | SELECT 30 | CONSTRAINT_SCHEMA, 31 | TABLE_NAME, 32 | STUFF 33 | ( 34 | ( 35 | SELECT ';' + US.COLUMN_NAME 36 | FROM 37 | ( 38 | SELECT 39 | sch.name AS [CONSTRAINT_SCHEMA] 40 | ,tbl.name AS [TABLE_NAME] 41 | ,COL_NAME(ixc.object_id,ixc.column_id) AS [COLUMN_NAME] 42 | FROM sys.tables tbl 43 | LEFT OUTER JOIN sys.index_columns ixc ON tbl.object_id = ixc.object_id 44 | LEFT OUTER JOIN sys.indexes idx ON tbl.object_id = idx.object_id AND ixc.index_id = idx.index_id 45 | LEFT OUTER JOIN sys.schemas sch ON tbl.schema_id = sch.schema_id 46 | WHERE idx.is_unique=1 47 | ) US 48 | WHERE US.CONSTRAINT_SCHEMA = SS.CONSTRAINT_SCHEMA 49 | AND US.TABLE_NAME = SS.TABLE_NAME 50 | FOR XML PATH('') 51 | ), 1, 1, '' 52 | ) KEY_COLUMNS 53 | FROM 54 | ( 55 | SELECT 56 | sch.name AS [CONSTRAINT_SCHEMA] 57 | ,tbl.name AS [TABLE_NAME] 58 | ,COL_NAME(ixc.object_id,ixc.column_id) AS [COLUMN_NAME] 59 | ,idx.* 60 | FROM sys.tables tbl 61 | LEFT OUTER JOIN sys.index_columns ixc ON tbl.object_id = ixc.object_id 62 | LEFT OUTER JOIN sys.indexes idx ON tbl.object_id = idx.object_id AND ixc.index_id = idx.index_id 63 | LEFT OUTER JOIN sys.schemas sch ON tbl.schema_id = sch.schema_id 64 | WHERE idx.is_unique=1 65 | ) SS 66 | --WHERE CONSTRAINT_SCHEMA='dbo' 67 | GROUP BY CONSTRAINT_SCHEMA, TABLE_NAME 68 | ) sub 69 | )pk 70 | ON src.TABLE_NAME = pk.TABLE_NAME 71 | AND src.TABLE_SCHEMA = pk.CONSTRAINT_SCHEMA 72 | --WHERE src.TABLE_NAME IN 73 | --( 74 | --'' 75 | --) 76 | --FOR JSON PATH -------------------------------------------------------------------------------- /TEAM/TeamJsonHandling.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | 4 | namespace TEAM 5 | { 6 | internal class TeamJsonHandling 7 | { 8 | /// 9 | /// Local class to manage file names and changes thereof. 10 | /// 11 | internal static class JsonFileConfiguration 12 | { 13 | /// 14 | /// Builds and returns the fully qualified name of the attribute mapping Json file. 15 | /// 16 | /// 17 | public static string AttributeMappingJsonFileName() 18 | { 19 | string localJsonFileName = FormBase.globalParameters.MetadataPath + FormBase.globalParameters.ActiveEnvironmentKey + "_" + FormBase.globalParameters.JsonAttributeMappingFileName + FormBase.globalParameters.JsonExtension; 20 | return localJsonFileName; 21 | } 22 | 23 | /// 24 | /// Builds and returns the fully qualified name of the physical model Json file. 25 | /// 26 | /// 27 | public static string PhysicalModelJsonFileName() 28 | { 29 | string localJsonFileName = FormBase.globalParameters.MetadataPath + FormBase.globalParameters.ActiveEnvironmentKey + "_" + FormBase.globalParameters.JsonModelMetadataFileName + FormBase.globalParameters.JsonExtension; 30 | return localJsonFileName; } 31 | } 32 | 33 | /// 34 | /// Create a backup of a given JSON file. 35 | /// 36 | /// 37 | internal string BackupJsonFile(string inputFileName, string inputFilePath) 38 | { 39 | var shortDatetime = DateTime.Now.ToString("yyyyMMddHHmmss"); 40 | 41 | var targetFilePathName = inputFilePath + string.Concat("Backup_" + shortDatetime + "_", inputFileName); 42 | 43 | File.Copy( inputFilePath+inputFileName, targetFilePathName); 44 | 45 | var result = targetFilePathName; 46 | 47 | return result; 48 | } 49 | 50 | /// 51 | /// Clear out (remove) an existing Json file, to facilitate overwriting. 52 | /// 53 | internal static void RemoveExistingJsonFile(string inputFileName) 54 | { 55 | File.Delete(FormBase.globalParameters.ConfigurationPath + inputFileName); 56 | } 57 | } 58 | } -------------------------------------------------------------------------------- /TEAM/ThreadHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | 4 | namespace TEAM 5 | { 6 | public static class ThreadHelper 7 | { 8 | delegate void SetControlCallback(Form form, Control control, string text); 9 | 10 | /// 11 | /// Set text property of various controls. 12 | /// 13 | /// The calling form 14 | /// 15 | /// 16 | public static void SetText(Form form, Control control, string text) 17 | { 18 | // InvokeRequired required compares the thread ID of the calling thread to the thread ID of the creating thread. 19 | // If these threads are different, it returns true. 20 | if (control.InvokeRequired) 21 | { 22 | SetControlCallback callBack = SetText; 23 | form.Invoke(callBack, form, control, text); 24 | } 25 | else 26 | { 27 | control.Text += text; 28 | } 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /Team_Library/EventLog.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Text; 5 | 6 | namespace TEAM_Library 7 | { 8 | /// 9 | /// An event log is a list of events. 10 | /// 11 | public class EventLog : List 12 | { 13 | public int errorReportedHighWaterMark { get; set; } = 0; 14 | 15 | /// 16 | /// Default constructor. 17 | /// 18 | public EventLog() 19 | { 20 | //EventList = null; 21 | } 22 | 23 | /// 24 | /// Merge another event log into the class. 25 | /// 26 | /// 27 | public void MergeEventLog(EventLog otherEventLog) 28 | { 29 | foreach (Event mergeEvent in otherEventLog) 30 | { 31 | this.Add(mergeEvent); 32 | } 33 | } 34 | 35 | /// 36 | /// Spool the Event Log to disk. 37 | /// 38 | /// 39 | public void SaveEventLogToFile(string targetFile) 40 | { 41 | StringBuilder output = new StringBuilder(); 42 | 43 | try 44 | { 45 | //Output to file 46 | using (var outfile = new StreamWriter(targetFile)) 47 | { 48 | foreach (Event localEvent in this) 49 | { 50 | output.AppendLine($"{localEvent.eventTime} - {localEvent.eventCode} : {localEvent.eventDescription}"); 51 | } 52 | 53 | outfile.Write(output.ToString()); 54 | outfile.Close(); 55 | } 56 | 57 | Add(Event.CreateNewEvent(EventTypes.Information, "The file was successfully saved to disk.\r\n")); 58 | } 59 | catch (Exception ex) 60 | { 61 | Add(Event.CreateNewEvent(EventTypes.Error, "There was an issue saving the output to disk. The message is: " + ex + ".\r\n")); 62 | } 63 | } 64 | 65 | public int ReportErrors(EventLog eventLog) 66 | { 67 | // Report the events (including errors) back to the user. 68 | int errorCounter = 0; 69 | int highWaterMarkCounter = errorReportedHighWaterMark-1; 70 | int eventCounter = 1; 71 | 72 | foreach (Event individualEvent in eventLog) 73 | { 74 | if (eventCounter > highWaterMarkCounter) 75 | { 76 | if (individualEvent.eventType == EventTypes.Error) 77 | { 78 | errorCounter++; 79 | } 80 | } 81 | 82 | eventCounter++; 83 | } 84 | 85 | // Errors have been reported up to this point, to prevent re-reporting. 86 | errorReportedHighWaterMark = eventCounter; 87 | 88 | return errorCounter; 89 | } 90 | } 91 | 92 | /// 93 | /// Enumerator containing the types of allowed events (classifications). 94 | /// 95 | public enum EventTypes 96 | { 97 | Information = 0, 98 | Error = 1, 99 | Warning = 2 100 | } 101 | 102 | /// 103 | /// Individual event. 104 | /// 105 | public class Event 106 | { 107 | /// 108 | /// The classification of an event, following the EventTypes enumerator. 109 | /// 110 | public int eventCode { get; set; } 111 | 112 | public EventTypes eventType { get; set; } 113 | 114 | /// 115 | /// Free-format description for an event. 116 | /// 117 | public string eventDescription { get; set; } 118 | 119 | /// 120 | /// Logging date/time for the event. 121 | /// 122 | public DateTime eventTime { get; set; } = DateTime.Now; 123 | 124 | /// 125 | /// Constructor that only captures type and description of an event. This will assume 'now' as date/time of the event. 126 | /// 127 | /// 128 | /// 129 | /// 130 | public static Event CreateNewEvent(EventTypes eventType, string eventDescription) 131 | { 132 | var localEvent = new Event 133 | { 134 | eventCode = (int)eventType, 135 | eventType = eventType, 136 | eventTime = DateTime.Now, 137 | eventDescription = eventDescription 138 | }; 139 | 140 | return localEvent; 141 | } 142 | 143 | /// 144 | /// Constructor that can override the date / time. 145 | /// 146 | /// 147 | /// 148 | /// 149 | /// 150 | public static Event CreateNewEvent(EventTypes eventType, DateTime eventDateTime, string eventDescription) 151 | { 152 | var localEvent = new Event 153 | { 154 | eventCode = (int)eventType, 155 | eventType = eventType, 156 | eventTime = eventDateTime, 157 | eventDescription = eventDescription 158 | }; 159 | 160 | return localEvent; 161 | } 162 | } 163 | } 164 | -------------------------------------------------------------------------------- /Team_Library/GlobalParameters.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | 3 | namespace TEAM_Library 4 | { 5 | public class GlobalParameters 6 | { 7 | // TEAM core path parameters 8 | public string RootPath { get; } = Application.StartupPath + @"\"; 9 | public string ConfigurationPath { get; set; } = Application.StartupPath + @"\" + @"Configuration\"; 10 | public string MetadataPath { get; set; } = Application.StartupPath + @"\" + @"Metadata\"; 11 | 12 | public string PhysicalModelDirectory { get; set; } = @"PhysicalModel\"; 13 | public string CorePath { get; } = Application.StartupPath + @"\" + @"Core\"; 14 | 15 | public string SchemaPath { get; } = Application.StartupPath + @"\" + @"Schema\"; 16 | 17 | public string BackupPath { get; } = Application.StartupPath + @"\" + @"Backup\"; 18 | 19 | public string ModelLayerPath { get; } = Application.StartupPath + @"\" + @"ModelLayers\"; 20 | public string ScriptPath { get; set; } = Application.StartupPath + @"\" + @"Scripts\"; 21 | public string FilesPath { get; set; } = Application.StartupPath + @"\" + @"Files\"; 22 | public string ConfigFileName { get; set; } = "TEAM_configuration"; 23 | public string PathFileName { get; set; } = "TEAM_Path_configuration"; 24 | public string ValidationFileName { get; set; } = "TEAM_validation"; 25 | public string JsonExportConfigurationFileName { get; set; } = "TEAM_jsonconfiguration"; 26 | public string FileExtension { get; set; } = ".txt"; 27 | public string ActiveEnvironmentInternalId { get; set; } = Utility.CreateMd5(new[] { "Development" }, "%$@"); 28 | public string ActiveEnvironmentKey { get; set; } 29 | 30 | // JSON file name parameters 31 | public string JsonSchemaForDataWarehouseAutomationFileName { get; } = "interfaceDataWarehouseAutomationMetadata.json"; 32 | public static string JsonTableMappingFileName { get; } = "TEAM_Table_Mapping"; 33 | public string JsonAttributeMappingFileName { get; } = "TEAM_Attribute_Mapping"; 34 | public string JsonModelMetadataFileName { get; } = "TEAM_Model_Metadata"; 35 | public string JsonConnectionFileName { get; } = "TEAM_connections"; 36 | public string JsonEnvironmentFileName { get; } = "TEAM_environments"; 37 | public string JsonExtension { get; } = ".json"; 38 | 39 | /// 40 | /// Extension method to infer the target path for a given string value (should be a target data object name). 41 | /// 42 | /// 43 | /// 44 | public string GetMetadataFilePath(string fileName) 45 | { 46 | return MetadataPath + fileName + ".json"; 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /Team_Library/SortableBindingList.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | 5 | namespace TEAM_Library 6 | { 7 | public class SortableBindingList : BindingList where T : class 8 | { 9 | private bool _isSorted; 10 | private ListSortDirection _sortDirection = ListSortDirection.Ascending; 11 | private PropertyDescriptor _sortProperty; 12 | 13 | /// 14 | /// Initializes a new instance of the class. 15 | /// 16 | public SortableBindingList() 17 | { 18 | } 19 | 20 | /// 21 | /// Initializes a new instance of the class. 22 | /// 23 | /// An of items to be contained in the . 24 | public SortableBindingList(IList list) : base(list) 25 | { 26 | } 27 | 28 | /// 29 | /// Gets a value indicating whether the list supports sorting. 30 | /// 31 | protected override bool SupportsSortingCore 32 | { 33 | get { return true; } 34 | } 35 | 36 | /// 37 | /// Gets a value indicating whether the list is sorted. 38 | /// 39 | protected override bool IsSortedCore 40 | { 41 | get { return _isSorted; } 42 | } 43 | 44 | /// 45 | /// Gets the direction the list is sorted. 46 | /// 47 | protected override ListSortDirection SortDirectionCore 48 | { 49 | get { return _sortDirection; } 50 | } 51 | 52 | /// 53 | /// Gets the property descriptor that is used for sorting the list if sorting is implemented in a derived class; otherwise, returns null 54 | /// 55 | protected override PropertyDescriptor SortPropertyCore 56 | { 57 | get { return _sortProperty; } 58 | } 59 | 60 | /// 61 | /// Removes any sort applied with ApplySortCore if sorting is implemented 62 | /// 63 | protected override void RemoveSortCore() 64 | { 65 | _sortDirection = ListSortDirection.Ascending; 66 | _sortProperty = null; 67 | _isSorted = false; //thanks Luca 68 | } 69 | 70 | /// 71 | /// Sorts the items if overridden in a derived class 72 | /// 73 | /// 74 | /// 75 | protected override void ApplySortCore(PropertyDescriptor prop, ListSortDirection direction) 76 | { 77 | _sortProperty = prop; 78 | _sortDirection = direction; 79 | 80 | List list = Items as List; 81 | if (list == null) return; 82 | 83 | list.Sort(Compare); 84 | 85 | _isSorted = true; 86 | //fire an event that the list has been changed. 87 | OnListChanged(new ListChangedEventArgs(ListChangedType.Reset, -1)); 88 | } 89 | 90 | 91 | private int Compare(T lhs, T rhs) 92 | { 93 | var result = OnComparison(lhs, rhs); 94 | //invert if descending 95 | if (_sortDirection == ListSortDirection.Descending) 96 | result = -result; 97 | return result; 98 | } 99 | 100 | private int OnComparison(T lhs, T rhs) 101 | { 102 | object lhsValue = lhs == null ? null : _sortProperty.GetValue(lhs); 103 | object rhsValue = rhs == null ? null : _sortProperty.GetValue(rhs); 104 | if (lhsValue == null) 105 | { 106 | return (rhsValue == null) ? 0 : -1; //nulls are equal 107 | } 108 | if (rhsValue == null) 109 | { 110 | return 1; //first has value, second doesn't 111 | } 112 | if (lhsValue is IComparable) 113 | { 114 | return ((IComparable)lhsValue).CompareTo(rhsValue); 115 | } 116 | if (lhsValue.Equals(rhsValue)) 117 | { 118 | return 0; //both are the same 119 | } 120 | //not comparable, compare ToString 121 | return lhsValue.ToString().CompareTo(rhsValue.ToString()); 122 | } 123 | } 124 | } 125 | -------------------------------------------------------------------------------- /Team_Library/TEAM_Library.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net8.0 4 | AnyCPU;x64 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | all 15 | 16 | 17 | 18 | 19 | 20 | ..\TEAM\Libraries\DataWarehouseAutomation.dll 21 | 22 | 23 | C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\System.Windows.Forms.dll 24 | 25 | 26 | -------------------------------------------------------------------------------- /Team_Library/TeamClassification.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace TEAM_Library 6 | { 7 | public class TeamClassification 8 | { 9 | public enum TeamClassificationTypes 10 | { 11 | ModelLayer 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Team_Library/TeamDataItemMapping.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Data; 3 | using System.IO; 4 | using Newtonsoft.Json; 5 | 6 | namespace TEAM_Library 7 | { 8 | public class DataItemMappingJson 9 | { 10 | //JSON representation of the attribute mapping metadata. 11 | public string attributeMappingHash { get; set; } 12 | public string sourceTable { get; set; } 13 | public string sourceAttribute { get; set; } 14 | public string targetTable { get; set; } 15 | public string targetAttribute { get; set; } 16 | 17 | [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] 18 | public string notes { get; set; } 19 | } 20 | /// 21 | /// Enumerator to hold the column index for the columns (headers) in the Table Metadata data grid view. 22 | /// 23 | public enum DataItemMappingGridColumns 24 | { 25 | HashKey = 0, 26 | SourceDataObject = 1, 27 | SourceDataItem = 2, 28 | TargetDataObject = 3, 29 | TargetDataItem = 4, 30 | Notes = 5 31 | } 32 | 33 | public class TeamDataItemMapping 34 | { 35 | public EventLog EventLog { get; set; } 36 | 37 | public List JsonList { get; set; } 38 | 39 | public DataTable DataTable { get; set; } 40 | 41 | public TeamDataItemMapping() 42 | { 43 | EventLog = new EventLog(); 44 | DataTable = new DataTable(); 45 | JsonList = new List(); 46 | } 47 | 48 | public static void CreateEmptyDataItemMappingJson(string fileName, EventLog eventLog) 49 | { 50 | File.WriteAllText(fileName, "[]"); 51 | eventLog.Add(Event.CreateNewEvent(EventTypes.Information, "A new data item mapping file is created, because it did not exist yet.")); 52 | } 53 | 54 | /// 55 | /// Set the sort order for the data table. 56 | /// 57 | public void SetDataTableSorting() 58 | { 59 | DataTable.DefaultView.Sort = $"[{DataItemMappingGridColumns.TargetDataObject}] ASC, [{DataItemMappingGridColumns.TargetDataItem}] ASC, [{DataItemMappingGridColumns.TargetDataObject}] ASC, [{DataItemMappingGridColumns.SourceDataObject}] ASC"; 60 | } 61 | 62 | /// 63 | /// Set the column names for the data table. 64 | /// 65 | public void SetDataTableColumns() 66 | { 67 | DataTable.Columns[(int)DataItemMappingGridColumns.HashKey].ColumnName = DataItemMappingGridColumns.HashKey.ToString(); 68 | DataTable.Columns[(int)DataItemMappingGridColumns.SourceDataObject].ColumnName = DataItemMappingGridColumns.SourceDataObject.ToString(); 69 | DataTable.Columns[(int)DataItemMappingGridColumns.SourceDataItem].ColumnName = DataItemMappingGridColumns.SourceDataItem.ToString(); 70 | DataTable.Columns[(int)DataItemMappingGridColumns.TargetDataObject].ColumnName = DataItemMappingGridColumns.TargetDataObject.ToString(); 71 | DataTable.Columns[(int)DataItemMappingGridColumns.TargetDataItem].ColumnName = DataItemMappingGridColumns.TargetDataItem.ToString(); 72 | DataTable.Columns[(int)DataItemMappingGridColumns.Notes].ColumnName = DataItemMappingGridColumns.Notes.ToString(); 73 | } 74 | 75 | /// 76 | /// Creates a object (Json List and DataTable) from a Json file. 77 | /// 78 | /// 79 | public void GetMetadata(string fileName) 80 | { 81 | EventLog.Add(Event.CreateNewEvent(EventTypes.Information, $"Retrieving metadata from {fileName}.")); 82 | 83 | // Check if the file exists 84 | if (!File.Exists(fileName)) 85 | { 86 | EventLog.Add(Event.CreateNewEvent(EventTypes.Warning, "No Json Table Mapping file was found.")); 87 | DataTable.Clear(); 88 | } 89 | else 90 | { 91 | EventLog.Add(Event.CreateNewEvent(EventTypes.Information, $"Reading file {fileName}")); 92 | // Load the file, convert it to a DataTable and bind it to the source 93 | List jsonArray = JsonConvert.DeserializeObject>(File.ReadAllText(fileName)); 94 | 95 | // Commit to the object 96 | JsonList = jsonArray; 97 | var dataTable = Utility.ConvertToDataTable(jsonArray); 98 | 99 | //Make sure the changes are seen as committed, so that changes can be detected later on. 100 | dataTable.AcceptChanges(); 101 | 102 | // Commit it to the object itself 103 | DataTable = dataTable; 104 | 105 | // Set the column names. 106 | SetDataTableColumns(); 107 | 108 | // Set the sort order. 109 | //SetDataTableSorting(); 110 | } 111 | } 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /Team_Library/TeamModelLayer.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | 6 | namespace TEAM_Library 7 | { 8 | public class TeamModelLayer 9 | { 10 | /// 11 | /// Name of the layer, used for identification and must be unique. 12 | /// 13 | public string Name { get; set; } 14 | 15 | public string Description { get; set; } 16 | 17 | /// 18 | /// When true, the layer is automatically added to a new object. 19 | /// 20 | public bool IsDefault { get; set; } 21 | 22 | [JsonIgnore] 23 | public string DefaultName => "MyNewLayer"; 24 | 25 | [JsonIgnore] 26 | public string DefaultDescription => "Click on the tab to create a new layer.\r\n\r\nLayers are saved against the active environment."; 27 | 28 | /// 29 | /// Default constructor. 30 | /// 31 | public TeamModelLayer() 32 | { 33 | Name = DefaultName; 34 | Description = DefaultDescription; 35 | } 36 | 37 | public TeamModelLayer(string layerName) 38 | { 39 | Name = layerName; 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Team_Library/TeamObjectModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using DataWarehouseAutomation; 3 | using TEAM_Library; 4 | 5 | namespace TEAM 6 | { 7 | /// 8 | /// The parent object containing the list of source-to-target mappings. This is the highest level and contains the list of mappings (as individual objects 9 | /// but also the parameters inherited from TEAM and VEDW. 10 | /// 11 | public class VDW_DataObjectMappingList : DataObjectMappingList 12 | { 13 | // Generic interface definitions 14 | //public List dataObjectMapping { get; set; } 15 | 16 | // TEAM and VDW specific details 17 | public MetadataConfiguration metadataConfiguration { get; set; } 18 | public GenerationSpecificMetadata generationSpecificMetadata { get; set; } 19 | } 20 | 21 | /// 22 | /// Specific metadata related for generation purposes, but which is relevant to use in templates. 23 | /// 24 | public class GenerationSpecificMetadata 25 | { 26 | public DataObject selectedDataObject { get; set; } 27 | //public DateTime generationDateTime { get; } = DateTime.Now; 28 | 29 | public GenerationSpecificMetadata(DataObject dataObject) 30 | { 31 | selectedDataObject = dataObject; 32 | } 33 | } 34 | 35 | /// 36 | /// The parameters that have been inherited from TEAM or are set in VDW, passed as properties of the metadata - and can be used in the templates. 37 | /// 38 | public class MetadataConfiguration 39 | { 40 | // Attributes 41 | public string changeDataCaptureAttribute { get; set; } 42 | public string recordSourceAttribute { get; set; } 43 | public string loadDateTimeAttribute { get; set; } 44 | public string expiryDateTimeAttribute { get; set; } 45 | public string eventDateTimeAttribute { get; set; } 46 | public string recordChecksumAttribute { get; set; } 47 | public string etlProcessAttribute { get; set; } 48 | public string sourceRowIdAttribute { get; set; } 49 | 50 | public MetadataConfiguration(TeamConfiguration teamConfiguration) 51 | { 52 | changeDataCaptureAttribute = teamConfiguration.ChangeDataCaptureAttribute; 53 | recordSourceAttribute = teamConfiguration.RecordSourceAttribute; 54 | loadDateTimeAttribute = teamConfiguration.LoadDateTimeAttribute; 55 | expiryDateTimeAttribute = teamConfiguration.ExpiryDateTimeAttribute; 56 | eventDateTimeAttribute = teamConfiguration.EventDateTimeAttribute; 57 | recordChecksumAttribute = teamConfiguration.RecordChecksumAttribute; 58 | etlProcessAttribute = teamConfiguration.EtlProcessAttribute; 59 | sourceRowIdAttribute = teamConfiguration.RowIdAttribute; 60 | } 61 | } 62 | } --------------------------------------------------------------------------------