A computer-implemented method for determining how transformation errors have arisen or what effects could occur if transformations are changed in a data pipeline, the method comprising: receiving one or more program statements expressed in a human-readable language and describing one or more transformations of data tables of a distributed database system or columns of the data tables; based in part upon table schema metadata describing column schemas of the data tables, transforming the one or more program statements into one or more structured data objects that represent the transformations and that are associated with links to the one or more program statements expressing said transformations; storing the structured data objects and associated links as part of build job specification metadata which when executed using a distributed database system is configured to build one or more derived datasets that embody the transformations, wherein the structured data objects comprise a plurality of unresolved operation objects, each unresolved operation object comprising structured data representing attributes of a discrete transformation represented in the program statements, and that are separately resolved based on the schema data into resolved operation objects,, generating and storing graph metadata based on the structured data objects that represent the transformations and that are associated with links to the one or more program statements expressing said transformations; creating and causing generating, based on the graph metadata, a visual graph of columns (302, 306, 308, 310, 314), and relationships of the columns to other columns, relating to the transformations (304, 312),; and displaying the visual graph, wherein the at least one transformation comprises a join operation; wherein the unresolved operation object corresponding to the join operation comprises sub attributes specifying a join type, left table, right table, and columns involved in the join operation; wherein the resolved operation object corresponding to the join operation comprises sub attributes that specify a type, inputs in terms of specific table and column references, outputs and arguments with reference to a temporary table that is created as part of processing the join operation in memory; and wherein the visual graph comprises nodes corresponding to the columns involved in the join operation, said nodes having edges connecting them to a join node representing the join operation, the join node having an edge connected to a node representing a join output column in the temporary table. receiving one or more program statements expressed in a human-readable language and describing one or more transformations of data tables of a distributed database system or columns of the data tables; based in part upon table schema metadata describing column schemas of the data tables, transforming the one or more program statements into one or more structured data objects that represent the transformations and that are associated with links to the one or more program statements expressing said transformations; storing the structured data objects and associated links as part of build job specification metadata which when executed using a distributed database system is configured to build one or more derived datasets that embody the transformations, wherein the structured data objects comprise a plurality of unresolved operation objects, each unresolved operation object comprising structured data representing attributes of a discrete transformation represented in the program statements, and that are separately resolved based on the schema data into resolved operation objects,, generating and storing graph metadata based on the structured data objects that represent the transformations and that are associated with links to the one or more program statements expressing said transformations; creating and causing generating, based on the graph metadata, a visual graph of columns (302, 306, 308, 310, 314), and relationships of the columns to other columns, relating to the transformations (304, 312),; and displaying the visual graph, wherein the at least one transformation comprises a join operation; wherein the unresolved operation object corresponding to the join operation comprises sub attributes specifying a join type, left table, right table, and columns involved in the join operation; wherein the resolved operation object corresponding to the join operation comprises sub attributes that specify a type, inputs in terms of specific table and column references, outputs and arguments with reference to a temporary table that is created as part of processing the join operation in memory; and wherein the visual graph comprises nodes corresponding to the columns involved in the join operation, said nodes having edges connecting them to a join node representing the join operation, the join node having an edge connected to a node representing a join output column in the temporary table.