我正在开发一个解决方案,需要根据流量类型读取参与度值。
我尝试了数据库查询,它对我有效,请参阅下面的代码。
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返回一个字符串,然后自己将其强制转换为双精度。