Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Подсчет оригинальных строк в текстовом документе (http://forum.oszone.net/showthread.php?t=275421)

vision-d 08-01-2014 21:05 2285050

Подсчет оригинальных строк в текстовом документе
 
Всем привет! Подскажите как реализовать подсчет оригинальных строк в текстовом документе?

mwz 08-01-2014 22:25 2285091

Цитата:

Цитата vision-d
подсчет оригинальных строк »

Т.е. тех, которые не являются плагиатом? :o

Iska 09-01-2014 06:11 2285245

Очевидно, следует читать — «уникальных». Но тоже жду более детального описания.

vision-d 09-01-2014 15:07 2285477

Есть список:
HTML код:

2013-01-09 08:58:58.513 open          /rsl01005000000/rsl01005388000/rsl01005388589/rsl01005388589.pd  NULL        132589
 2013-01-09 09:00:03.970 view          /rsl01005000000/rsl01005388000/rsl01005388589/rsl01005388589.pd  70          147589
 2013-01-09 08:59:58.373 view          /rsl01005000000/rsl01005388000/rsl01005388589/rsl01005388589.pd  64          132889
 2013-01-09 08:59:58.467 view          /rsl01005000000/rsl01005388000/rsl01005388589/rsl01005388589.pd  66          132589
 2013-01-09 08:59:59.297 view          /rsl01005000000/rsl01005388000/rsl01005388589/rsl01005388589.pd  68          138589
 2013-01-09 08:59:58.420 view          /rsl01005000000/rsl01005388000/rsl01005388589/rsl01005388589.pd  65          132589
 2013-01-09 08:59:59.657 view          /rsl01005000000/rsl01005388000/rsl01005388589/rsl01005388589.pd  67          13989
 2013-01-09 09:00:03.437 view          /rsl01005000000/rsl01005388000/rsl01005388589/rsl01005388589.pd  69          132589
 2013-01-09 09:00:07.763 view          /rsl01005000000/rsl01005388000/rsl01005388589/rsl01005388589.pd  71          138589
 2013-01-09 09:00:08.110 view          /rsl01005000000/rsl01005388000/rsl01005388589/rsl01005388589.pd  72          1335589

Так понимаю подсчет лучше осуществить в logparser. Нужно чтобы он подсчитывал количество уникальных пользователей ( user id 132589 в документе) пришедших за каждые сутки в период времени (например за год).

Iska 09-01-2014 15:32 2285489

Цитата:

Цитата vision-d
Есть список: »

Выкладывайте образец файла. В архиве. В той же кодировке, что и оригинальный.

Цитата:

Цитата vision-d
пришедших за каждые сутки в период времени (например за год). »

Поясните.

vision-d 09-01-2014 15:52 2285504

Цитата:

Цитата Iska
Поясните. »

Мне надо подсчитать кол-во обращений в систему пользователей за год. т.е нужно расчитать по дням какие пользователи приходили и так за весь год.

файл - http://rghost.ru/51511385

Iska 09-01-2014 16:15 2285511

Цитата:

Цитата vision-d
расчитать по дням какие пользователи приходили и так за весь год. »

Вот этого я и не пойму. Попробуйте перефразировать или пояснить на примере.

vision-d 09-01-2014 20:07 2285636

нужно собрать уникальные id пользователей за каждый день месяца и пересчитать их и получится число обращений за месяц.

Iska 09-01-2014 21:38 2285675

Так, теперь за месяц, а не за год? Совсем ничего не понимаю.

Вася пять раз отметился в первое число месяца, трижды — второго, четырежды — в первое число следующего месяца. Что мы должны получить в итоге по Васе?

Foreigner 09-01-2014 21:42 2285677

Цитата:

Цитата vision-d

Там все строки уникальные:
Код:

@echo off
setlocal

for /f %%i in (114-2.txt) do set /a user_%%i+=1

set user_


vision-d 10-01-2014 09:27 2285883

Цитата:

Цитата Iska
Вася пять раз отметился в первое число месяца, трижды — второго, четырежды — в первое число следующего месяца. Что мы должны получить в итоге по Васе? »

Вася был у нас три раза получается)
Так вообще нужно за год считать, желательно если можно указать интервал.

Iska 10-01-2014 09:56 2285887

Цитата:

Цитата vision-d
Вася был у нас три раза получается) »

Эти три раза складываются из 1 за «первое число месяца» +1 за «второго» и +1 за «первое число следующего месяца», так?

vision-d 10-01-2014 10:16 2285896

Цитата:

Цитата Iska
Эти три раза складываются из 1 за «первое число месяца» +1 за «второго» и +1 за «первое число следующего месяца», так? »

