· 10 years ago · Sep 14, 2016, 03:44 PM
1import datetime
2
3from impala.dbapi import connect
4
5from mymodule import Something
6
7# create dictionary of Something objects
8target = {}
9target["something"] = Something()
10target["something else"] = Something()
11
12# prepare query
13yesterday = datetime.date.today() - datetime.timedelta(days=1)
14query = """
15 SET hive.exec.dynamic.partition.mode=nonstrict;
16 INSERT INTO db_name.table_name
17 PARTITION (year, month, day)
18 VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s);
19 """
20log_datetime = datetime.datetime.now()
21rows = tuple([(str(yesterday), "NULL",
22 str(i.campaign), str(i.adgroup),
23 str(i.id), '1', '1', str(yesterday.year),
24 str(yesterday.month), str(yesterday.day))
25 for i in target.values()])
26
27conn = connect(host=hostname, port=port, auth_mechanism="PLAIN")
28cursor = conn.cursor()
29cursor.executemany(query, rows)
30
31CREATE TABLE IF NOT EXISTS db_name.table_name
32 (`date` timestamp,
33 `datetime` timestamp,
34 `campaignid` string,
35 `adgroupid` string,
36 `someid` string,
37 `a` float,
38 `b` float)
39COMMENT 'some comment'
40PARTITIONED BY
41 (`year` int,
42 `month` int,
43 `day` int)