← All projects

PRJ-02

OCT 2022 — SEP 2024 · Axis Lighting

Engineering Data Architecture

Data Engineering · Manufacturing Systems

Replaced spreadsheet-driven engineering data with a centralized SQL + C# pipeline feeding DriveWorks, cutting non-conformances by more than 5× across the product line.

Non-conformance rate

29.5%5.1%

Rollout window

18 months

Artifacts

Selected outputs from the project — videos, generated drawings, code, and stakeholder decks.

// sqlexcerpt
WITH ElectricalSettingGroup_CTE AS (
    SELECT 
        ESG.[ElectricalSettingsGroupID],
        STUFF((
            SELECT ', ' + P2.Code
            FROM [AXIS Automation].[SectionSolver].[PACAFATElectricalSettingsGroup] AS ESG2
            LEFT JOIN [FixtureSetupCodes].[ParameterAtCategoryAtFixture] AS PACAF2
                ON PACAF2.ID = ESG2.PACAF_ID
            LEFT JOIN FixtureSetupCodes.Parameters AS P2
                ON P2.ID = PACAF2.ParameterId
            WHERE ESG2.[ElectricalSettingsGroupID] = ESG.[ElectricalSettingsGroupID]
            FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '') AS Parameters
    FROM 
        [AXIS Automation].[SectionSolver].[PACAFATElectricalSettingsGroup] AS ESG
    LEFT JOIN 
        [FixtureSetupCodes].[ParameterAtCategoryAtFixture] AS PACAF
        ON PACAF.ID = ESG.PACAF_ID
    LEFT JOIN 
        FixtureSetupCodes.Parameters AS P
        ON P.ID = PACAF.ParameterId
    GROUP BY 
        ESG.[ElectricalSettingsGroupID]
)

SELECT F.Code AS 'Fixture ID'
      ,ESG.Parameters AS PACAF
      ,SR.Name AS 'Section Rule'
	  ,SR.[MaxSectionLength] AS 'Max Section Length'
	  ,SR.[MinSectionLength] AS 'Min Section Length'
	  ,SR.[MiddleSectionLength] AS 'Middle Section Length'
	  ,SR.[AlternativeMiddleSectionLength] AS 'Alt Middle Section Length'
	  ,SR.[FirstSectionSecondChoice] AS 'First Section Second Choice'
      ,SR.[FirstSectionSecondChoiceThreshold] AS 'First Section Second Choice Threshold'
      ,SR.[IdealMiddle8ft] AS 'Ideal Middle 8ft'
      ,SR.[IdealMiddle4ft] AS 'Ideal Middle 4ft'
      ,SR.[EndCapWidth] AS 'End Cap Width'
      ,SR.[JoinerLength] AS 'Joiner Length'
      ,SR.[BlankLength] AS 'Blank Length'
      ,SR.[EndCapsWhenJoining] AS 'EndCaps When Joining'
      ,SR.[ShortenToNoDarkSpot] AS 'Shorten To No Dark Spot'
      ,SR.[LengthAsOverallLength] AS 'Length As Overall Length'
      ,EST.EqualSectionType AS 'Equal Section Type'
      ,SR.[DarkspotsBlanksInAllSections] AS 'Dark spots Blanks In All Sections'
      ,SR.[ExcludeJoinerEndcapInNL] AS 'Exclude Joiner Endcap In NL'
      ,DG.Name AS 'Dictionary Group ID' 
      ,CASE 
          WHEN [Default] = 0 THEN 'False'
          WHEN [Default] = 1 THEN 'True'
       END AS 'Default'
      ,SF.Flag AS 'Solving Flag'
      ,[FixedLength] AS 'Fixed Length'
	  ,CASE
	  WHEN [OverrideSectionRule] = 0 THEN 'False'
	  WHEN [OverrideSectionRule] = 1 THEN 'True'
	  END AS 'Override Section Rule'
  FROM [AXIS Automation].[SectionSolver].[CodeAtMechanicalSettings] AS CMS
  LEFT JOIN FixtureSetupCodes.Fixtures AS F
  ON F.id = CMS.FixtureID
  LEFT JOIN SectionSolver.SolvingFlags AS SF
  ON SF.ID = CMS.SolvingFlagID
  LEFT JOIN SectionSolver.SectionRules AS SR
  ON SR.ID = CMS.SectionRulesID
  LEFT JOIN SectionSolver.DictionaryGroup AS DG
  ON DG.ID = CMS.DictionaryGroupID
  LEFT JOIN SECTIONSOLVER.EqualSectionTypes AS EST
  ON EST.ID = SR.EqualSectionTypesID
  LEFT JOIN ElectricalSettingGroup_CTE AS ESG -- Join with the CTE
  ON CMS.PACAFGroupID = ESG.[ElectricalSettingsGroupID]
Representative T-SQL — one of many queries (later promoted to stored procedures) that power the Excel configurators, the automation engine, and team-side troubleshooting.

Problem

Engineering data lived across dozens of spreadsheets and tribal knowledge. Drawing generation depended on whoever last touched the file, producing a 29.5% non-conformance rate that flowed straight to the shop floor.

Approach

  • Designed centralized MS SQL schema as single source of truth for product data
  • Built C# bridge between SQL store and DriveWorks generation engine
  • Migrated legacy spreadsheet logic into versioned, testable rules
  • Established change-control gates with the Engineering and IT teams

Outcome

An 18-month rollout that took non-conformances from a recurring fire to a tracked exception, while making future automation work — including PRJ-01 — possible.

Next · PRJ-03

Shop Drawing Validation Program