ETL Process for the Web Server Log Import DTS Task
The Web server log import DTS task imports Web log file data generated by your Web site into the Data Warehouse. Web log file data is obtained when users visit your site and then click links to site pages. The data includes the length of time a user spent visiting your site, the referring site, ad clicks, ad reach, click frequency, and the "path" the user takes through the site. These include entry and exit pages. The Web server log import task also populates the Order and Basket tables.
You use the Web server log import task to provide information about what log file to import and where it is located. The Web log files must be in the World Wide Web Consortium (W3C) extended Web log file format.
The configuration of your application and Web servers will affect the log file data imported during the Web server log import DTS task. Because log files can contain information for more than one site, you may have to parse the log files on a per-site or virtual server level. Therefore, each hit in the log file must be associated with a particular virtual server. The Web server log import task can be configured to filter out the appropriate virtual servers. The virtual server is identified by three properties: port number, IP address, and virtual server key. Because the secure port number (port 443) and the non-secure port (port 80) both effect the virtual server key, they are seen as two different virtual servers, and the Web server log import exclusions must be set up appropriately to include both virtual servers in a Web log import.
Not all lines of the log file will be imported to the Request table because many lines in the log file are caused by hits, not actual requests. Only requests are imported to the Request table. A series of filters are used to distinguish hits from requests in the log file.
The time overlap setting for the Web server log import DTS task will affect the requests imported to the Request table at the start and end of a log file. By default, the Web server log import DTS task will discard requests that overlap another log file by 30 minutes.
The following tables list the columns extracted from the W3C log file, the transformation made, and the tables the data is saved to in the Data Warehouse.
Source columns from the W3C log file |
Transformation |
Target columns from the Request table in the Data Warehouse |
---|---|---|
N/A |
Generated Generated by the log import application. Incremented for each request line of a log file that is stored. This is unique across different imports. |
RequestNum |
cs-uri-query |
Copy Column Contains the complete query string from the log file. |
QueryString |
cs-uri-stem |
Copy Column |
Uri |
cs-bytes |
Copy Column Client to server bytes. |
BytesReceived |
sc-bytes |
Copy Column Server to client bytes. |
BytesSent |
N/A |
Generated This column is generated in the log import application as a unique identifier. |
VisitNum |
date and time |
Concatenation Convert to local time. |
TimeStamp |
N/A |
Generated This is the key member of the SiteURL class. The OLE DB provider will resolve this to SiteURLID in the physical SiteURL table. |
URL |
N/A |
Generated Determines whether this entry is considered a Request (versus a Hit). This can be set to false when the hit is filtered. The most common filtered hit is when an image is requested and it has a Commerce Event attached to it. |
IsRequest |
cs(Referer) |
Copy Column |
ReferrerURL |
cs(Referer) |
Middle of String Takes only the domain piece of the URI. |
ReferrerDomainName |
cs-uri-query (UPM cookieless)ORcs(cookie)ORcs-usernameORcs-ip + cs(User-Agent) |
Generated The user key is the first 8 bytes of an MD4 hash of whatever is used as the user key. What is used as the user key depends on what is in the log file, it can be the UPM query string (cookieless), UPM cookie, user configured cookie, user name, or client IP address and browser agent string. |
UserKey |
sc-win32-status |
Copy Column |
Win32Status |
sc-status |
Copy Column |
HttpStatus |
N/A |
Generated Log import will match a log line to a configured server binding (including the port number (s-port) and IP address (s-ip)). If the server binding is classified as being secure, this column will be set to true. For more information, see How to Configure an Application. |
IsSecure |
cs-method |
Generated GET = 1, POST=2, HEAD=3 |
Method |
time-taken |
Copy Column |
TimeTaken |
N/A |
Generated The first request of a visit detected in the log import is 1, and successively gets incremented for each subsequent request in the visit. |
RequestIndex |
N/A |
Generated If log import detects there is no Commerce Event query string on this line, this will be set to false. |
HasCommerceEvent |
N/A |
Generated This is incremented for each instance of a log import. |
TaskID |
cs-uri-stem |
Middle of String Takes only the first level of the URI, if available. |
Level1Dir |
cs-uri-stem |
Middle of String Takes only the second level of the URI, if available. |
Level2Dir |
cs-uri-stem |
Middle of String Takes only the third level of the URI, if available. |
Level3Dir |
cs-uri-stem |
Middle of String Takes only the fourth level of the URI, if available. |
Level4Dir |
cs-uri-stem |
Middle of String Takes only the fifth level of the URI, if available. |
Level5Dir |
cs-uri-stem |
Middle of String Takes only the sixth level of the URI, if available. |
Level6Dir |
cs(User-Agent) |
Copy Column |
UserAgentName |
UPM Cookie KeyOr cs(cookie)Orcs-ip + cs(User-Agent) |
Generated The UserId is the first 8 bytes of an MD4 hash of whatever is used as the user ID. What is used as the user ID depends on what is in the log file, it can be the UPM query string (cookieless), UPM cookie, user configured cookie, user name, or client IP address and browser agent string. |
UserID |
cs-uri-query |
Copy Column MD4 Hash |
QueryStringKey |
N/A |
Generated Used for check pointing support. |
SubTaskID |
cs-uri-stem |
Copy Column MD4 Hash |
UriKey |
cs(Cookie) |
Middle of String Only the matched cookie is extracted. The shipping schema does not physically store this property, although the schema can be logically extended to store it. |
Cookie |
Writing to the Visit Table
A visit starts when the referrer is not internal to the site. For example, if a user hits your site (<www.microsoft.com>), clicks a link on your site that takes them to a different site (<www.msn.com>), and then returns to your site (<www.microsoft.com>), the Visit table will log two individual visits. The following table shows an example of what the log file for this user might resemble.
Time (in minutes) |
UserName |
URI |
Referrer |
---|---|---|---|
0 |
A |
/default.asp |
- |
1 |
A |
/sample.asp |
<https://www.microsoft.com/default.asp> |
5 |
A |
/default.asp |
<http://www.msn.com> |
If the definition of a visit were based on time alone, this would be one visit. However, the Data Warehouse knows that the user left the site and came back because of the referrer being external to the site. A substring match against the SiteURL table determines whether the referrer is internal. The referrer is checked to be internal using a substring match against the SiteURL table. Some visits recorded in the Visit table may be open visits.
Source columns from the W3C log file |
Transformation |
Target columns from the Visit table in the Data Warehouse |
---|---|---|
N/A |
Generated This column is generated in the log import application as a unique identifier. This is a foreign key to the Visit table. It is also a foreign key to the VisitInfo table; however, the VisitInfo table is only inserted when the user’s visit is finished. |
VisitNum |
date and time |
Concatenation This is the timestamp of the first request in the visit. Convert to Local Time. |
Timestamp |
cs(Referer) |
Copy Column Includes the query string. |
ReferrerURL |
cs(Referer) |
Takes only the domain piece of the URI. |
ReferrerDomainName |
cs-uri-query (UPM cookieless)ORcs(cookie)ORcs-usernameORcs-ip + cs(User-Agent) |
Generated The user key is the first 8 bytes of an MD4 hash of whatever is used as the user key. What is used as the user key depends on what is in the log file, it can be the UPM query string (cookieless), UPM cookie, user configured cookie, user name, or client IP address and browser agent string. |
UserKey |
|
|
UserDomainName |
s-ip |
Copy Column |
IpAddress |
N/A |
Generated This is incremented for each instance of a log import. |
TaskID |
time |
Middle of String |
Hour |
UPM Cookie KeyOr Custom Cookie or IP Address + Browser Agent String |
Generated MD4 Hash |
UserID |
|
|
DateCreated |
cs-username |
Copy Column |
UserName |
N/A |
Generated If the user has a cookie, this is set to True. |
HasCookie |
N/A |
Generated Used for check pointing support. |
SubTaskID |
cs(Cookie) |
Takes only the matched cookies. This property is not physically stored. User can logically extend to store. |
Cookie |
The VisitInfo table represents closed user visits. This class is written from log import when the visit has closed. A visit is closed when an external referrer was encountered or a visit time-out occurred.
Source columns from the W3C log file |
Transformation |
Target columns from the VisitInfo table in the Data Warehouse |
---|---|---|
N/A |
Generated |
CountOfRequest |
N/A |
Generated |
Duration |
N/A |
Generated |
FirstTimeStamp |
N/A |
Generated |
FirstHTimeStamp |
N/A |
Generated This column is generated in the log import application as a unique identifier. This is a foreign key to the Visit table. It is also a foreign key to the VisitInfo table; however, the VisitInfo table is only inserted when the user’s visit is finished. |
VisitNum |
N/A |
Generated This is incremented for each instance of a log import. |
TaskID |
cs-uri-query (UPM cookieless)ORcs(cookie)ORcs-usernameORcs-ip + cs(User-Agent) |
Generated The user key is the first 8 bytes of an MD4 hash of whatever is used as the user key. What is used as the user key depends on what is in the log file, it can be the UPM query string (cookieless), UPM cookie, user configured cookie, user name, or client IP address and browser agent string. |
UserKey |
cs(User-Agent) |
Copy Column |
UserAgentName |
|
|
FirstRequestNum |
|
|
SecondRequestNum |
|
|
LastRequestNum |
|
|
FirstUriKey |
|
|
SecondUriKey |
|
|
LastUriKey |
cs-uri-query (UPM cookieless)ORcs(cookie)ORcs-usernameORcs-ip + cs(User-Agent) |
Generated The user key is the first 8 bytes of an MD4 hash of whatever is used as the user ID. What is used as the user ID depends on what is in the log file, it can be the UPM query string (cookieless), UPM cookie, user configured cookie, user name, or client IP address and browser agent string. |
UserID |
cs(Referer) |
Generated Only the domain piece of the URI is loaded. |
ReferrerDomainName |
N/A |
Generated Used for check pointing support. This is a foreign key to the LogImportSubTask table. |
SubTaskID |
Source columns from the W3C log file |
Transformation |
Target columns from the TaskHistory table in the Data Warehouse |
---|---|---|
N/A |
Generated This is incremented for each instance of a DTS import task. |
TaskID |
N/A |
Generated This identifies which import task was used.1 = Web server log import2 = Profile data import3 = Campaign data import4 = Product catalog import 5 = Transaction log import 8 = Configuration synchronization9 = Data deletion10 = IP resolution11 = Report preparation20 = Report caching |
OperationID |
N/A |
Generated Result of the import.1 = Import Success2 = Import Completed with Failure3 = Import Incomplete.4 = Import Aborted |
Status |
N/A |
Generated Physical start time of the import. |
StartTime |
N/A |
Generated Physical end time of the import. |
EndTime |
N/A |
Generated Description of the import task. |
Description |
N/A |
Generated Used for check pointing support for the Web log import DTS task. |
SubTaskID |
N/A |
Generated Used for restart for the Web log import DTS task. |
NumOfTries |
The LogImportSubTask class is used internally in the Web log import to track checkpoints for the restart feature.
Source columns from the W3C log file |
Transformation |
Target columns from the LogImportSubTask table in the Data Warehouse |
---|---|---|
N/A |
Generated Used for check pointing support. |
SubTaskID |
N/A |
Generated Incremented for each instance of a log import. |
TaskID |
N/A |
Generated A foreign key to the Site table. |
SiteID |
N/A |
Generated Server group name for which you are importing. There is a unique ServerGroup for each virtual server (for IIS, a distinct log file). |
ServerGroup |
N/A |
Generated A log file name in the import. |
FileName |
N/A |
Generated The offset in the log file where the checkpoint occurred. |
ByteOffsetHigh |
N/A |
Generated The offset in the log file where the checkpoint occurred. |
ByteOffsetLow |
N/A |
Generated The W3C fields directive at the time of the checkpoint. |
Field |
N/A |
Generated Current log file date and time when the checkpoint occurred. |
Date |
The OpenUserVisit class represents users who have active visits at the time of the end of a log import. To modify how open user visits are handled by the Web server log import DTS task you must adjust the log file rotation settings.
Source columns from the W3C log file |
Transformation |
Target columns from the OpenUserVisit table in the Data Warehouse |
---|---|---|
N/A |
Generated The count of requests in this current open visit. |
CountOfRequest |
N/A |
Generated |
FirstTimeStamp |
N/A |
Generated |
LastTimeStamp |
N/A |
Generated Generated in the log import application as a unique identifier. |
VisitNum |
cs-uri-query (UPM cookieless)ORcs(cookie)ORcs-usernameORcs-ip + cs(User-Agent) |
Generated The user key is the first 8 bytes of an MD4 hash of whatever is used as the user key. What is used as the user key depends on what is in the log file, it can be the UPM query string (cookieless), UPM cookie, user configured cookie, user name, or client IP address and browser agent string. |
UserKey |
N/A |
Generated This is incremented for each instance of a log import. |
TaskID |
cs(User-Agent) |
Copy Column |
UserAgentName |
N/A |
Generated Foreign key to the request table. The first request in this visit. |
FirstRequestNum |
N/A |
Generated Foreign key to the request table. The second request in this visit. |
SecondRequestNum |
N/A |
Generated Foreign key to the request table. The last request in this visit. |
LastRequestNum |
N/A |
Generated Foreign key to the URI table. The first URI in this visit. |
FirstUriKey |
N/A |
Generated Foreign key to the URI table. The second URI in this visit. |
SecondUriKey |
N/A |
Generated Foreign key to the URI table. The last URI in this visit. |
LastUriKey |
cs-uri-query (UPM cookieless)ORcs(cookie)ORcs-usernameORcs-ip + cs(User-Agent) |
Generated The user ID is the first 8 bytes of an MD4 hash of whatever is used as the user key. What is used as the user ID depends on what is in the log file, it can be the UPM query string (cookieless), UPM cookie, user configured cookie, user name, or client IP address and browser agent string. |
UserID |
cs(Referer) |
Middle of String Only the domain piece of the URI is loaded. |
ReferrerDomainName |
N/A |
Generated Used for check pointing support. |
SubTaskID |
Source columns from the W3C log file |
Transformation |
Target columns from the SiteSummary table in the Data Warehouse |
---|---|---|
N/A |
Generated This is calculated during log import. All valid hits the parser was able to successfully parse from the log file. |
TotalHits |
N/A |
Generated Total number of hits that were not filtered out by exclude criteria. |
TotalImportHits |
N/A |
Generated Total number of visits (open and closed) that were encountered. |
TotalVisits |
N/A |
Generated Number of hits that were excluded by the server exclude criteria. |
TotalBadServerCount |
N/A |
Generated Number of hits that were excluded by not being able to match a configured site. If this number is high, check your application configuration. For more information about how to configure your application, see How to Configure an Application. |
TotalBadSiteCount |
N/A |
Generated Number of hits that were excluded by the excluded host criteria. |
TotalExcludeHostCount |
N/A |
Generated Total number of hits that were excluded by all criteria. |
TotalExcludeCriteriaCount |
N/A |
Generated Number of hits that were excluded by the crawler exclude criteria. |
TotalMatchCrawlerCount |
N/A |
Generated Physical start time of the import. |
StartTime |
N/A |
Generated Physical end time of the import. |
EndTime |
Source columns from the W3C log file |
Transformation |
Target columns from the LevelDir table in the Data Warehouse |
---|---|---|
N/A |
Generated First 8-bytes of MD4 Hash |
URI1Key |
N/A |
Generated First 8-bytes of MD4 Hash |
URI2Key |
N/A |
Generated First 8-bytes of MD4 Hash |
URI3Key |
N/A |
Generated First 8-bytes of MD4 Hash |
URI4Key |
N/A |
Generated First 8-bytes of MD4 Hash |
URI5Key |
N/A |
Generated First 8-bytes of MD4 Hash |
URI6Key |
Source columns from the W3C log file |
Transformation |
Target columns from the PathInfo table in the Data Warehouse |
---|---|---|
N/A |
Generated |
FirstTimeStamp |
|
|
PathKey |
|
|
PathTypeEnum |
N/A |
Generated This is incremented for each instance of a log import. |
TaskID |
Source columns from the W3C log file |
Transformation |
Target columns from the LogUser table in the Data Warehouse |
---|---|---|
cs-uri-query (UPM cookieless)ORcs(cookie)ORcs-usernameORcs-ip + cs(User-Agent) |
Generated The user key is the first 8 bytes of a MD4 hash of whatever is used as the user key. What is used as the user key depends on what is in the log file, it can be the UPM query string (cookieless), UPM cookie, user-configured cookie, user name, or client IP address plus browser agent string. |
UserKey |
|
|
UserDomainName |
|
|
DateCreated |
cs-username |
Copy Column |
UserName |
N/A |
Generated If the user has a cookie, this is set to True. |
HasCookie |
s-ip |
Copy Column |
IpAddress |
cs-uri-query (UPM cookieless)OR cs(cookie)ORcs-usernameORcs-ip + cs(User-Agent) |
Generated The user key is the first 8 bytes of a MD4 hash of whatever is used as the user key. What is used as the user key depends on what is in the log file, it can be the UPM query string (cookieless), UPM cookie, user-configured cookie, user name, or client IP address plus browser agent string. |
UserID |
Source columns from the W3C log file |
Transformation |
Target columns from the URI table in the Data Warehouse |
---|---|---|
cs-uri-stem |
Copy Column |
URI |
N/A |
Generated This is the home page URL that was matched during log import. This is the first specified URL. |
URL |
cs-uri-stem |
Middle of String Takes only the first level of the URI, if available. |
Level1Dir |
cs-uri-stem |
Middle of String Takes only the second level of the URI, if one exists. |
Level2Dir |
cs-uri-stem |
Middle of String Takes only the third level of the URI, if one exists. |
Level3Dir |
cs-uri-stem |
Middle of String Takes only the fourth level of the URI, if one exists. |
Level4Dir |
cs-uri-stem |
Middle of String Takes only the fifth level of the URI, if one exists. |
Level5Dir |
cs-uri-stem |
Middle of String Takes only the sixth level of the URI, if one exists. |
Level6Dir |
cs-uri-stem |
Copy Column MD4 Hash |
UriKey |