Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
F
ffm-baseline
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ML
ffm-baseline
Commits
6b26a267
Commit
6b26a267
authored
6 years ago
by
高雅喆
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add gray stat pyScript
parent
859d1b6a
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
165 additions
and
0 deletions
+165
-0
grayStat.py
eda/gray_stat/grayStat.py
+128
-0
utils.py
eda/gray_stat/utils.py
+37
-0
No files found.
eda/gray_stat/grayStat.py
0 → 100644
View file @
6b26a267
from
utils
import
con_sql
,
tuple2dict
,
get_yesterday_date
class
GrayStat
(
object
):
def
__init__
(
self
,
cid_type
,
uid_type
,
platform
,
ndays
=
get_yesterday_date
()):
"""
cid_type : diary,answer,question
uid_type : 8:_8结尾;6:_6结尾;6|8:_6或者_8结尾;^68:不是6或者8结尾的
platform : ios;android
ndays : '2018-08-30'....
"""
self
.
cid_type
=
cid_type
self
.
uid_type
=
uid_type
if
platform
==
"ios"
:
self
.
platform
=
"='App Store'"
else
:
self
.
platform
=
"!='App Store'"
self
.
ndays
=
ndays
def
get_uid_count
(
self
):
sql
=
"select count(distinct(device_id)) from data_feed_click2
\
where stat_date='{0}'
\
and cid_type='{3}'
\
and device_id regexp '[{1}]$'
\
and device_type{2}"
.
format
(
self
.
ndays
,
self
.
uid_type
,
\
self
.
platform
.
replace
(
' '
,
''
),
self
.
cid_type
)
uid_count
=
con_sql
(
sql
)[
0
][
0
]
return
uid_count
def
get_uid_clk_times
(
self
):
sql
=
"select count(device_id) from data_feed_click2
\
where stat_date='{0}'
\
and cid_type='{3}'
\
and device_id regexp '[{1}]$'
\
and device_type{2}"
.
format
(
self
.
ndays
,
self
.
uid_type
,
\
self
.
platform
.
replace
(
' '
,
''
),
self
.
cid_type
)
uid_clk_times
=
con_sql
(
sql
)[
0
][
0
]
return
uid_clk_times
def
get_uid_imp_times
(
self
):
sql
=
"select count(device_id) from data_feed_exposure2
\
where stat_date='{0}'
\
and cid_type='{4}'
\
and device_id regexp '[{1}]$'
\
and device_type{2}
\
and device_id in (select device_id from data_feed_click2
\
where stat_date='{0}'
\
and cid_type='{4}'
\
and device_id regexp '[{1}]$'
\
and device_type{3})"
.
format
(
self
.
ndays
,
self
.
uid_type
,
self
.
platform
,
\
self
.
platform
.
replace
(
' '
,
''
),
self
.
cid_type
)
uid_imp_times
=
con_sql
(
sql
)[
0
][
0
]
return
uid_imp_times
if
__name__
==
'__main__'
:
#1.ffm中的灰度非灰度(ios和安卓一样):
# 灰度:_6
# 非灰度:_8
result1
=
[]
platforms
=
[
'ios'
,
'android'
]
grays
=
[
'6'
,
'8'
]
for
platform
in
platforms
:
for
gray
in
grays
:
g_class
=
GrayStat
(
'diary'
,
gray
,
platform
)
uid_count
=
g_class
.
get_uid_count
()
uid_clk_times
=
g_class
.
get_uid_clk_times
()
uid_imp_times
=
g_class
.
get_uid_imp_times
()
uid_clk_rate
=
round
(
uid_clk_times
/
uid_imp_times
,
4
)
result1
.
append
([
g_class
.
ndays
,
g_class
.
cid_type
,
platform
,
gray
,
uid_count
,
\
uid_clk_times
,
uid_imp_times
,
uid_clk_rate
])
result1
.
append
([
g_class
.
ndays
,
g_class
.
cid_type
,
platform
,
'all'
,
\
result1
[
-
1
][
4
]
+
result1
[
-
2
][
4
],
\
result1
[
-
1
][
5
]
+
result1
[
-
2
][
5
],
\
result1
[
-
1
][
6
]
+
result1
[
-
2
][
6
],
\
round
((
result1
[
-
1
][
5
]
+
result1
[
-
2
][
5
])
/
(
result1
[
-
1
][
6
]
+
result1
[
-
2
][
6
]),
4
)])
labels
=
[
'6'
,
'8'
,
'all'
]
for
i
in
range
(
3
):
result1
.
append
([
g_class
.
ndays
,
g_class
.
cid_type
,
'all'
,
labels
[
i
],
\
result1
[
i
][
4
]
+
result1
[
i
+
3
][
4
],
\
result1
[
i
][
5
]
+
result1
[
i
+
3
][
5
],
\
result1
[
i
][
6
]
+
result1
[
i
+
3
][
6
],
\
round
((
result1
[
i
][
5
]
+
result1
[
i
+
3
][
5
])
/
(
result1
[
i
][
6
]
+
result1
[
i
+
3
][
6
]),
4
)])
#2.实际中的灰度非灰度:
# ios:
# 灰度:6|8
#非灰度:^68
# android:
# 灰度:0|1|2|6|8
#非灰度:^01268
result2
=
[]
platforms
=
[
'ios'
,
'android'
]
for
platform
in
platforms
:
#TODO 对于(安卓灰度放到 0 1 2 6 8;iOS灰度保持 6 8)问题,做一个id判断即可
if
platform
==
'ios'
:
grays
=
[
'6|8'
,
'^68'
]
else
:
grays
=
[
'0|1|2|6|8'
,
'^01268'
]
for
gray
in
grays
:
g_class
=
GrayStat
(
'diary'
,
gray
,
platform
)
uid_count
=
g_class
.
get_uid_count
()
uid_clk_times
=
g_class
.
get_uid_clk_times
()
uid_imp_times
=
g_class
.
get_uid_imp_times
()
uid_clk_rate
=
round
(
uid_clk_times
/
uid_imp_times
,
4
)
result2
.
append
([
g_class
.
ndays
,
g_class
.
cid_type
,
platform
,
gray
,
uid_count
,
\
uid_clk_times
,
uid_imp_times
,
uid_clk_rate
])
result2
.
append
([
g_class
.
ndays
,
g_class
.
cid_type
,
platform
,
'all'
,
\
result2
[
-
1
][
4
]
+
result2
[
-
2
][
4
],
\
result2
[
-
1
][
5
]
+
result2
[
-
2
][
5
],
\
result2
[
-
1
][
6
]
+
result2
[
-
2
][
6
],
\
round
((
result2
[
-
1
][
5
]
+
result2
[
-
2
][
5
])
/
(
result2
[
-
1
][
6
]
+
result2
[
-
2
][
6
]),
4
)])
labels
=
[
'gray'
,
'not gray'
,
'all'
]
for
i
in
range
(
3
):
result2
.
append
([
g_class
.
ndays
,
g_class
.
cid_type
,
'all'
,
labels
[
i
],
\
result2
[
i
][
4
]
+
result2
[
i
+
3
][
4
],
\
result2
[
i
][
5
]
+
result2
[
i
+
3
][
5
],
\
result2
[
i
][
6
]
+
result2
[
i
+
3
][
6
],
\
round
((
result2
[
i
][
5
]
+
result2
[
i
+
3
][
5
])
/
(
result2
[
i
][
6
]
+
result2
[
i
+
3
][
6
]),
4
)])
This diff is collapsed.
Click to expand it.
eda/gray_stat/utils.py
0 → 100644
View file @
6b26a267
# -*- coding: UTF-8 -*-
import
pymysql
import
datetime
def
con_sql
(
sql
):
#从数据库的表里获取数据
"""
:type sql : str
:rtype : tuple
"""
db
=
pymysql
.
connect
(
host
=
'10.66.157.22'
,
port
=
4000
,
user
=
'root'
,
passwd
=
'3SYz54LS9#^9sBvC'
,
db
=
'jerry_test'
)
cursor
=
db
.
cursor
()
cursor
.
execute
(
sql
)
result
=
cursor
.
fetchall
()
db
.
close
()
return
result
def
tuple2dict
(
tuple_result
):
#把sql结果从tuple(tuple,tuple)格式转换成dict格式
"""
:type tuple_result : tuple
:rtype : dict
"""
dict_result
=
{}
for
i
in
range
(
len
(
tuple_result
)):
dict_result
[
tuple_result
[
i
][
0
]]
=
tuple_result
[
i
][
1
]
return
dict_result
def
get_yesterday_date
():
#自动获取昨天的日期,如"2018-08-08"
"""
:rtype : str
"""
today
=
datetime
.
date
.
today
()
yesterday
=
today
-
datetime
.
timedelta
(
days
=
1
)
yesterday
=
yesterday
.
strftime
(
"
%
Y-
%
m-
%
d"
)
return
yesterday
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment