Repository navigation
Expand file tree
/
Copy pathdata_processing.py
More file actions
98 lines (88 loc) · 3.33 KB
/
Copy pathdata_processing.py
File metadata and controls
98 lines (88 loc) · 3.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import pandas as pd
import streamlit as st
# ------------------Melt and clean Data for Visualization------------------
def melt_clean_data(df, value_name):
df_melted = df.melt(
id_vars=['Country Code'],
var_name='Year',
value_name=value_name
)
df_melted['Year'] = pd.to_datetime(df_melted['Year'], format='%Y')
return df_melted
# ------------------Fetch Data------------------
@st.cache_data(ttl=24 * 60 * 60)
def fetch_bigquery_data(_client, query):
job = _client.query(query)
df = job.result().to_dataframe()
return df
# ------------------Generate Query------------------
def article_groupby_query(PROJECT_ID, DATASET_ID, TABLE_ID, date_input):
TABLE_FULL_ID = f'{PROJECT_ID}.{DATASET_ID}.{TABLE_ID}'
query = f'''
SELECT CountryCode, COUNT(*) AS Count, AVG(DocTone) AS Tone
FROM `{TABLE_FULL_ID}`
WHERE DATE(DateTime) = '{date_input.strftime('%Y-%m-%d')}'
GROUP BY CountryCode
'''
return query
def stats_trend_query(PROJECT_ID, DATASET_ID, TABLE_ID, start_year, end_year):
TABLE_FULL_ID = f'{PROJECT_ID}.{DATASET_ID}.{TABLE_ID}'
query = f"""
SELECT
CountryCode,
EXTRACT(YEAR FROM DateTime) AS Year,
AVG(DocTone) AS Tone
FROM `{TABLE_FULL_ID}`
WHERE EXTRACT(YEAR FROM DateTime) BETWEEN {max(2018, start_year)} AND {end_year}
GROUP BY CountryCode, Year
ORDER BY Year, CountryCode
"""
return query
def stats_year_query(PROJECT_ID, DATASET_ID, TABLE_ID, date_input):
TABLE_FULL_ID = f'{PROJECT_ID}.{DATASET_ID}.{TABLE_ID}'
query = f'''
SELECT CountryCode, AVG(DocTone) AS Tone
FROM `{TABLE_FULL_ID}`
WHERE EXTRACT(YEAR FROM DateTime) = {date_input.year}
GROUP BY CountryCode
'''
return query
def stats_month_query(PROJECT_ID, DATASET_ID, TABLE_ID, date_input):
TABLE_FULL_ID = f'{PROJECT_ID}.{DATASET_ID}.{TABLE_ID}'
query = f'''
SELECT CountryCode, AVG(DocTone) AS Tone
FROM `{TABLE_FULL_ID}`
WHERE EXTRACT(YEAR FROM DateTime) = {date_input.year}
AND EXTRACT(MONTH FROM DateTime) = {date_input.month}
GROUP BY CountryCode
'''
return query
def stats_date_query(PROJECT_ID, DATASET_ID, TABLE_ID, date_input):
TABLE_FULL_ID = f'{PROJECT_ID}.{DATASET_ID}.{TABLE_ID}'
query = f'''
SELECT CountryCode, AVG(DocTone) AS Tone
FROM `{TABLE_FULL_ID}`
WHERE DATE(DateTime) = '{date_input.strftime('%Y-%m-%d')}'
GROUP BY CountryCode
'''
return query
def article_country_query(PROJECT_ID, DATASET_ID, TABLE_ID,
date_input, selected_countries):
TABLE_FULL_ID = f'{PROJECT_ID}.{DATASET_ID}.{TABLE_ID}'
selected_countries_str = ', '.join(
[f"'{country}'" for country in selected_countries])
query = f'''
SELECT CountryCode, ContextualText
FROM `{TABLE_FULL_ID}`
WHERE DATE(DateTime) = '{date_input.strftime('%Y-%m-%d')}'
AND CountryCode IN ({selected_countries_str})
'''
return query
def data_query(PROJECT_ID, DATASET_ID, TABLE_ID):
TABLE_FULL_ID = f'{PROJECT_ID}.{DATASET_ID}.{TABLE_ID}'
query = f'''
SELECT * EXCEPT(`Country Name`,
`Indicator Name`, `Indicator Code`, `Unnamed: 69`)
FROM `{TABLE_FULL_ID}`
'''
return query