任何API阅读约定值



我正在开发一个解决方案,需要根据流量类型读取参与度值。

我尝试了数据库查询,它对我有效,请参阅下面的代码。

            double totalValue = 0;
            using (SqlConnection newCon = new SqlConnection(ConfigurationManager.ConnectionStrings["Analytics"].ConnectionString))
            {
                SqlCommand newCmd = new SqlCommand("SELECT SUM(Value) FROM Cache_TrafficByDay as totalValue WHERE (TrafficType = 20)", newCon);
                newCon.Open();
                SqlDataReader dr = newCmd.ExecuteReader();
                while (dr.Read())
                {
                    totalValue = Convert.ToDouble(dr[0]);
                }
                newCon.Close();
                lblValue.Text = totalValue.ToString();
                newCmd.ToString();
            }

但我没有找到任何API来做这件事,因为我可以传递流量类型值,并且基于这个流量类型值我可以读取参与值。

是否有通过传递流量类型来读取参与度值的直接方法?

有什么帮助吗?

-谢谢,Yogesh

最新的Engagement Analytics API参考(适用于6.5或更高版本)没有列出任何明显的选择来访问流量类型的参与价值。

然而,它确实提供Sitecore.Analytics.Data.DataAccess.DataAdapters.SqlBase

这是一个抽象类,包含用于构建自定义查询的方法。

编辑以提供代码示例:

string query ="SELECT SUM {0}Cache_TrafficByDay{1}.{0}Value{1} from {0}Cache_TrafficByDay{1} WHERE {0}Cache_TrafficByDay{1}.{0}TrafficType{1} = 20"
Double totalValue =  DataAdapterManager.Sql.ReadOne<Double>(query, reader =>DataAdapterManager.Sql.GetDouble(0, reader),new object[0]);

我还没有测试过这一点,我只是编辑了doumentation中提供的一个示例查询(见上面的链接),我不确定你需要使用ReadOne或ReadMany的哪种方法来进行SUM。您可能还需要使用.GetString返回一个字符串,然后自己将其强制转换为双精度。

最新更新