任何读取参与价值的API?

时间:2015-02-20 06:53:57

标签: sitecore sitecore7.2 sitecore-dms

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

我尝试使用数据库查询,它为我工作,请参阅下面的代码。

            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

1 个答案:

答案 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。