12345678910111213141516171819202122232425262728293031323334353637383940 |
- import json
- import datetime
- from odps import ODPS
- # ODPS服务配置
- ODPS_CONFIG = {
- 'ENDPOINT': 'http://service.cn.maxcompute.aliyun.com/api',
- 'ACCESSID': 'LTAIWYUujJAm7CbH',
- 'ACCESSKEY': 'RfSjdiWwED1sGFlsjXv0DlfTnZTG1P',
- 'PROJECT': 'loghubods'
- }
- class OdpsDataCount:
- @classmethod
- def get_data_count(cls, dt):
- odps = ODPS(
- access_id=ODPS_CONFIG['ACCESSID'],
- secret_access_key=ODPS_CONFIG['ACCESSKEY'],
- project=ODPS_CONFIG['PROJECT'],
- endpoint=ODPS_CONFIG['ENDPOINT']
- )
- data_values = []
- try:
- sql = f'SELECT uid,videoid,return_uv,type,type_owner,channel,channel_owner,title FROM loghubods.all_apptype_top1000_return WHERE dt = "{dt}" and rank <= 100'
- with odps.execute_sql(sql).open_reader() as reader:
- for row in reader:
- data_values.append(json.dumps( {"uid": row[0], "videoid": row[1], "return_uv": row[2], "type": row[3], "type_owner": row[4], "channel": row[5], "channel_owner": row[6], "title": row[7], "dt": str(dt)}, ensure_ascii=False ))
- except Exception as e:
- print(f"An error occurred: {e}")
- return data_values
- return data_values
- @classmethod
- def main(cls):
- dt = (datetime.datetime.now() - datetime.timedelta(hours=1)).strftime('%Y%m%d%H')
- data_count = cls.get_data_count(dt= dt)
- print(len(data_count))
- return data_count
- if __name__ == '__main__':
- OdpsDataCount.main()
|