Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
model_mvp
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
decision-science
model_mvp
Commits
80ece739
Commit
80ece739
authored
Apr 22, 2019
by
linfang.wang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
根据时间查询放款集,申请集
parent
a1429476
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
56 additions
and
7 deletions
+56
-7
xyqbdata.py
data/samples/xyqbdata.py
+56
-7
No files found.
data/samples/xyqbdata.py
View file @
80ece739
...
@@ -6,15 +6,20 @@ from data.samples import mysqlquery
...
@@ -6,15 +6,20 @@ from data.samples import mysqlquery
'''
'''
def
query_
user_loan_type
(
order_nos
):
def
query_
risk_info
(
order_nos
):
'''
'''
直接使用了线上的用户类型,而非分析库的计算得到的用户类型
:param order_nos:
:param order_nos:
:return:order_no,user_loan_type-- 策略使用的用户类型
:return:order_no,user_loan_type-- 策略使用的用户类型
,审核拒绝原因,是否黑名单拒绝或其他拒绝
'''
'''
res
=
[]
res
=
[]
sql
=
'''
sql
=
'''
select biz_no as order_no,
select biz_no as order_no,
ifnull(JSON_EXTRACT(audit_context_data, '$.user_loan_type_v3'),JSON_EXTRACT(audit_context_data, '$.user_loan_type_v4')) as user_loan_type
ifnull(JSON_EXTRACT(audit_context_data, '$.user_loan_type_v3'),
JSON_EXTRACT(audit_context_data, '$.user_loan_type_v4')) as user_loan_type,
JSON_EXTRACT(audit_context_data, '$.filter_info_in_black') qg_black,
JSON_EXTRACT(audit_context_data, '$."third_data_source#xy_neg_code"') as xy_black,
audit_result
from biz_audit_log_data
from biz_audit_log_data
where biz_no in
%
s
where biz_no in
%
s
'''
'''
...
@@ -23,7 +28,11 @@ def query_user_loan_type(order_nos):
...
@@ -23,7 +28,11 @@ def query_user_loan_type(order_nos):
res
.
append
(
pd
.
read_sql
(
sql
%
str
(
tuple
(
order_nos
[
i
:
i
+
1000
])),
engine_risk
))
res
.
append
(
pd
.
read_sql
(
sql
%
str
(
tuple
(
order_nos
[
i
:
i
+
1000
])),
engine_risk
))
df
=
pd
.
concat
(
res
)
df
=
pd
.
concat
(
res
)
df
.
drop_duplicates
([
'order_no'
],
inplace
=
True
)
df
.
drop_duplicates
([
'order_no'
],
inplace
=
True
)
return
df
df
[
'refuse'
]
=
'其他'
df
.
loc
[
df
.
audit_result
==
1
,
'refuse'
]
=
'审核通过'
df
.
loc
[(
df
.
audit_result
!=
1
)
&
(
df
.
qg_black
>
0
),
'refuse'
]
=
'命中QG黑名单'
df
.
loc
[(
df
.
audit_result
!=
1
)
&
(
df
.
xy_black
==
'0'
),
'refuse'
]
=
'命中新颜黑名单'
return
df
[[
'order_no'
,
'uesr_loan_type'
,
'refuse'
]]
def
query_byloanid
(
loan_ids
):
def
query_byloanid
(
loan_ids
):
'''
'''
...
@@ -54,8 +63,8 @@ def query_byloanid(loan_ids):
...
@@ -54,8 +63,8 @@ def query_byloanid(loan_ids):
def
query_by_orderno
(
order_nos
):
def
query_by_orderno
(
order_nos
):
'''
'''
数据源为分析库
数据源为分析库
:param
loan_id
s:list 放款集
:param
order_no
s:list 放款集
:return:order_no,user_id,loan_id,用户类型,渠道,申请时间,拒绝原因,首逾天数,最大逾期天数,放款期数
:return:order_no,user_id,loan_id,用户类型,渠道,申请时间,拒绝原因,首逾天数,最大逾期天数,放款期数
reason['已放款','审核通过','审核未通过','黑名单']
'''
'''
sql
=
'''
sql
=
'''
select t1.loan_id,t1.user_id,t2.order_no,t2.contract_term,if(t2.term_no==1,t2.passdue_day,null) as passdue_day,
select t1.loan_id,t1.user_id,t2.order_no,t2.contract_term,if(t2.term_no==1,t2.passdue_day,null) as passdue_day,
...
@@ -75,4 +84,44 @@ def query_by_orderno(order_nos):
...
@@ -75,4 +84,44 @@ def query_by_orderno(order_nos):
# == 剔除重复数据
# == 剔除重复数据
df
.
sort_values
([
'loan_id'
],
ascending
=
True
,
inplace
=
True
)
df
.
sort_values
([
'loan_id'
],
ascending
=
True
,
inplace
=
True
)
df
.
drop_duplicates
([
'loan_id'
],
keep
=
'last'
,
inplace
=
True
)
df
.
drop_duplicates
([
'loan_id'
],
keep
=
'last'
,
inplace
=
True
)
return
df
return
df
\ No newline at end of file
def
query_bydate
(
start_date
,
end_date
,
is_loan
=
True
):
'''
获取指定日期的数据,如果 is_loan=True ,则为放款集 否则为申请集
:param start_date:
:param end_date:
:return:dataframe
'''
if
is_loan
:
sql
=
'''
select t1.loan_id,t1.user_id,t2.order_no,t2.contract_term,if(t2.term_no==1,t2.passdue_day,null) as passdue_day,
t1.applied_at,t1.applied_type,t1.applied_channel,if(t2.loan_id is not null,'已放款',if(t1.approval==1,'审核通过','审核未通过')) as reason,
max(t2.passdue_day) as max_passdue_day
from loan_application t1
join loan_repay t2 on t1.loan_id=t2.loan_id and t2.repayment_status!=4
where t1.applied=1
and t1.applied_at >= '
%
s' and t1.applied_at < '
%
s'
group by 1,2,3,4,5,6,7,8
'''
%
(
start_date
,
end_date
)
else
:
sql
=
'''
select t1.loan_id,t1.user_id,t2.order_no,t2.contract_term,if(t2.term_no==1,t2.passdue_day,null) as passdue_day,
t1.applied_at,t1.applied_type,t1.applied_channel,if(t2.loan_id is not null,'已放款',if(t1.approval==1,'审核通过','审核未通过')) as reason,
max(t2.passdue_day) as max_passdue_day
from loan_application t1
left join loan_repay t2 on t1.loan_id=t2.loan_id and t2.repayment_status!=4
where t1.applied=1
and t1.applied_at >= '
%
s' and t1.applied_at < '
%
s'
group by 1,2,3,4,5,6,7,8
'''
%
(
start_date
,
end_date
)
df
=
mysqlquery
.
query
(
sql
,
engine_analysis_new
)
df
.
sort_values
([
'loan_id'
],
ascending
=
True
,
inplace
=
True
)
df
.
drop_duplicates
([
'loan_id'
],
keep
=
'last'
,
inplace
=
True
)
tmp
=
query_risk_info
(
df
.
order_no
.
tolist
())
return
pd
.
merge
(
df
,
tmp
,
on
=
'order_no'
,
how
=
'left'
)
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