2015-07-28 2 views
0

Я импортировать некоторые журналы IIS в мощности Pivot сделать некоторый анализ с помощью:Файлы журнала и Power Pivot - разделены DATETIME на отдельные столбцы?

LogParser.exe " 
SELECT 
EXTRACT_TOKEN(LogFileName, 5, '\\') As LogFile, 
LogRow, 
to_localtime(to_timestamp(date,time)) as LOG_DTTM, 
cs-UserName as ClientUserName, 
cs-Method,cs-Uri-Stem as UriStem, 
cs-Uri-Query as UriQuery, 
sc-Status as Status, 
sc-SubStatus as SubStatus, 
time-Taken as ElapsedTimeMS, 
c-Ip As ClientIP, 
s-ComputerName as ComputerName, 
s-Ip as ServerIP, 
s-Port as Port, 
sc-Win32-Status as Win32Status, 
cs(User-Agent) as UserAgent 
    INTO IIS_LOG_PROD_STAGING 
FROM somefile.log" -o:SQL -oConnString:"Driver=SQL Server;Server=MY_SERVER_NAME; Database=MY_DATABASE_NAME;Trusted_Connection=yes" -createTable:ON -e:10 -transactionRowCount:-1 

... и мой вопрос: Должен ли я быть раскалываюсь на отдельные части моих DateTime столбцов на отдельные столбцы на уровне хранилища базы данных, или должны ли они быть вычисленными столбцами в модели PowerPivot?

Марко Руссо, кажется, рекомендую по крайней мере, разделив DATE в отдельную колонку:
http://sqlblog.com/blogs/marco_russo/archive/2011/09/01/separate-date-and-time-in-powerpivot-and-bism-tabular.aspx

PowerPivot еще читает колонку как DateTime, но часы/минуты/секунды исчезает, а число уникальных значения сокращаются до количества отдельных дней в ваших данных. Разумеется, упростить соединение с таблицей календаря!

Это похоже. Но если я знаю Я собираюсь заниматься анализом на таких уровнях, как HourOfDay, DayOfWeek, DayOfMonth и т. Д., Следует ли разделить их на отдельные столбцы базы данных?

ответ

3

Я настоятельно рекомендую создать таблицу дат и таблицу времени для этого типа анализа. date table поможет с расчетами дня недели, дня месяца и т. Д. Это позволяет легко выполнять вычисления дат и категоризации посредством простых объединений. Размер времени будет группироваться по часам. Я стараюсь создавать эти таблицы в своей базе данных и вытаскивать их в свою модель Power Pivot с SQL Server. Моя общая мысль - вычисления на уровне строк более эффективно выполняются на более низких уровнях (база данных SQL), чем в модели Power Pivot. Они могут быть выполнены в обоих случаях, поэтому ваше местоположение и объем памяти и процессор доступны на сервере и на компьютере, на котором установлена ​​модель Power Pivot. Поскольку Power Pivot открывается на отдельных ноутбуках, и я не могу их контролировать, мне нравится делать много вычислений в SQL Server. Я вижу, что вы отметили Power Query. Есть scripts available to create a date dimension in Power Query, не требуя таблицы в SQL Server. Я еще не построил измерение времени в Power Query, но here's a good SQL Server script. Таблица даты находится на уровне даты. Таблица времени снижается до секунд и позволяет легко катить раз вверх минутой, час и т.д.

Вот таблица даты по ссылке:

CREATE TABLE [dbo].[DimDate] (
    [DateKey] [int] NOT NULL 
    ,[Date] [datetime] NOT NULL 
    ,[Day] [char](10) NULL 
    ,[DayOfWeek] [smallint] NULL 
    ,[DayOfMonth] [smallint] NULL 
    ,[DayOfYear] [smallint] NULL 
    ,[PreviousDay] [datetime] NULL 
    ,[NextDay] [datetime] NULL 
    ,[WeekOfYear] [smallint] NULL 
    ,[Month] [char](10) NULL 
    ,[MonthOfYear] [smallint] NULL 
    ,[QuarterOfYear] [smallint] NULL 
    ,[Year] [int] NULL 
    ); 

А вот дешевые

create table time_of_day 
( 
    time_of_day_key smallint primary key, 
    hour_of_day_24 tinyint,    --0-23, military/European time 
    hour_of_day_12 tinyint,    --1-12, repeating for AM/PM, for us American types 
    am_pm char(2),       --AM/PM 
    minute_of_hour tinyint,    --the minute of the hour, reset at the top of each hour. 0-59 
    half_hour tinyint,      --1 or 2, if it is the first or second half of the hour 
    half_hour_of_day tinyint,    --1-24, incremented at the top of each half hour for the entire day 
    quarter_hour tinyint,     --1-4, for each quarter hour 
    quarter_hour_of_day tinyint,   --1-48, incremented at the tope of each half hour for the entire day 
    string_representation_24 char(5),  --military/European textual representation 
    string_representation_12 char(5)  --12 hour clock representation sans AM/PM 
) 

Даже если вы действительно не создаете размерную модель, эти таблицы могут быть полезны.

+0

Для большей ясности: если я начинаю с столбца EVENT_DATE_TIME в исходных данных, вы бы порекомендовали импортировать это как 3 дискретных столбца: EVENT_DATE_TIME, EVENT_DATE, EVENT_TIME? Таким образом, существует избыточность, но с ней легче работать. – tbone

+1

Пока вы не беспокоитесь о том, что одно дополнительное поле занимает место в вашей модели, я бы импортировал их как 3 отдельных столбца. Сохраните исходный столбец для упрощения ссылок и столбца столбца даты и времени, чтобы выполнять поиск по датам и таблицам времени. В противном случае вы можете оставить столбец datetime и просто импортировать отдельные поля даты и времени. – mmarie

Смежные вопросы