static void TestDataSet2() { Random rand = new Random(); int inside(int d) { var x = rand.NextDouble(); var y = rand.NextDouble(); var ret = x * x + y * y <= 1 ? 1 : 0; return(ret); } SQLContext sqlContext = new SQLContext(); SQLContext.Register <int, int>("inside", inside); var sql = "SELECT 4.0*sum(inside(a1.a1))/count(*) from a a1, a a2, a a3, a a4, a a5, a a6, a a7, a a8, a a9, a a10"; var rows = SQLStatement.ExecSQL(sql, out string plan, out _); }
static void TestDataSet() { // register c#'s sqrt as an external function string sqroot(double d) => Math.Sqrt(d).ToString("#.###"); SQLContext sqlContext = new SQLContext(); SQLContext.Register <double, string>("sqroot", sqroot); var a = sqlContext.Read("a"); var b = sqlContext.Read("b"); a.filter("a1>1").join(b, "b2=a2").select("a1", "sqroot(b1*a1+2)").show(); string s = a.physicPlan_.Explain(); Console.WriteLine(s); var sql = "SELECT a1, sqroot(b1*a1+2) from a join b on b2=a2 where a1>1"; var rows = SQLStatement.ExecSQL(sql, out string plan, out _); }