Да!

Iska 11-01-2014 07:46 2286556

vision-d, а что там можно считать? Там по одному-единственному числу в строке. Никаких дат там нет.

vision-d 13-01-2014 09:25 2288084

Цитата:

Цитата Iska
vision-d, а что там можно считать? Там по одному-единственному числу в строке. Никаких дат там нет. »

Ошибся. выложил не тот файл. Вот нужное http://yadi.sk/d/kic8NfxQFn84V

Foreigner 13-01-2014 10:33 2288095

vision-d, Не лишним будет объяснить, что в этих колонках, где id пользователя, что значат rsl../rsl../ ?

vision-d 13-01-2014 11:08 2288107

Цитата:

Цитата Foreigner
Не лишним будет объяснить, что в этих колонках, где id пользователя, что значат rsl../rsl../ ? »

_action - это действие с документом
_document - это сам документ
page - это номер открытой страницы
user_id - номер пользователя

Iska 14-01-2014 01:24 2288667

Всё ещё не уверен, что правильно понял техзадание. Пробуйте:
читать дальше »
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFile=E:\Песочница\0349\2013.txt
set sFromDateTime=2013-01-01
set sToDateTime=2013-12-31

"%ProgramFiles%\Log Parser 2.2\LogParser.exe" file:"Query - Group Users.sql"?SourceFile=%sSourceFile%+FromDateTime=%sFromDateTime%+ToDateTime=%sToDateTime% -i:TSV -iSeparator:space -headerRow:OFF -iCodepage:1251 -stats:OFF -rtp:-1

endlocal
exit /b 0



Query - Group Users.sql:
читать дальше »
Код:

SELECT
        [Date],
        [User ID],
        Count(*) AS [Total Actions]
USING
        Field1 AS [Date],
        TO_TIMESTAMP(STRCAT(STRCAT(Field1, ' '), Field2),'yyyy-MM-dd hh:mm:ss.ll') AS [DateTime],
        Field6 AS [User ID]
INTO DATAGRID
FROM '%SourceFile%'
WHERE
        [DateTime] BETWEEN TO_TIMESTAMP('%FromDateTime%', 'yyyy-MM-dd') AND TO_TIMESTAMP('%ToDateTime%', 'yyyy-MM-dd')
GROUP BY [Date], [User ID]
ORDER BY [Date], [Total Actions], [User ID]


Группируем количество строк по (дням + пользователям). К сожалению, нельзя делать разнонаправленную сортировку в запросе, чтобы даты шли по возрастанию, а количество — по убыванию.

vision-d 07-02-2014 08:40 2304563

Салют всем!
Подскажите как реализовать в этом коде номеровку строк в полученном результате?

Iska 07-02-2014 09:48 2304601

Query - Group Users.sql:
читать дальше »
Код:

SELECT
        OUT_ROW_NUMBER() AS [Row Number],
        [Date],
        [User ID],
        Count(*) AS [Total Actions]
USING
        Field1 AS [Date],
        TO_TIMESTAMP(STRCAT(STRCAT(Field1, ' '), Field2),'yyyy-MM-dd hh:mm:ss.ll') AS [DateTime],
        Field6 AS [User ID]
INTO DATAGRID
FROM '%SourceFile%'
WHERE
        [DateTime] BETWEEN TO_TIMESTAMP('%FromDateTime%', 'yyyy-MM-dd') AND TO_TIMESTAMP('%ToDateTime%', 'yyyy-MM-dd')
GROUP BY [Date], [User ID]
ORDER BY [Date], [Total Actions], [User ID]


vision-d 07-02-2014 10:52 2304649

Цитата:

Цитата Iska
Query - Group Users.sql: »

Здесь он будет нумеровать строки типа:
1
2
3
4
5

или будет выводить номер строки на которой была расположена строка в документе?

Iska 07-02-2014 11:14 2304665

Цитата:

Цитата vision-d
Здесь он будет нумеровать строки типа:
1
2
3
4
5 »

Да. Но поскольку сортировка идёт по другим критериям:
Цитата:

Цитата Iska
Код:

ORDER BY [Date], [Total Actions], [User ID]
»

номера строк будут расположены не по возрастанию, а в произвольном порядке.

Цитата:

Цитата vision-d
или будет выводить номер строки на которой была расположена строка в документе? »

Нет. Для вывода номера строки исходного документа для формата TSV используется встроенное поле «RowNumber». В данном запросе его использовать не получится, поскольку мы делаем группировку по другим полям, а поле «RowNumber» по определению имеет уникальное содержимое.


Время: 14:32.

Время: 14:32.
© OSzone.net 2001-