Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!To celebrate FabCon Vienna, we are offering 50% off select exams. Ends October 3rd. Request your discount now.
Hello all,
Trying to accomplish what in theory seems like a simple mechanic, but I have not found a way to accomplish this in any of the resources for generates DAX measures via C# Scripts in Tabular Editor!
When generating a basic measure, say SUM of Sales Amount the C# Script is: (thank you @dotykier )
/*
* Title: Auto-generate SUM measures from columns
*
* Author: Daniel Otykier, twitter.com/DOtykier
*
* This script, when executed, will loop through the currently selected columns,
* creating one SUM measure for each column and also hiding the column itself.
*/
// Loop through all currently selected columns:
foreach(var c in Selected.Columns)
{
var newMeasure = c.Table.AddMeasure(
"Sum of " + c.Name, // Name
"SUM(" + c.DaxObjectFullName + ")", // DAX expression
c.DisplayFolder // Display Folder
);
// Set the format string on the new measure:
newMeasure.FormatString = "0.00";
// Provide some documentation:
newMeasure.Description = "This measure is the sum of column " + c.DaxObjectFullName;
// Hide the base column:
c.IsHidden = true;
}
However, this code generates the measure within the Table of the selected column, i.e. the "Sales" table.
I would like to generate the Measure in a seperate table called "Calculations", or move it to a different table after it has been generated but I cannot crack how to achieve this.
Any help would be greatly appreciated.
Thanks.
Aaron
Solved! Go to Solution.
Hi,
Would this do the trick?
var measureTable = Model.Tables["Measure Table"]; // Replace "Measure Table" with your desired table name
foreach(var c in Selected.Columns)
{
var newMeasure = measureTable.AddMeasure(
"Sum of " + c.Name, // Name
"SUM(" + c.DaxObjectFullName + ")", // DAX expression
c.DisplayFolder // Display Folder
);
// Set the format string on the new measure:
newMeasure.FormatString = "0.00";
// Provide some documentation:
newMeasure.Description = "This measure is the sum of column " + c.DaxObjectFullName;
// Optionally, hide the base column:
c.IsHidden = true;
}
Hi,
Would this do the trick?
var measureTable = Model.Tables["Measure Table"]; // Replace "Measure Table" with your desired table name
foreach(var c in Selected.Columns)
{
var newMeasure = measureTable.AddMeasure(
"Sum of " + c.Name, // Name
"SUM(" + c.DaxObjectFullName + ")", // DAX expression
c.DisplayFolder // Display Folder
);
// Set the format string on the new measure:
newMeasure.FormatString = "0.00";
// Provide some documentation:
newMeasure.Description = "This measure is the sum of column " + c.DaxObjectFullName;
// Optionally, hide the base column:
c.IsHidden = true;
}
You godsend!
That's worth writing a small blog on now 🙂
Thank you!