2012-12-20 11:18:54 +00:00
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <math.h> // log2()
|
|
|
|
|
|
|
|
|
|
#include <boost/algorithm/string.hpp>
|
|
|
|
|
|
|
|
|
|
#include <Poco/NumberParser.h>
|
|
|
|
|
#include <Poco/StringTokenizer.h>
|
|
|
|
|
|
2013-06-21 20:30:18 +00:00
|
|
|
|
#include <DB/IO/WriteHelpers.h>
|
|
|
|
|
|
2012-12-20 11:18:54 +00:00
|
|
|
|
#include <Yandex/DateLUT.h>
|
|
|
|
|
#include <strconvert/hash64.h>
|
|
|
|
|
#include <statdaemons/RegionsHierarchy.h>
|
|
|
|
|
#include <statdaemons/TechDataHierarchy.h>
|
|
|
|
|
#include <statdaemons/Interests.h>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// Код в основном взят из из OLAP-server. Здесь нужен только для парсинга значений атрибутов.
|
|
|
|
|
|
|
|
|
|
namespace DB
|
|
|
|
|
{
|
|
|
|
|
namespace OLAP
|
|
|
|
|
{
|
|
|
|
|
|
2013-07-15 01:51:13 +00:00
|
|
|
|
typedef Int64 BinaryData;
|
2012-12-20 11:18:54 +00:00
|
|
|
|
|
|
|
|
|
/** Информация о типе атрибута */
|
|
|
|
|
struct IAttributeMetadata
|
|
|
|
|
{
|
|
|
|
|
/// получение значения из строки в запросе
|
|
|
|
|
virtual BinaryData parse(const std::string & s) const = 0;
|
|
|
|
|
virtual ~IAttributeMetadata() {}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// атрибут - заглушка, всегда равен нулю, подходит для подстановки в агрегатную функцию count
|
|
|
|
|
struct DummyAttribute : public IAttributeMetadata
|
|
|
|
|
{
|
|
|
|
|
BinaryData parse(const std::string & s) const { return 0; }
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// базовый класс для атрибутов, которые являются просто UInt8, UInt16, UInt32 или UInt64 (таких тоже много)
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct AttributeUIntBase : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
return static_cast<BinaryData>(Poco::NumberParser::parseUnsigned64(s));
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// базовый класс для атрибутов, которые являются Int8, Int16, Int32 или Int64
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct AttributeIntBase : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
return Poco::NumberParser::parse64(s);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** Базовые классы для атрибутов, получаемых из времени (unix timestamp, 4 байта) */
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct AttributeDateTimeBase : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
struct tm tm;
|
2014-07-01 01:03:16 +00:00
|
|
|
|
|
2012-12-20 11:18:54 +00:00
|
|
|
|
memset(&tm, 0, sizeof(tm));
|
|
|
|
|
sscanf(s.c_str(), "%04d-%02d-%02d %02d:%02d:%02d",
|
|
|
|
|
&tm.tm_year, &tm.tm_mon, &tm.tm_mday, &tm.tm_hour, &tm.tm_min, &tm.tm_sec);
|
|
|
|
|
tm.tm_mon--;
|
|
|
|
|
tm.tm_year -= 1900;
|
|
|
|
|
tm.tm_isdst = -1;
|
2014-07-01 01:03:16 +00:00
|
|
|
|
|
2013-08-20 17:54:08 +00:00
|
|
|
|
time_t res = mktime(&tm);
|
|
|
|
|
return res >= 0 ? res : 0;
|
2012-12-20 11:18:54 +00:00
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct AttributeDateBase : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
struct tm tm;
|
2014-07-01 01:03:16 +00:00
|
|
|
|
|
2012-12-20 11:18:54 +00:00
|
|
|
|
memset(&tm, 0, sizeof(tm));
|
|
|
|
|
sscanf(s.c_str(), "%04d-%02d-%02d",
|
|
|
|
|
&tm.tm_year, &tm.tm_mon, &tm.tm_mday);
|
|
|
|
|
tm.tm_mon--;
|
|
|
|
|
tm.tm_year -= 1900;
|
|
|
|
|
tm.tm_isdst = -1;
|
2014-07-01 01:03:16 +00:00
|
|
|
|
|
2013-08-20 17:54:08 +00:00
|
|
|
|
time_t res = mktime(&tm);
|
|
|
|
|
return res >= 0 ? res : 0;
|
2012-12-20 11:18:54 +00:00
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct AttributeTimeBase : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
struct tm tm;
|
2014-07-01 01:03:16 +00:00
|
|
|
|
|
2012-12-20 11:18:54 +00:00
|
|
|
|
memset(&tm, 0, sizeof(tm));
|
|
|
|
|
sscanf(s.c_str(), "%02d:%02d:%02d",
|
|
|
|
|
&tm.tm_hour, &tm.tm_min, &tm.tm_sec);
|
2014-07-01 01:03:16 +00:00
|
|
|
|
|
2013-08-20 17:54:08 +00:00
|
|
|
|
time_t res = mktime(&tm);
|
|
|
|
|
return res >= 0 ? res : 0;
|
2012-12-20 11:18:54 +00:00
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
typedef AttributeUIntBase AttributeYearBase;
|
|
|
|
|
typedef AttributeUIntBase AttributeMonthBase;
|
|
|
|
|
typedef AttributeUIntBase AttributeDayOfWeekBase;
|
|
|
|
|
typedef AttributeUIntBase AttributeDayOfMonthBase;
|
|
|
|
|
typedef AttributeDateBase AttributeWeekBase;
|
|
|
|
|
typedef AttributeUIntBase AttributeHourBase;
|
|
|
|
|
typedef AttributeUIntBase AttributeMinuteBase;
|
|
|
|
|
typedef AttributeUIntBase AttributeSecondBase;
|
2012-12-20 11:18:54 +00:00
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct AttributeShortStringBase : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
std::string tmp = s;
|
|
|
|
|
tmp.resize(sizeof(BinaryData));
|
|
|
|
|
return *reinterpret_cast<const BinaryData *>(tmp.data());
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** Атрибуты, относящиеся к времени начала визита */
|
2013-07-15 05:49:33 +00:00
|
|
|
|
typedef AttributeDateTimeBase VisitStartDateTime;
|
2013-07-17 17:59:57 +00:00
|
|
|
|
typedef AttributeDateTimeBase VisitStartDateTimeRoundedToMinute;
|
|
|
|
|
typedef AttributeDateTimeBase VisitStartDateTimeRoundedToHour;
|
|
|
|
|
typedef AttributeDateTimeBase VisitStartDateTime;
|
2013-07-15 05:49:33 +00:00
|
|
|
|
typedef AttributeDateBase VisitStartDate;
|
2013-07-17 17:59:57 +00:00
|
|
|
|
typedef AttributeDateBase VisitStartDateRoundedToMonth;
|
2013-07-15 05:49:33 +00:00
|
|
|
|
typedef AttributeWeekBase VisitStartWeek;
|
|
|
|
|
typedef AttributeTimeBase VisitStartTime;
|
2013-07-17 17:59:57 +00:00
|
|
|
|
typedef AttributeTimeBase VisitStartTimeRoundedToMinute;
|
2013-07-15 05:49:33 +00:00
|
|
|
|
typedef AttributeYearBase VisitStartYear;
|
|
|
|
|
typedef AttributeMonthBase VisitStartMonth;
|
|
|
|
|
typedef AttributeDayOfWeekBase VisitStartDayOfWeek;
|
|
|
|
|
typedef AttributeDayOfMonthBase VisitStartDayOfMonth;
|
|
|
|
|
typedef AttributeHourBase VisitStartHour;
|
|
|
|
|
typedef AttributeMinuteBase VisitStartMinute;
|
|
|
|
|
typedef AttributeSecondBase VisitStartSecond;
|
2012-12-20 11:18:54 +00:00
|
|
|
|
|
|
|
|
|
/** Атрибуты, относящиеся к времени начала первого визита */
|
2013-07-15 05:49:33 +00:00
|
|
|
|
typedef AttributeDateTimeBase FirstVisitDateTime;
|
|
|
|
|
typedef AttributeDateBase FirstVisitDate;
|
|
|
|
|
typedef AttributeWeekBase FirstVisitWeek;
|
|
|
|
|
typedef AttributeTimeBase FirstVisitTime;
|
|
|
|
|
typedef AttributeYearBase FirstVisitYear;
|
|
|
|
|
typedef AttributeMonthBase FirstVisitMonth;
|
|
|
|
|
typedef AttributeDayOfWeekBase FirstVisitDayOfWeek;
|
|
|
|
|
typedef AttributeDayOfMonthBase FirstVisitDayOfMonth;
|
|
|
|
|
typedef AttributeHourBase FirstVisitHour;
|
|
|
|
|
typedef AttributeMinuteBase FirstVisitMinute;
|
|
|
|
|
typedef AttributeSecondBase FirstVisitSecond;
|
2012-12-20 11:18:54 +00:00
|
|
|
|
|
|
|
|
|
/** Атрибуты, относящиеся к времени начала предпоследнего визита */
|
2013-07-15 05:49:33 +00:00
|
|
|
|
typedef AttributeDateBase PredLastVisitDate;
|
|
|
|
|
typedef AttributeWeekBase PredLastVisitWeek;
|
|
|
|
|
typedef AttributeYearBase PredLastVisitYear;
|
|
|
|
|
typedef AttributeMonthBase PredLastVisitMonth;
|
|
|
|
|
typedef AttributeDayOfWeekBase PredLastVisitDayOfWeek;
|
|
|
|
|
typedef AttributeDayOfMonthBase PredLastVisitDayOfMonth;
|
2012-12-20 11:18:54 +00:00
|
|
|
|
|
|
|
|
|
/** Атрибуты, относящиеся к времени на компьютере посетителя */
|
2013-07-15 05:49:33 +00:00
|
|
|
|
typedef AttributeDateTimeBase ClientDateTime;
|
|
|
|
|
typedef AttributeTimeBase ClientTime;
|
|
|
|
|
typedef AttributeHourBase ClientTimeHour;
|
|
|
|
|
typedef AttributeMinuteBase ClientTimeMinute;
|
|
|
|
|
typedef AttributeSecondBase ClientTimeSecond;
|
2012-12-20 11:18:54 +00:00
|
|
|
|
|
|
|
|
|
/** Базовый класс для атрибутов, для которых хранится хэш. */
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct AttributeHashBase : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
return strconvert::hash64(s);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
typedef AttributeHashBase EndURLHash;
|
|
|
|
|
typedef AttributeHashBase RefererHash;
|
|
|
|
|
typedef AttributeHashBase SearchPhraseHash;
|
|
|
|
|
typedef AttributeHashBase RefererDomainHash;
|
|
|
|
|
typedef AttributeHashBase StartURLHash;
|
|
|
|
|
typedef AttributeHashBase StartURLDomainHash;
|
|
|
|
|
typedef AttributeUIntBase RegionID;
|
|
|
|
|
typedef AttributeUIntBase RegionCity;
|
|
|
|
|
typedef AttributeUIntBase RegionArea;
|
|
|
|
|
typedef AttributeUIntBase RegionCountry;
|
|
|
|
|
typedef AttributeIntBase TraficSourceID;
|
2013-08-29 17:54:37 +00:00
|
|
|
|
typedef AttributeIntBase CorrectedTraficSourceID;
|
|
|
|
|
typedef AttributeUIntBase CorrectedSearchEngineID;
|
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
typedef AttributeUIntBase IsNewUser;
|
|
|
|
|
typedef AttributeUIntBase UserNewness;
|
2012-12-20 11:18:54 +00:00
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct UserNewnessInterval : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
return Poco::NumberParser::parseUnsigned(s);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
typedef AttributeUIntBase UserReturnTime;
|
2012-12-20 11:18:54 +00:00
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct UserReturnTimeInterval : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
return Poco::NumberParser::parseUnsigned(s);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
typedef AttributeUIntBase UserVisitsPeriod;
|
2012-12-20 11:18:54 +00:00
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct UserVisitsPeriodInterval : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
return Poco::NumberParser::parseUnsigned(s);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
typedef AttributeUIntBase VisitTime;
|
|
|
|
|
typedef AttributeUIntBase VisitTimeInterval;
|
|
|
|
|
typedef AttributeUIntBase PageViews;
|
|
|
|
|
typedef AttributeUIntBase PageViewsInterval;
|
|
|
|
|
typedef AttributeUIntBase Bounce;
|
|
|
|
|
typedef AttributeUIntBase BouncePrecise;
|
|
|
|
|
typedef AttributeUIntBase IsYandex;
|
|
|
|
|
typedef AttributeUIntBase UserID;
|
|
|
|
|
typedef AttributeDateTimeBase UserIDCreateDateTime;
|
|
|
|
|
typedef AttributeDateBase UserIDCreateDate;
|
|
|
|
|
typedef AttributeUIntBase UserIDAge;
|
|
|
|
|
typedef AttributeUIntBase UserIDAgeInterval;
|
|
|
|
|
typedef AttributeUIntBase TotalVisits;
|
|
|
|
|
typedef AttributeUIntBase TotalVisitsInterval;
|
|
|
|
|
typedef AttributeUIntBase Age;
|
|
|
|
|
typedef AttributeUIntBase AgeInterval;
|
|
|
|
|
typedef AttributeUIntBase Sex;
|
|
|
|
|
typedef AttributeUIntBase Income;
|
|
|
|
|
typedef AttributeUIntBase AdvEngineID;
|
2012-12-20 11:18:54 +00:00
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct DotNet : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
Poco::StringTokenizer tokenizer(s, ".");
|
|
|
|
|
return tokenizer.count() == 0 ? 0
|
|
|
|
|
: (tokenizer.count() == 1 ? (Poco::NumberParser::parseUnsigned(tokenizer[0]) << 8)
|
|
|
|
|
: ((Poco::NumberParser::parseUnsigned(tokenizer[0]) << 8) + Poco::NumberParser::parseUnsigned(tokenizer[1])));
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct DotNetMajor : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
2013-07-15 05:49:33 +00:00
|
|
|
|
return Poco::NumberParser::parseUnsigned(s);
|
2012-12-20 11:18:54 +00:00
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct Flash : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
2013-07-15 05:49:33 +00:00
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
Poco::StringTokenizer tokenizer(s, ".");
|
|
|
|
|
return tokenizer.count() == 0 ? 0
|
|
|
|
|
: (tokenizer.count() == 1 ? (Poco::NumberParser::parseUnsigned(tokenizer[0]) << 8)
|
|
|
|
|
: ((Poco::NumberParser::parseUnsigned(tokenizer[0]) << 8) + Poco::NumberParser::parseUnsigned(tokenizer[1])));
|
|
|
|
|
}
|
2012-12-20 11:18:54 +00:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct FlashExists : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
2013-07-15 05:49:33 +00:00
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
return Poco::NumberParser::parseUnsigned(s);
|
|
|
|
|
}
|
2012-12-20 11:18:54 +00:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct FlashMajor : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
2013-07-15 05:49:33 +00:00
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
return Poco::NumberParser::parseUnsigned(s);
|
|
|
|
|
}
|
2012-12-20 11:18:54 +00:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct Silverlight : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
2013-07-15 05:49:33 +00:00
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
Poco::StringTokenizer tokenizer(s, ".");
|
|
|
|
|
return tokenizer.count() == 0 ? 0
|
|
|
|
|
: (tokenizer.count() == 1
|
|
|
|
|
? (Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 56)
|
|
|
|
|
: (tokenizer.count() == 2
|
|
|
|
|
? ((Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 56)
|
|
|
|
|
| (Poco::NumberParser::parseUnsigned64(tokenizer[1]) << 48))
|
|
|
|
|
: (tokenizer.count() == 3
|
|
|
|
|
? ((Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 56)
|
|
|
|
|
| (Poco::NumberParser::parseUnsigned64(tokenizer[1]) << 48)
|
|
|
|
|
| (Poco::NumberParser::parseUnsigned64(tokenizer[2]) << 16))
|
|
|
|
|
: ((Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 56)
|
|
|
|
|
| (Poco::NumberParser::parseUnsigned64(tokenizer[1]) << 48)
|
|
|
|
|
| (Poco::NumberParser::parseUnsigned64(tokenizer[2]) << 16)
|
|
|
|
|
| Poco::NumberParser::parseUnsigned64(tokenizer[3])))));
|
|
|
|
|
}
|
2012-12-20 11:18:54 +00:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
typedef AttributeUIntBase SilverlightMajor;
|
|
|
|
|
typedef AttributeUIntBase Hits;
|
|
|
|
|
typedef AttributeUIntBase HitsInterval;
|
|
|
|
|
typedef AttributeUIntBase JavaEnable;
|
|
|
|
|
typedef AttributeUIntBase CookieEnable;
|
|
|
|
|
typedef AttributeUIntBase JavascriptEnable;
|
|
|
|
|
typedef AttributeUIntBase IsMobile;
|
|
|
|
|
typedef AttributeUIntBase MobilePhoneID;
|
|
|
|
|
typedef AttributeHashBase MobilePhoneModelHash;
|
|
|
|
|
typedef AttributeShortStringBase MobilePhoneModel;
|
2012-12-20 11:18:54 +00:00
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct BrowserLanguage : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
2013-07-15 05:49:33 +00:00
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
std::string tmp = s;
|
|
|
|
|
tmp.resize(sizeof(UInt16));
|
|
|
|
|
return *reinterpret_cast<const UInt16 *>(tmp.data());
|
|
|
|
|
}
|
2012-12-20 11:18:54 +00:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
typedef BrowserLanguage BrowserCountry;
|
|
|
|
|
typedef AttributeShortStringBase TopLevelDomain;
|
|
|
|
|
typedef AttributeShortStringBase URLScheme;
|
|
|
|
|
typedef AttributeUIntBase IPNetworkID;
|
|
|
|
|
typedef AttributeIntBase ClientTimeZone;
|
|
|
|
|
typedef AttributeUIntBase OSID;
|
|
|
|
|
typedef AttributeUIntBase OSMostAncestor;
|
2012-12-20 11:18:54 +00:00
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct ClientIP : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
Poco::StringTokenizer tokenizer(s, ".");
|
|
|
|
|
return tokenizer.count() == 0 ? 0
|
|
|
|
|
: (tokenizer.count() == 1 ? (Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 24)
|
|
|
|
|
: (tokenizer.count() == 2 ? (Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 24)
|
|
|
|
|
+ (Poco::NumberParser::parseUnsigned(tokenizer[1]) << 16)
|
|
|
|
|
: (tokenizer.count() == 3 ? (Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 24)
|
|
|
|
|
+ (Poco::NumberParser::parseUnsigned(tokenizer[1]) << 16)
|
|
|
|
|
+ (Poco::NumberParser::parseUnsigned(tokenizer[2]) << 8)
|
|
|
|
|
: ((Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 24)
|
|
|
|
|
+ (Poco::NumberParser::parseUnsigned(tokenizer[1]) << 16)
|
|
|
|
|
+ (Poco::NumberParser::parseUnsigned(tokenizer[2]) << 8)
|
|
|
|
|
+ Poco::NumberParser::parseUnsigned(tokenizer[3])))));
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct Resolution : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
Poco::StringTokenizer tokenizer(s, "x");
|
|
|
|
|
return tokenizer.count() == 0 ? 0
|
|
|
|
|
: (tokenizer.count() == 1 ? (Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 24)
|
|
|
|
|
: (tokenizer.count() == 2 ? (Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 24)
|
|
|
|
|
+ (Poco::NumberParser::parseUnsigned(tokenizer[1]) << 8)
|
|
|
|
|
: ((Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 24)
|
|
|
|
|
+ (Poco::NumberParser::parseUnsigned(tokenizer[1]) << 8)
|
|
|
|
|
+ Poco::NumberParser::parseUnsigned(tokenizer[2]))));
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct ResolutionWidthHeight : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
Poco::StringTokenizer tokenizer(s, "x");
|
|
|
|
|
return tokenizer.count() == 0 ? 0
|
|
|
|
|
: (tokenizer.count() == 1 ? (Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 16)
|
|
|
|
|
: ((Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 16)
|
|
|
|
|
+ Poco::NumberParser::parseUnsigned(tokenizer[1])));
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct ResolutionWidth : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
return Poco::NumberParser::parseUnsigned(s);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct ResolutionHeight : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
return Poco::NumberParser::parseUnsigned(s);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
typedef ResolutionWidth ResolutionWidthInterval;
|
|
|
|
|
typedef ResolutionHeight ResolutionHeightInterval;
|
2012-12-20 11:18:54 +00:00
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct ResolutionColor : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
return Poco::NumberParser::parseUnsigned(s);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct WindowClientArea : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
Poco::StringTokenizer tokenizer(s, "x");
|
|
|
|
|
return tokenizer.count() == 0 ? 0
|
|
|
|
|
: (tokenizer.count() == 1 ? (Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 16)
|
|
|
|
|
: ((Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 16)
|
|
|
|
|
+ Poco::NumberParser::parseUnsigned(tokenizer[1])));
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
typedef WindowClientArea WindowClientAreaInterval;
|
|
|
|
|
typedef AttributeUIntBase WindowClientWidth;
|
|
|
|
|
typedef WindowClientWidth WindowClientWidthInterval;
|
|
|
|
|
typedef AttributeUIntBase WindowClientHeight;
|
|
|
|
|
typedef WindowClientHeight WindowClientHeightInterval;
|
|
|
|
|
typedef AttributeUIntBase SearchEngineID;
|
|
|
|
|
typedef AttributeUIntBase SearchEngineMostAncestor;
|
|
|
|
|
typedef AttributeUIntBase CodeVersion;
|
2012-12-20 11:18:54 +00:00
|
|
|
|
|
|
|
|
|
/// формат строки вида "10 7.5b", где первое число - UserAgentID, дальше - версия.
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct UserAgent : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
Poco::StringTokenizer tokenizer(s, " .");
|
|
|
|
|
return tokenizer.count() == 0 ? 0
|
2013-05-21 14:05:46 +00:00
|
|
|
|
: (tokenizer.count() == 1 ? (Poco::NumberParser::parseUnsigned(tokenizer[0]) << 24)
|
|
|
|
|
: (tokenizer.count() == 2 ? (Poco::NumberParser::parseUnsigned(tokenizer[0]) << 24)
|
|
|
|
|
+ (Poco::NumberParser::parseUnsigned(tokenizer[1]) << 16)
|
|
|
|
|
: ((Poco::NumberParser::parseUnsigned(tokenizer[0]) << 24)
|
|
|
|
|
+ (Poco::NumberParser::parseUnsigned(tokenizer[1]) << 16)
|
2014-07-11 19:48:41 +00:00
|
|
|
|
+ (static_cast<UInt32>(tokenizer[2][1]) << 8)
|
|
|
|
|
+ (tokenizer[2][0]))));
|
2012-12-20 11:18:54 +00:00
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct UserAgentVersion : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
Poco::StringTokenizer tokenizer(s, ".");
|
|
|
|
|
return tokenizer.count() == 0 ? 0
|
2013-05-21 14:05:46 +00:00
|
|
|
|
: (tokenizer.count() == 1 ? (Poco::NumberParser::parseUnsigned(tokenizer[0]) << 16)
|
|
|
|
|
: ((Poco::NumberParser::parseUnsigned(tokenizer[0]) << 16)
|
2014-07-11 19:48:41 +00:00
|
|
|
|
+ (static_cast<UInt32>(tokenizer[1][1]) << 8)
|
|
|
|
|
+ tokenizer[1][0]));
|
2012-12-20 11:18:54 +00:00
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct UserAgentMajor : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
Poco::StringTokenizer tokenizer(s, " ");
|
|
|
|
|
return tokenizer.count() == 0 ? 0
|
2013-05-21 14:05:46 +00:00
|
|
|
|
: (tokenizer.count() == 1 ? (Poco::NumberParser::parseUnsigned(tokenizer[0]) << 8)
|
|
|
|
|
: ((Poco::NumberParser::parseUnsigned(tokenizer[0]) << 8)
|
|
|
|
|
+ Poco::NumberParser::parseUnsigned(tokenizer[1])));
|
2012-12-20 11:18:54 +00:00
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct UserAgentID : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
return Poco::NumberParser::parseUnsigned(s);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
typedef AttributeIntBase ClickGoodEvent;
|
|
|
|
|
typedef AttributeIntBase ClickPriorityID;
|
|
|
|
|
typedef AttributeIntBase ClickBannerID;
|
|
|
|
|
typedef AttributeIntBase ClickPageID;
|
|
|
|
|
typedef AttributeIntBase ClickPlaceID;
|
|
|
|
|
typedef AttributeIntBase ClickTypeID;
|
|
|
|
|
typedef AttributeIntBase ClickResourceID;
|
|
|
|
|
typedef AttributeUIntBase ClickDomainID;
|
|
|
|
|
typedef AttributeUIntBase ClickCost;
|
|
|
|
|
typedef AttributeHashBase ClickURLHash;
|
|
|
|
|
typedef AttributeUIntBase ClickOrderID;
|
|
|
|
|
typedef AttributeUIntBase GoalReachesAny;
|
|
|
|
|
typedef AttributeUIntBase GoalReachesDepth;
|
|
|
|
|
typedef AttributeUIntBase GoalReachesURL;
|
|
|
|
|
typedef AttributeUIntBase ConvertedAny;
|
|
|
|
|
typedef AttributeUIntBase ConvertedDepth;
|
|
|
|
|
typedef AttributeUIntBase ConvertedURL;
|
|
|
|
|
typedef AttributeUIntBase GoalReaches;
|
|
|
|
|
typedef AttributeUIntBase Converted;
|
|
|
|
|
typedef AttributeUIntBase CounterID;
|
|
|
|
|
typedef AttributeUIntBase VisitID;
|
2012-12-20 11:18:54 +00:00
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
struct Interests : public IAttributeMetadata
|
2012-12-20 11:18:54 +00:00
|
|
|
|
{
|
|
|
|
|
BinaryData parse(const std::string & s) const
|
|
|
|
|
{
|
|
|
|
|
if(s.empty())
|
|
|
|
|
return 0;
|
|
|
|
|
using namespace boost::algorithm;
|
|
|
|
|
BinaryData value = 0;
|
2014-07-01 01:03:16 +00:00
|
|
|
|
|
2012-12-20 11:18:54 +00:00
|
|
|
|
///коряво
|
|
|
|
|
for(split_iterator<std::string::const_iterator> i
|
|
|
|
|
= make_split_iterator(s, token_finder(is_any_of(","),
|
|
|
|
|
token_compress_on)); i != split_iterator<std::string::const_iterator>(); ++i)
|
|
|
|
|
{
|
|
|
|
|
UInt16 interest = Poco::NumberParser::parseUnsigned(boost::copy_range<std::string>(*i));
|
2013-05-16 14:35:57 +00:00
|
|
|
|
value |= (interest == 0x2000 ? 0x2000 :
|
|
|
|
|
(interest == 0x1000 ? 0x1000 :
|
|
|
|
|
(interest == 0x800 ? 0x800 :
|
|
|
|
|
(interest == 0x400 ? 0x400 :
|
|
|
|
|
(interest == 0x200 ? 0x200 :
|
|
|
|
|
(interest == 0x100 ? 0x100 :
|
2014-07-01 01:03:16 +00:00
|
|
|
|
(interest == 0x80 ? 0x80 :
|
2013-05-16 14:35:57 +00:00
|
|
|
|
(interest == 0x40 ? 0x40 :
|
|
|
|
|
(interest == 0x20 ? 0x20 :
|
|
|
|
|
(interest == 0x10 ? 0x10 :
|
|
|
|
|
(interest == 8 ? 8 :
|
|
|
|
|
(interest == 4 ? 4 :
|
|
|
|
|
(interest == 2 ? 2 :
|
|
|
|
|
(interest == 1 ? 1 : 0))))))))))))));
|
2012-12-20 11:18:54 +00:00
|
|
|
|
}
|
2014-07-01 01:03:16 +00:00
|
|
|
|
|
2012-12-20 11:18:54 +00:00
|
|
|
|
return value;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2013-07-15 05:49:33 +00:00
|
|
|
|
typedef AttributeUIntBase HasInterestPhoto;
|
|
|
|
|
typedef AttributeUIntBase HasInterestMoviePremieres;
|
|
|
|
|
typedef AttributeUIntBase HasInterestTourism;
|
|
|
|
|
typedef AttributeUIntBase HasInterestFamilyAndChildren;
|
|
|
|
|
typedef AttributeUIntBase HasInterestFinance;
|
|
|
|
|
typedef AttributeUIntBase HasInterestB2B;
|
|
|
|
|
typedef AttributeUIntBase HasInterestCars;
|
|
|
|
|
typedef AttributeUIntBase HasInterestMobileAndInternetCommunications;
|
|
|
|
|
typedef AttributeUIntBase HasInterestBuilding;
|
|
|
|
|
typedef AttributeUIntBase HasInterestCulinary;
|
|
|
|
|
typedef AttributeUIntBase HasInterestSoftware;
|
|
|
|
|
typedef AttributeUIntBase HasInterestEstate;
|
|
|
|
|
typedef AttributeUIntBase HasInterestHealthyLifestyle;
|
|
|
|
|
typedef AttributeUIntBase HasInterestLiterature;
|
|
|
|
|
typedef AttributeHashBase OpenstatServiceNameHash;
|
|
|
|
|
typedef AttributeHashBase OpenstatCampaignIDHash;
|
|
|
|
|
typedef AttributeHashBase OpenstatAdIDHash;
|
|
|
|
|
typedef AttributeHashBase OpenstatSourceIDHash;
|
|
|
|
|
typedef AttributeHashBase UTMSourceHash;
|
|
|
|
|
typedef AttributeHashBase UTMMediumHash;
|
|
|
|
|
typedef AttributeHashBase UTMCampaignHash;
|
|
|
|
|
typedef AttributeHashBase UTMContentHash;
|
|
|
|
|
typedef AttributeHashBase UTMTermHash;
|
|
|
|
|
typedef AttributeHashBase FromHash;
|
|
|
|
|
typedef AttributeUIntBase CLID;
|
|
|
|
|
typedef AttributeUIntBase SocialSourceNetworkID;
|
|
|
|
|
typedef AttributeUIntBase URLCategoryID;
|
|
|
|
|
typedef AttributeUIntBase URLCategoryMostAncestor;
|
|
|
|
|
typedef AttributeUIntBase URLCategorySecondLevel;
|
|
|
|
|
typedef AttributeUIntBase URLRegionID;
|
|
|
|
|
typedef AttributeUIntBase URLRegionCity;
|
|
|
|
|
typedef AttributeUIntBase URLRegionArea;
|
|
|
|
|
typedef AttributeUIntBase URLRegionCountry;
|
2013-07-15 01:51:13 +00:00
|
|
|
|
|
2012-12-20 11:18:54 +00:00
|
|
|
|
|
|
|
|
|
/** Информация о типах атрибутов */
|
|
|
|
|
typedef std::map<std::string, Poco::SharedPtr<IAttributeMetadata> > AttributeMetadatas;
|
|
|
|
|
|
|
|
|
|
inline AttributeMetadatas GetOLAPAttributeMetadata()
|
|
|
|
|
{
|
2014-07-01 01:03:16 +00:00
|
|
|
|
return
|
|
|
|
|
{
|
|
|
|
|
{"DummyAttribute", new DummyAttribute},
|
|
|
|
|
{"VisitStartDateTime", new VisitStartDateTime},
|
|
|
|
|
{"VisitStartDateTimeRoundedToMinute", new VisitStartDateTimeRoundedToMinute},
|
|
|
|
|
{"VisitStartDateTimeRoundedToHour", new VisitStartDateTimeRoundedToHour},
|
|
|
|
|
{"VisitStartDate", new VisitStartDate},
|
|
|
|
|
{"VisitStartDateRoundedToMonth", new VisitStartDateRoundedToMonth},
|
|
|
|
|
{"VisitStartTime", new VisitStartTime},
|
|
|
|
|
{"VisitStartTimeRoundedToMinute", new VisitStartTimeRoundedToMinute},
|
|
|
|
|
{"VisitStartYear", new VisitStartYear},
|
|
|
|
|
{"VisitStartMonth", new VisitStartMonth},
|
|
|
|
|
{"VisitStartDayOfWeek", new VisitStartDayOfWeek},
|
|
|
|
|
{"VisitStartDayOfMonth", new VisitStartDayOfMonth},
|
|
|
|
|
{"VisitStartHour", new VisitStartHour},
|
|
|
|
|
{"VisitStartMinute", new VisitStartMinute},
|
|
|
|
|
{"VisitStartSecond", new VisitStartSecond},
|
|
|
|
|
{"VisitStartWeek", new VisitStartWeek},
|
|
|
|
|
{"FirstVisitDateTime", new FirstVisitDateTime},
|
|
|
|
|
{"FirstVisitDate", new FirstVisitDate},
|
|
|
|
|
{"FirstVisitTime", new FirstVisitTime},
|
|
|
|
|
{"FirstVisitYear", new FirstVisitYear},
|
|
|
|
|
{"FirstVisitMonth", new FirstVisitMonth},
|
|
|
|
|
{"FirstVisitDayOfWeek", new FirstVisitDayOfWeek},
|
|
|
|
|
{"FirstVisitDayOfMonth", new FirstVisitDayOfMonth},
|
|
|
|
|
{"FirstVisitHour", new FirstVisitHour},
|
|
|
|
|
{"FirstVisitMinute", new FirstVisitMinute},
|
|
|
|
|
{"FirstVisitSecond", new FirstVisitSecond},
|
|
|
|
|
{"FirstVisitWeek", new FirstVisitWeek},
|
|
|
|
|
{"PredLastVisitDate", new PredLastVisitDate},
|
|
|
|
|
{"PredLastVisitYear", new PredLastVisitYear},
|
|
|
|
|
{"PredLastVisitMonth", new PredLastVisitMonth},
|
|
|
|
|
{"PredLastVisitDayOfWeek", new PredLastVisitDayOfWeek},
|
|
|
|
|
{"PredLastVisitDayOfMonth", new PredLastVisitDayOfMonth},
|
|
|
|
|
{"PredLastVisitWeek", new PredLastVisitWeek},
|
|
|
|
|
{"RegionID", new RegionID},
|
|
|
|
|
{"RegionCity", new RegionCity},
|
|
|
|
|
{"RegionArea", new RegionArea},
|
|
|
|
|
{"RegionCountry", new RegionCountry},
|
|
|
|
|
{"TraficSourceID", new TraficSourceID},
|
|
|
|
|
{"UserNewness", new UserNewness},
|
|
|
|
|
{"UserNewnessInterval", new UserNewnessInterval},
|
|
|
|
|
{"UserReturnTime", new UserReturnTime},
|
|
|
|
|
{"UserReturnTimeInterval", new UserReturnTimeInterval},
|
|
|
|
|
{"UserVisitsPeriod", new UserVisitsPeriod},
|
|
|
|
|
{"UserVisitsPeriodInterval",new UserVisitsPeriodInterval},
|
|
|
|
|
{"VisitTime", new VisitTime},
|
|
|
|
|
{"VisitTimeInterval", new VisitTimeInterval},
|
|
|
|
|
{"PageViews", new PageViews},
|
|
|
|
|
{"PageViewsInterval", new PageViewsInterval},
|
|
|
|
|
{"UserID", new UserID},
|
|
|
|
|
{"TotalVisits", new TotalVisits},
|
|
|
|
|
{"TotalVisitsInterval", new TotalVisitsInterval},
|
|
|
|
|
{"Age", new Age},
|
|
|
|
|
{"AgeInterval", new AgeInterval},
|
|
|
|
|
{"Sex", new Sex},
|
|
|
|
|
{"Income", new Income},
|
|
|
|
|
{"AdvEngineID", new AdvEngineID},
|
|
|
|
|
{"DotNet", new DotNet},
|
|
|
|
|
{"DotNetMajor", new DotNetMajor},
|
|
|
|
|
{"EndURLHash", new EndURLHash},
|
|
|
|
|
{"Flash", new Flash},
|
|
|
|
|
{"FlashMajor", new FlashMajor},
|
|
|
|
|
{"FlashExists", new FlashExists},
|
|
|
|
|
{"Hits", new Hits},
|
|
|
|
|
{"HitsInterval", new HitsInterval},
|
|
|
|
|
{"JavaEnable", new JavaEnable},
|
|
|
|
|
{"OSID", new OSID},
|
|
|
|
|
{"ClientIP", new ClientIP},
|
|
|
|
|
{"RefererHash", new RefererHash},
|
|
|
|
|
{"RefererDomainHash", new RefererDomainHash},
|
|
|
|
|
{"Resolution", new Resolution},
|
|
|
|
|
{"ResolutionWidthHeight", new ResolutionWidthHeight},
|
|
|
|
|
{"ResolutionWidth", new ResolutionWidth},
|
|
|
|
|
{"ResolutionHeight", new ResolutionHeight},
|
|
|
|
|
{"ResolutionWidthInterval", new ResolutionWidthInterval},
|
|
|
|
|
{"ResolutionHeightInterval",new ResolutionHeightInterval},
|
|
|
|
|
{"ResolutionColor", new ResolutionColor},
|
|
|
|
|
{"CookieEnable", new CookieEnable},
|
|
|
|
|
{"JavascriptEnable", new JavascriptEnable},
|
|
|
|
|
{"IsMobile", new IsMobile},
|
|
|
|
|
{"MobilePhoneID", new MobilePhoneID},
|
|
|
|
|
{"MobilePhoneModel", new MobilePhoneModel},
|
|
|
|
|
{"MobilePhoneModelHash", new MobilePhoneModelHash},
|
|
|
|
|
{"IPNetworkID", new IPNetworkID},
|
|
|
|
|
{"WindowClientArea", new WindowClientArea},
|
|
|
|
|
{"WindowClientWidth", new WindowClientWidth},
|
|
|
|
|
{"WindowClientHeight", new WindowClientHeight},
|
|
|
|
|
{"WindowClientAreaInterval",new WindowClientAreaInterval},
|
|
|
|
|
{"WindowClientWidthInterval",new WindowClientWidthInterval},
|
|
|
|
|
{"WindowClientHeightInterval",new WindowClientHeightInterval},
|
|
|
|
|
{"ClientTimeZone", new ClientTimeZone},
|
|
|
|
|
{"ClientDateTime", new ClientDateTime},
|
|
|
|
|
{"ClientTime", new ClientTime},
|
|
|
|
|
{"ClientTimeHour", new ClientTimeHour},
|
|
|
|
|
{"ClientTimeMinute", new ClientTimeMinute},
|
|
|
|
|
{"ClientTimeSecond", new ClientTimeSecond},
|
|
|
|
|
{"Silverlight", new Silverlight},
|
|
|
|
|
{"SilverlightMajor", new SilverlightMajor},
|
|
|
|
|
{"SearchEngineID", new SearchEngineID},
|
|
|
|
|
{"SearchPhraseHash", new SearchPhraseHash},
|
|
|
|
|
{"StartURLHash", new StartURLHash},
|
|
|
|
|
{"StartURLDomainHash", new StartURLDomainHash},
|
|
|
|
|
{"UserAgent", new UserAgent},
|
|
|
|
|
{"UserAgentVersion", new UserAgentVersion},
|
|
|
|
|
{"UserAgentMajor", new UserAgentMajor},
|
|
|
|
|
{"UserAgentID", new UserAgentID},
|
|
|
|
|
{"ClickGoodEvent", new ClickGoodEvent},
|
|
|
|
|
{"ClickPriorityID", new ClickPriorityID},
|
|
|
|
|
{"ClickBannerID", new ClickBannerID},
|
|
|
|
|
{"ClickPageID", new ClickPageID},
|
|
|
|
|
{"ClickPlaceID", new ClickPlaceID},
|
|
|
|
|
{"ClickTypeID", new ClickTypeID},
|
|
|
|
|
{"ClickResourceID", new ClickResourceID},
|
|
|
|
|
{"ClickDomainID", new ClickDomainID},
|
|
|
|
|
{"ClickCost", new ClickCost},
|
|
|
|
|
{"ClickURLHash", new ClickURLHash},
|
|
|
|
|
{"ClickOrderID", new ClickOrderID},
|
|
|
|
|
{"GoalReaches", new GoalReaches},
|
|
|
|
|
{"GoalReachesAny", new GoalReachesAny},
|
|
|
|
|
{"GoalReachesDepth", new GoalReachesDepth},
|
|
|
|
|
{"GoalReachesURL", new GoalReachesURL},
|
|
|
|
|
{"Converted", new Converted},
|
|
|
|
|
{"ConvertedAny", new ConvertedAny},
|
|
|
|
|
{"ConvertedDepth", new ConvertedDepth},
|
|
|
|
|
{"ConvertedURL", new ConvertedURL},
|
|
|
|
|
{"Bounce", new Bounce},
|
|
|
|
|
{"BouncePrecise", new BouncePrecise},
|
|
|
|
|
{"IsNewUser", new IsNewUser},
|
|
|
|
|
{"CodeVersion", new CodeVersion},
|
|
|
|
|
{"CounterID", new CounterID},
|
|
|
|
|
{"VisitID", new VisitID},
|
|
|
|
|
{"IsYandex", new IsYandex},
|
|
|
|
|
{"TopLevelDomain", new TopLevelDomain},
|
|
|
|
|
{"URLScheme", new URLScheme},
|
|
|
|
|
{"UserIDCreateDateTime", new UserIDCreateDateTime},
|
|
|
|
|
{"UserIDCreateDate", new UserIDCreateDate},
|
|
|
|
|
{"UserIDAge", new UserIDAge},
|
|
|
|
|
{"UserIDAgeInterval", new UserIDAgeInterval},
|
|
|
|
|
{"OSMostAncestor", new OSMostAncestor},
|
|
|
|
|
{"SearchEngineMostAncestor",new SearchEngineMostAncestor},
|
|
|
|
|
{"BrowserLanguage", new BrowserLanguage},
|
|
|
|
|
{"BrowserCountry", new BrowserCountry},
|
|
|
|
|
{"Interests", new Interests},
|
|
|
|
|
{"HasInterestPhoto", new HasInterestPhoto},
|
|
|
|
|
{"HasInterestMoviePremieres", new HasInterestMoviePremieres},
|
|
|
|
|
{"HasInterestMobileAndInternetCommunications", new HasInterestMobileAndInternetCommunications},
|
|
|
|
|
{"HasInterestFinance", new HasInterestFinance},
|
|
|
|
|
{"HasInterestFamilyAndChildren", new HasInterestFamilyAndChildren},
|
|
|
|
|
{"HasInterestCars", new HasInterestCars},
|
|
|
|
|
{"HasInterestB2B", new HasInterestB2B},
|
|
|
|
|
{"HasInterestTourism", new HasInterestTourism},
|
|
|
|
|
{"HasInterestBuilding", new HasInterestBuilding},
|
|
|
|
|
{"HasInterestCulinary", new HasInterestCulinary},
|
|
|
|
|
{"HasInterestSoftware", new HasInterestSoftware},
|
|
|
|
|
{"HasInterestEstate", new HasInterestEstate},
|
|
|
|
|
{"HasInterestHealthyLifestyle", new HasInterestHealthyLifestyle},
|
|
|
|
|
{"HasInterestLiterature", new HasInterestLiterature},
|
|
|
|
|
|
|
|
|
|
{"OpenstatServiceNameHash",new OpenstatServiceNameHash},
|
|
|
|
|
{"OpenstatCampaignIDHash", new OpenstatCampaignIDHash},
|
|
|
|
|
{"OpenstatAdIDHash", new OpenstatAdIDHash},
|
|
|
|
|
{"OpenstatSourceIDHash", new OpenstatSourceIDHash},
|
|
|
|
|
|
|
|
|
|
{"UTMSourceHash", new UTMSourceHash},
|
|
|
|
|
{"UTMMediumHash", new UTMMediumHash},
|
|
|
|
|
{"UTMCampaignHash", new UTMCampaignHash},
|
|
|
|
|
{"UTMContentHash", new UTMContentHash},
|
|
|
|
|
{"UTMTermHash", new UTMTermHash},
|
|
|
|
|
|
|
|
|
|
{"FromHash", new FromHash},
|
|
|
|
|
{"CLID", new CLID},
|
|
|
|
|
|
|
|
|
|
{"SocialSourceNetworkID", new SocialSourceNetworkID},
|
|
|
|
|
|
|
|
|
|
{"URLCategoryID", new URLCategoryID},
|
|
|
|
|
{"URLCategoryMostAncestor", new URLCategoryMostAncestor},
|
|
|
|
|
{"URLCategorySecondLevel", new URLCategorySecondLevel},
|
|
|
|
|
{"URLRegionID", new URLRegionID},
|
|
|
|
|
{"URLRegionCity", new URLRegionCity},
|
|
|
|
|
{"URLRegionArea", new URLRegionArea},
|
|
|
|
|
{"URLRegionCountry", new URLRegionCountry},
|
|
|
|
|
{"CorrectedTraficSourceID", new CorrectedTraficSourceID},
|
|
|
|
|
{"CorrectedSearchEngineID", new CorrectedSearchEngineID},
|
|
|
|
|
};
|
2012-12-20 11:18:54 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|