我正在制定一个解决方案,我需要根据流量类型读取参与度值。
我尝试使用数据库查询,它为我工作,请参阅下面的代码。
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来执行此操作,我可以传递流量类型值,根据此流量类型值,我可以读取参与值。
是否有通过传递流量类型来读取参与度值的直接方法?
有任何帮助吗?
-Thanks, Yogesh
答案 0 :(得分:1)
最新Engagement Analytics API Reference(适用于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返回一个字符串并自己将其转换为double。