Esempio n. 1
0
        public static void Main(string [] args)
        {
            try {
                using (var db = new Database (db_path)) {
                    if (args != null && args.Length > 0 && args[0] == "--timeline") {
                        var metric = db.GetMetric ("Banshee/StartedAt");
                        var usage_samples = new SampleModel (String.Format ("WHERE MetricId = {0}", metric.Id), db, "1");
                        usage_samples.Reload ();

                        for (long i = 0; i < usage_samples.Cache.Count; i++) {
                            var sample = usage_samples.Cache.GetValue (i);
                            Console.WriteLine (
                                "{1} {0} {2} {0} {3} {0} {4}",
                                "<TUFTE>", DateTimeUtil.FromDateTime (sample.Stamp), sample.UserId, sample.CacheEntryId, sample.CacheEntryId
                            );
                        }

                        return;
                    }

                    db.Import ();
                    new MetaMetrics (db);
                }
            } catch (Exception e) {
                Console.WriteLine ("Going down, got exception {0}", e);
                throw;
            }
        }
Esempio n. 2
0
        public MetaMetrics(Database db)
        {
            var latest_samples = new SampleModel("GROUP BY UserID, MetricID ORDER BY stamp desc", db, "COUNT(DISTINCT(UserID)), MIN(Stamp), MAX(Stamp)");

            latest_samples.Cache.AggregatesUpdated += (reader) => {
                Console.WriteLine("Total unique users for this time slice: {0}", reader[1]);
                Console.WriteLine("First report was on {0}", SqliteUtils.FromDbFormat(typeof(DateTime), reader[2]));
                Console.WriteLine("Last report was on {0}", SqliteUtils.FromDbFormat(typeof(DateTime), reader[3]));
                Console.WriteLine();
            };
            latest_samples.Reload();

            var string_summary = new MetricSampleModel(latest_samples.Cache, db,
                                                       @"COUNT(DISTINCT(UserID))"
                                                       );

            string_summary.Cache.AggregatesUpdated += (agg_reader) => {
                Console.WriteLine(String.Format("   Users:  {0}", fmt), agg_reader[1]);
                using (var reader = new HyenaDataReader(db.Query(
                                                            @"SELECT COUNT(DISTINCT(UserId)) as users, Value FROM Samples, HyenaCache
                        WHERE MetricId = ? AND HyenaCache.ModelID = ? AND HyenaCache.ItemID = Samples.ID
                        GROUP BY Value ORDER BY users DESC", string_summary.MetricId, string_summary.Cache.CacheId))) {
                    while (reader.Read())
                    {
                        Console.WriteLine("   {0,-5}: {1,-20}", reader.Get <long> (0), reader.Get <string> (1));
                    }
                }
                Console.WriteLine();
            };

            var numeric_slice = new MetricSampleModel(latest_samples.Cache, db,
                                                      @"MIN(CAST(Value as NUMERIC)), MAX(CAST(Value as NUMERIC)),
                  AVG(CAST(Value as NUMERIC)), HYENA_METRICS_MEDIAN_DOUBLE(CAST(Value as NUMERIC)), COUNT(DISTINCT(UserID))"
                                                      );

            numeric_slice.Cache.AggregatesUpdated += (reader) => {
                Console.WriteLine(String.Format("   Users:  {0}", fmt), reader[5]);
                Console.WriteLine(String.Format("   Min:    {0}", fmt), Metric.ToString(numeric_slice.MetricName, reader[1]));
                Console.WriteLine(String.Format("   Avg:    {0}", fmt), Metric.ToString(numeric_slice.MetricName, reader[3]));
                Console.WriteLine(String.Format("   Median: {0}", fmt), Metric.ToString(numeric_slice.MetricName, reader[4]));
                Console.WriteLine(String.Format("   Max:    {0}", fmt), Metric.ToString(numeric_slice.MetricName, reader[2]));
                Console.WriteLine();
            };

            var metrics = db.QueryEnumerable <string> ("SELECT Name FROM Metrics ORDER BY Name ASC");

            foreach (var metric in metrics)
            {
                switch (GetMetricType(metric))
                {
                case "string":
                    Console.WriteLine("{0}:", metric);
                    string_summary.ChangeMetric(db, metric);
                    break;

                //case "timespan" : SummarizeNumeric<TimeSpan> (metric); break;
                //case "datetime" : SummarizeNumeric<DateTime> (metric); break;
                case "float":
                    Console.WriteLine("{0}:", metric);
                    //SummarizeNumeric<long> (metric_cache);
                    numeric_slice.ChangeMetric(db, metric);
                    break;
                    //case "float":
                    //SummarizeNumeric<double> (metric_cache);
                    //break;
                }
            }
        }
Esempio n. 3
0
        public MetaMetrics(Database db)
        {
            var latest_samples = new SampleModel ("GROUP BY UserID, MetricID ORDER BY stamp desc", db, "COUNT(DISTINCT(UserID)), MIN(Stamp), MAX(Stamp)");
            latest_samples.Cache.AggregatesUpdated += (reader) => {
                Console.WriteLine ("Total unique users for this time slice: {0}", reader[1]);
                Console.WriteLine ("First report was on {0}", SqliteUtils.FromDbFormat (typeof(DateTime), reader[2]));
                Console.WriteLine ("Last report was on {0}", SqliteUtils.FromDbFormat (typeof(DateTime), reader[3]));
                Console.WriteLine ();
            };
            latest_samples.Reload ();

            var string_summary = new MetricSampleModel (latest_samples.Cache, db,
                @"COUNT(DISTINCT(UserID))"
            );
            string_summary.Cache.AggregatesUpdated += (agg_reader) => {
                Console.WriteLine (String.Format ("   Users:  {0}", fmt), agg_reader[1]);
                using (var reader = new HyenaDataReader (db.Query (
                    @"SELECT COUNT(DISTINCT(UserId)) as users, Value FROM Samples, HyenaCache
                        WHERE MetricId = ? AND HyenaCache.ModelID = ? AND HyenaCache.ItemID = Samples.ID
                        GROUP BY Value ORDER BY users DESC", string_summary.MetricId, string_summary.Cache.CacheId))) {
                    while (reader.Read ()) {
                        Console.WriteLine ("   {0,-5}: {1,-20}", reader.Get<long> (0), reader.Get<string> (1));
                    }
                }
                Console.WriteLine ();
            };

            var numeric_slice = new MetricSampleModel (latest_samples.Cache, db,
                @"MIN(CAST(Value as NUMERIC)), MAX(CAST(Value as NUMERIC)),
                  AVG(CAST(Value as NUMERIC)), HYENA_METRICS_MEDIAN_DOUBLE(CAST(Value as NUMERIC)), COUNT(DISTINCT(UserID))"
            );

            numeric_slice.Cache.AggregatesUpdated += (reader) => {
                Console.WriteLine (String.Format ("   Users:  {0}", fmt), reader[5]);
                Console.WriteLine (String.Format ("   Min:    {0}", fmt), Metric.ToString (numeric_slice.MetricName, reader[1]));
                Console.WriteLine (String.Format ("   Avg:    {0}", fmt), Metric.ToString (numeric_slice.MetricName, reader[3]));
                Console.WriteLine (String.Format ("   Median: {0}", fmt), Metric.ToString (numeric_slice.MetricName, reader[4]));
                Console.WriteLine (String.Format ("   Max:    {0}", fmt), Metric.ToString (numeric_slice.MetricName, reader[2]));
                Console.WriteLine ();
            };

            var metrics = db.QueryEnumerable<string> ("SELECT Name FROM Metrics ORDER BY Name ASC");
            foreach (var metric in metrics) {
                switch (GetMetricType (metric)) {
                case "string":
                    Console.WriteLine ("{0}:", metric);
                    string_summary.ChangeMetric (db, metric);
                    break;
                //case "timespan" : SummarizeNumeric<TimeSpan> (metric); break;
                //case "datetime" : SummarizeNumeric<DateTime> (metric); break;
                case "float":
                    Console.WriteLine ("{0}:", metric);
                    //SummarizeNumeric<long> (metric_cache);
                    numeric_slice.ChangeMetric (db, metric);
                    break;
                //case "float":
                    //SummarizeNumeric<double> (metric_cache);
                    //break;
                }
            }
        }