使用 Fill in ADOMD 限制检索的行数

ps0*_*604 7 c# adomd.net dax

以下 C# 代码运行 DAX 语句并检索数据表。这工作正常,但现在我需要从数据库中检索最多 N 行。有没有办法限制Fill函数返回的行数?如果没有,我如何检索前 N 行?请注意,我需要为任何 DAX 语句保留此泛型,因此您不应更改 DAX 本身。另外,我不想检索所有数据然后取前 N 行,因为数据可能太大。

    public static DataTable runDaxStatement(int maxRows) {

        var con = ConfigurationManager.ConnectionStrings["Default"].ConnectionString;
        AdomdConnection conn = new AdomdConnection(con);

        DataSet ds = new DataSet();
        ds.EnforceConstraints = false;
        AdomdCommand cmd = new AdomdCommand("evaluate customers", conn);
        AdomdDataAdapter da = new AdomdDataAdapter(cmd);
        da.Fill(ds);

        return ds.Tables[0];

    }
Run Code Online (Sandbox Code Playgroud)

Nko*_*osi 2

在文档中遇到以下TOPN 函数。

这可用于返回指定表的前 N ​​行。

例如

public static DataTable runDaxStatement(int maxRows) {
    var connectionString = ConfigurationManager.ConnectionStrings["Default"].ConnectionString;
    using(AdomdConnection connection = new AdomdConnection(connectionString)) {
        string commandText = $"EVALUATE TOPN({maxRows}, customers, <orderBy_expression_here>)";
        AdomdCommand command = connection.CreateCommand();
        command.CommandText = commandText;

        DataSet dataSet = new DataSet(){
            EnforceConstraints = false
        }

        AdomdDataAdapter adapter = new AdomdDataAdapter(command);
        adapter.Fill(dataSet);

        return dataSet.Tables[0];
    }
}
Run Code Online (Sandbox Code Playgroud)