Finally figured out where this data is stored so we can BAQ it out of Pilot for DMT into Live.
It’s in individual rows at DynAttrClassDtlReq.RequiredAtTableName so to output for DMT, a Group By CTE with STRING_AGG does the trick.
STRING_AGG(DynAttrClassDtlReq.RequiredAtTableName,'~')
with [CTEDynAttrClassDtlReq] as
(select
[DynAttrClassDtlReq].[Company] as [DynAttrClassDtlReq_Company],
[DynAttrClassDtlReq].[AttrClassID] as [DynAttrClassDtlReq_AttrClassID],
[DynAttrClassDtlReq].[AttributeID] as [DynAttrClassDtlReq_AttributeID],
(STRING_AGG(DynAttrClassDtlReq.RequiredAtSchemaName,'~')) as [Calculated_RequiredAtSchemaName],
(STRING_AGG(DynAttrClassDtlReq.RequiredAtTableName,'~')) as [Calculated_RequiredAtTableName]
from Erp.DynAttrClassDtlReq as [DynAttrClassDtlReq]
group by
[DynAttrClassDtlReq].[Company],
[DynAttrClassDtlReq].[AttrClassID],
[DynAttrClassDtlReq].[AttributeID])
select
[DynAttrClass].[Company] as [DynAttrClass_Company],
[DynAttrClass].[AttrClassID] as [DynAttrClass_AttrClassID],
[DynAttrClass].[RelatedToSchemaName] as [DynAttrClass_RelatedToSchemaName],
[DynAttrClass].[RelatedToTableName] as [DynAttrClass_RelatedToTableName],
[DynAttrClass].[Active] as [DynAttrClass_Active],
[DynAttrClass].[Description] as [DynAttrClass_Description],
[DynAttrClass].[FullExpression] as [DynAttrClass_FullExpression],
[DynAttrClass].[CalculationType] as [DynAttrClass_CalculationType],
[DynAttrClass].[NumberOfPiecesAction] as [DynAttrClass_NumberOfPiecesAction],
[DynAttrClass].[NumberOfPiecesTolerance] as [DynAttrClass_NumberOfPiecesTolerance],
[DynAttrClassDtl].[AttrClassID] as [DynAttrClassDtl_AttrClassID],
[DynAttrClassDtl].[AttributeID] as [DynAttrClassDtl_AttributeID],
[DynAttrClassDtl].[RelatedToSchemaName] as [DynAttrClassDtl_RelatedToSchemaName],
[DynAttrClassDtl].[RelatedToTableName] as [DynAttrClassDtl_RelatedToTableName],
[DynAttrClassDtl].[Active] as [DynAttrClassDtl_Active],
[DynAttrClassDtl].[Description] as [DynAttrClassDtl_Description],
[DynAttrClassDtl].[FieldDataType] as [DynAttrClassDtl_FieldDataType],
[DynAttrClassDtl].[FieldFormat] as [DynAttrClassDtl_FieldFormat],
[DynAttrClassDtl].[FieldLabel] as [DynAttrClassDtl_FieldLabel],
[DynAttrClassDtl].[IncrPrec] as [DynAttrClassDtl_IncrPrec],
[DynAttrClassDtl].[InitialCharacter] as [DynAttrClassDtl_InitialCharacter],
[DynAttrClassDtl].[InitialDate] as [DynAttrClassDtl_InitialDate],
[DynAttrClassDtl].[InitialDecimal] as [DynAttrClassDtl_InitialDecimal],
[DynAttrClassDtl].[InitialInteger] as [DynAttrClassDtl_InitialInteger],
[DynAttrClassDtl].[InitialLogical] as [DynAttrClassDtl_InitialLogical],
[DynAttrClassDtl].[MaxDate] as [DynAttrClassDtl_MaxDate],
[DynAttrClassDtl].[MaxDecimal] as [DynAttrClassDtl_MaxDecimal],
[DynAttrClassDtl].[MaxInteger] as [DynAttrClassDtl_MaxInteger],
[DynAttrClassDtl].[MinDate] as [DynAttrClassDtl_MinDate],
[DynAttrClassDtl].[MinDecimal] as [DynAttrClassDtl_MinDecimal],
[DynAttrClassDtl].[MinInteger] as [DynAttrClassDtl_MinInteger],
[DynAttrClassDtl].[WebAttribute] as [DynAttrClassDtl_WebAttribute],
[DynAttrClassDtl].[BizType] as [DynAttrClassDtl_BizType],
[DynAttrClassDtl].[UOMAttributeID] as [DynAttrClassDtl_UOMAttributeID],
[DynAttrClassDtl].[SortSeq] as [DynAttrClassDtl_SortSeq],
[DynAttrClassDtl].[UsedInPlanning] as [DynAttrClassDtl_UsedInPlanning],
[DynAttrClassDtl].[IsCalculated] as [DynAttrClassDtl_IsCalculated],
[DynAttrClassDtl].[PlanningBaseUOM] as [DynAttrClassDtl_PlanningBaseUOM],
[DynAttrClassDtl].[PlanningType] as [DynAttrClassDtl_PlanningType],
[DynAttrClassDtl].[MasterDtlLinked] as [DynAttrClassDtl_MasterDtlLinked],
[DynAttrClassDtl].[MasterDtlSync] as [DynAttrClassDtl_MasterDtlSync],
[DynAttrClassDtl].[IncludeListValueCodeInShortDesc] as [DynAttrClassDtl_IncludeListValueCodeInShortDesc],
[DynAttrClassDtl].[IncludeListValueDescriptionInShortDesc] as [DynAttrClassDtl_IncludeListValueDescriptionInShortDesc],
[DynAttrClassDtl].[Company] as [DynAttrClassDtl_Company],
[DynAttrClassDtlListVal].[Company] as [DynAttrClassDtlListVal_Company],
[DynAttrClassDtlListVal].[AttrClassID] as [DynAttrClassDtlListVal_AttrClassID],
[DynAttrClassDtlListVal].[AttributeID] as [DynAttrClassDtlListVal_AttributeID],
[DynAttrClassDtlListVal].[Code] as [DynAttrClassDtlListVal_Code],
[DynAttrClassDtlListVal].[RelatedToSchemaName] as [DynAttrClassDtlListVal_RelatedToSchemaName],
[DynAttrClassDtlListVal].[RelatedToTableName] as [DynAttrClassDtlListVal_RelatedToTableName],
[DynAttrClassDtlListVal].[Description] as [DynAttrClassDtlListVal_Description],
[DynAttrClassDtlListVal].[Active] as [DynAttrClassDtlListVal_Active],
[DynAttrClassDtlListVal].[PlanningConvOperator] as [DynAttrClassDtlListVal_PlanningConvOperator],
[DynAttrClassDtlListVal].[PlanningConvFactor] as [DynAttrClassDtlListVal_PlanningConvFactor],
[DynAttrClassDtlListVal].[WhereAvailable] as [DynAttrClassDtlListVal_WhereAvailable],
[DynAttrClassDtlListVal].[TheoreticalUOM] as [DynAttrClassDtlListVal_TheoreticalUOM],
(0) as [Calculated_DynAttrClassDtl_IsFinalExpression],
('LB') as [Calculated_DynAttrClassDtl_FinalExpressionUOM],
(0) as [Calculated_DynAttrClassDtl_IsExpressionDefined],
('') as [Calculated_DynAttrClassDtl_Formula],
(CASE WHEN DynAttrClassDtl.UsedInPlanning = 1 THEN 'Inventory~Supply~Demand' ELSE NULL END) as [Calculated_DynAttrClassDtl_RequiredAtSelectedCodes],
[CTEDynAttrClassDtlReq].[Calculated_RequiredAtTableName] as [Calculated_RequiredAtTableName]
from Erp.DynAttrClass as [DynAttrClass]
inner join Erp.DynAttrClassDtl as [DynAttrClassDtl] on
DynAttrClass.Company = DynAttrClassDtl.Company
and DynAttrClass.AttrClassID = DynAttrClassDtl.AttrClassID
left outer join Erp.DynAttrClassDtlListVal as [DynAttrClassDtlListVal] on
DynAttrClassDtl.Company = DynAttrClassDtlListVal.Company
and DynAttrClassDtl.AttrClassID = DynAttrClassDtlListVal.AttrClassID
and DynAttrClassDtl.AttributeID = DynAttrClassDtlListVal.AttributeID
left outer join CTEDynAttrClassDtlReq as [CTEDynAttrClassDtlReq] on
DynAttrClassDtl.Company = CTEDynAttrClassDtlReq.DynAttrClassDtlReq_Company
and DynAttrClassDtl.AttrClassID = CTEDynAttrClassDtlReq.DynAttrClassDtlReq_AttrClassID
and DynAttrClassDtl.AttributeID = CTEDynAttrClassDtlReq.DynAttrClassDtlReq_AttributeID
where (not DynAttrClass.AttrClassID IN ('HEAD', 'PLATEnot', 'STRUCTURAL', 'VESSEL')
and not DynAttrClass.AttrClassID LIKE 'Z%')
order by DynAttrClass.Company, DynAttrClass.AttrClassID, DynAttrClassDtl.PlanningType Desc, DynAttrClassDtl.AttributeID
DMT-58-DynAttrCombined.baq (19.2 KB)
Now if only we could figure out how to DMT the Expression Formulas…
(0) as [Calculated_DynAttrClassDtl_IsFinalExpression],
(‘LB’) as [Calculated_DynAttrClassDtl_FinalExpressionUOM],
(0) as [Calculated_DynAttrClassDtl_IsExpressionDefined],
(‘’) as [Calculated_DynAttrClassDtl_Formula],
(CASE WHEN DynAttrClassDtl.UsedInPlanning = 1 THEN ‘Inventory~Supply~Demand’ ELSE NULL END) as [Calculated_DynAttrClassDtl_RequiredAtSelectedCodes],