2017-12-22 7 views
-1

私は、データベースからのデータからチャートを作成するために使用される辞書を持っています。 私は、次の作業のコードを持っている:ネストされた辞書に欠けているキーを追加しますか?

datasets = [] 

for row in data: 
    # add serie if not exists already 
    if not any(d['label'] == row['sql_id'] for d in datasets): 
     serie = {'label':row['sql_id'],'backgroundColor':GetRandomHexColor(),'data':[]} 
     datasets.append(serie) 

    serie = next(item for item in datasets if item['label'] == row['sql_id']) 
    serie['data'].append({'x': row['sample_time'],'y':row['resources_consumed']}) 

これは、このフォームのdictionnaryを構築:

{ 
"datasets": [{ 
    "data": [{ 
     "y": 3, 
     "x": "2017-12-22 16:01" 
    }, { 
     "y": 23, 
     "x": "2017-12-22 16:02" 
    }, { 
     "y": 33, 
     "x": "2017-12-22 16:03" 
    }, { 
     "y": 12, 
     "x": "2017-12-22 16:04" 
    }, { 
     "y": 5, 
     "x": "2017-12-22 16:05" 
    }, { 
     "y": 13, 
     "x": "2017-12-22 16:06" 
    }, { 
     "y": 17, 
     "x": "2017-12-22 16:11" 
    }, { 
     "y": 24, 
     "x": "2017-12-22 16:12" 
    }, { 
     "y": 12, 
     "x": "2017-12-22 16:13" 
    }, { 
     "y": 9, 
     "x": "2017-12-22 16:14" 
    }, { 
     "y": 10, 
     "x": "2017-12-22 16:15" 
    }, { 
     "y": 24, 
     "x": "2017-12-22 16:16" 
    }, { 
     "y": 28, 
     "x": "2017-12-22 16:17" 
    }, { 
     "y": 4, 
     "x": "2017-12-22 16:18" 
    }, { 
     "y": 18, 
     "x": "2017-12-22 16:19" 
    }, { 
     "y": 25, 
     "x": "2017-12-22 16:20" 
    }, { 
     "y": 25, 
     "x": "2017-12-22 16:21" 
    }, { 
     "y": 14, 
     "x": "2017-12-22 16:22" 
    }, { 
     "y": 10, 
     "x": "2017-12-22 16:23" 
    }, { 
     "y": 9, 
     "x": "2017-12-22 16:24" 
    }], 
    "backgroundColor": "#01F79A", 
    "label": "3qkhfbf2kyvhk" 
}, { 
    "data": [{ 
     "y": 3, 
     "x": "2017-12-22 16:01" 
    }, { 
     "y": 14, 
     "x": "2017-12-22 16:02" 
    }, { 
     "y": 12, 
     "x": "2017-12-22 16:03" 
    }, { 
     "y": 9, 
     "x": "2017-12-22 16:04" 
    }, { 
     "y": 7, 
     "x": "2017-12-22 16:05" 
    }, { 
     "y": 20, 
     "x": "2017-12-22 16:06" 
    }, { 
     "y": 2, 
     "x": "2017-12-22 16:10" 
    }, { 
     "y": 16, 
     "x": "2017-12-22 16:11" 
    }, { 
     "y": 10, 
     "x": "2017-12-22 16:12" 
    }, { 
     "y": 11, 
     "x": "2017-12-22 16:13" 
    }, { 
     "y": 9, 
     "x": "2017-12-22 16:14" 
    }, { 
     "y": 15, 
     "x": "2017-12-22 16:15" 
    }, { 
     "y": 13, 
     "x": "2017-12-22 16:16" 
    }, { 
     "y": 8, 
     "x": "2017-12-22 16:17" 
    }, { 
     "y": 8, 
     "x": "2017-12-22 16:18" 
    }, { 
     "y": 12, 
     "x": "2017-12-22 16:19" 
    }, { 
     "y": 14, 
     "x": "2017-12-22 16:20" 
    }, { 
     "y": 13, 
     "x": "2017-12-22 16:21" 
    }, { 
     "y": 12, 
     "x": "2017-12-22 16:22" 
    }, { 
     "y": 9, 
     "x": "2017-12-22 16:23" 
    }, { 
     "y": 8, 
     "x": "2017-12-22 16:24" 
    }], 
    "backgroundColor": "#743967", 
    "label": "8u125dk9nfc0q" 
}, { 
    "data": [{ 
     "y": 1, 
     "x": "2017-12-22 16:02" 
    }, { 
     "y": 1, 
     "x": "2017-12-22 16:03" 
    }, { 
     "y": 1, 
     "x": "2017-12-22 16:04" 
    }, { 
     "y": 2, 
     "x": "2017-12-22 16:11" 
    }, { 
     "y": 1, 
     "x": "2017-12-22 16:12" 
    }, { 
     "y": 2, 
     "x": "2017-12-22 16:15" 
    }, { 
     "y": 2, 
     "x": "2017-12-22 16:16" 
    }, { 
     "y": 1, 
     "x": "2017-12-22 16:17" 
    }, { 
     "y": 2, 
     "x": "2017-12-22 16:19" 
    }, { 
     "y": 1, 
     "x": "2017-12-22 16:20" 
    }, { 
     "y": 1, 
     "x": "2017-12-22 16:22" 
    }, { 
     "y": 1, 
     "x": "2017-12-22 16:24" 
    }], 
    "backgroundColor": "#CA3582", 
    "label": "b9nbhsbx8tqz5" 
}, { 
    "data": [{ 
     "y": 1, 
     "x": "2017-12-22 16:02" 
    }, { 
     "y": 1, 
     "x": "2017-12-22 16:04" 
    }, { 
     "y": 2, 
     "x": "2017-12-22 16:11" 
    }, { 
     "y": 1, 
     "x": "2017-12-22 16:12" 
    }, { 
     "y": 1, 
     "x": "2017-12-22 16:14" 
    }, { 
     "y": 2, 
     "x": "2017-12-22 16:15" 
    }, { 
     "y": 1, 
     "x": "2017-12-22 16:19" 
    }, { 
     "y": 2, 
     "x": "2017-12-22 16:20" 
    }, { 
     "y": 1, 
     "x": "2017-12-22 16:22" 
    }, { 
     "y": 1, 
     "x": "2017-12-22 16:24" 
    }], 
    "backgroundColor": "#8697A2", 
    "label": "dp0vgyb1hsfjb" 
}, { 
    "data": [{ 
     "y": 5, 
     "x": "2017-12-22 16:04" 
    }, { 
     "y": 4, 
     "x": "2017-12-22 16:05" 
    }, { 
     "y": 8, 
     "x": "2017-12-22 16:13" 
    }, { 
     "y": 1, 
     "x": "2017-12-22 16:14" 
    }, { 
     "y": 9, 
     "x": "2017-12-22 16:18" 
    }, { 
     "y": 8, 
     "x": "2017-12-22 16:22" 
    }, { 
     "y": 1, 
     "x": "2017-12-22 16:23" 
    }], 
    "backgroundColor": "#034D27", 
    "label": "7726bj0dhtnmt" 
}, { 
    "data": [{ 
     "y": 12, 
     "x": "2017-12-22 16:04" 
    }, { 
     "y": 12, 
     "x": "2017-12-22 16:13" 
    }, { 
     "y": 12, 
     "x": "2017-12-22 16:18" 
    }, { 
     "y": 10, 
     "x": "2017-12-22 16:22" 
    }], 
    "backgroundColor": "#B3FDF5", 
    "label": "cmx7t67z8wa74" 
}, { 
    "data": [{ 
     "y": 2, 
     "x": "2017-12-22 16:04" 
    }, { 
     "y": 1, 
     "x": "2017-12-22 16:05" 
    }, { 
     "y": 4, 
     "x": "2017-12-22 16:12" 
    }, { 
     "y": 1, 
     "x": "2017-12-22 16:15" 
    }, { 
     "y": 1, 
     "x": "2017-12-22 16:17" 
    }, { 
     "y": 1, 
     "x": "2017-12-22 16:22" 
    }, { 
     "y": 2, 
     "x": "2017-12-22 16:24" 
    }], 
    "backgroundColor": "#3A74FB", 
    "label": "ft7wcqu3hzvca" 
}, { 
    "data": [{ 
     "y": 7, 
     "x": "2017-12-22 16:05" 
    }, { 
     "y": 6, 
     "x": "2017-12-22 16:14" 
    }, { 
     "y": 6, 
     "x": "2017-12-22 16:18" 
    }, { 
     "y": 6, 
     "x": "2017-12-22 16:23" 
    }], 
    "backgroundColor": "#9733FC", 
    "label": "7mwz4m103nn1k" 
}, { 
    "data": [{ 
     "y": 8, 
     "x": "2017-12-22 16:05" 
    }, { 
     "y": 9, 
     "x": "2017-12-22 16:14" 
    }, { 
     "y": 8, 
     "x": "2017-12-22 16:18" 
    }, { 
     "y": 12, 
     "x": "2017-12-22 16:23" 
    }], 
    "backgroundColor": "#383B19", 
    "label": "9nrjf616y6g22" 
}] 
} 

問題は、彼らがそれぞれのデータリストに存在していない場合には、私が行方不明時系列を追加する必要があります。 セリ1が日付 "2017-12-22 16:23"である場合、お互いのシリーズには値の有無にかかわらず日付が必要です。値が配列内に存在しない場合は、yの0の値を追加する必要があります。

多くのネストされたループを実行することなく効率的に行う方法がわかりません。

EDIT:

現在、私はそのようなものがあります。それぞれの異なるタイムスタンプ必見は、各セリエのために存在する

{ 
"datasets": [{ 
    "data": [{ 
     "y": 3, 
     "x": "2017-12-22 16:01" 
    }, { 
     "y": 23, 
     "x": "2017-12-22 16:02" 
    }, { 
     "y": 33, 
     "x": "2017-12-22 16:03" 
    }, { 
     "y": 12, 
     "x": "2017-12-22 16:04" 
    }, { 
     "y": 5, 
     "x": "2017-12-22 16:05" 
    },{ 
     "y": 0, 
     "x": "2017-12-22 16:06" 
    }, { 
     "y": 0, 
     "x": "2017-12-22 16:10" 
    }, { 
     "y": 0, 
     "x": "2017-12-22 16:11" 
    }], 
    "backgroundColor": "#01F79A", 
    "label": "3qkhfbf2kyvhk" 
}, { 
    "data": [{ 
     "y": 0, 
     "x": "2017-12-22 16:01" 
    }, { 
     "y": 0, 
     "x": "2017-12-22 16:02" 
    }, { 
     "y": 0, 
     "x": "2017-12-22 16:03" 
    },{ 
     "y": 9, 
     "x": "2017-12-22 16:04" 
    }, { 
     "y": 7, 
     "x": "2017-12-22 16:05" 
    }, { 
     "y": 20, 
     "x": "2017-12-22 16:06" 
    }, { 
     "y": 2, 
     "x": "2017-12-22 16:10" 
    }, { 
     "y": 16, 
     "x": "2017-12-22 16:11" 
    }], 
    "backgroundColor": "#743967", 
    "label": "8u125dk9nfc0q" 
}] 
} 

:私が欲しいもの

{ 
"datasets": [{ 
    "data": [{ 
     "y": 3, 
     "x": "2017-12-22 16:01" 
    }, { 
     "y": 23, 
     "x": "2017-12-22 16:02" 
    }, { 
     "y": 33, 
     "x": "2017-12-22 16:03" 
    }, { 
     "y": 12, 
     "x": "2017-12-22 16:04" 
    }, { 
     "y": 5, 
     "x": "2017-12-22 16:05" 
    }], 
    "backgroundColor": "#01F79A", 
    "label": "3qkhfbf2kyvhk" 
}, { 
    "data": [{ 
     "y": 9, 
     "x": "2017-12-22 16:04" 
    }, { 
     "y": 7, 
     "x": "2017-12-22 16:05" 
    }, { 
     "y": 20, 
     "x": "2017-12-22 16:06" 
    }, { 
     "y": 2, 
     "x": "2017-12-22 16:10" 
    }, { 
     "y": 16, 
     "x": "2017-12-22 16:11" 
    }], 
    "backgroundColor": "#743967", 
    "label": "8u125dk9nfc0q" 
}] 
} 

をということです。セリフにタイムスタンプが存在しない場合は、0 yの値でタイムスタンプを追加する必要があります。ここで

は、私は、データベースから取得する初期データである:

問合せ:

cursor.execute('SELECT strftime(\'%%Y-%%m-%%d %%H:%%M\',s.sample_time) as sample_time,\n' 
         ' id,\n' 
         ' dbid,\n' 
         ' sql_id,\n' 
         ' sql_plan_hash_value,\n' 
         ' sid,\n' 
         ' serial,\n' 
         ' count(sql_id) as resources_consumed\n' 
         'FROM sash s\n' 
         'where sql_id in (select sql_id from (\n' 
         '         select\n' 
         '          id,\n' 
         '          dbid,\n' 
         '          SQL_ID ,\n' 
         '          sql_plan_hash_value,\n' 
         '          sid,\n' 
         '          serial,\n' 
         '          count(*) as resources_consumed\n' 
         '         from sash\n' 
         '         where sid = %s \n' 
         '         and serial = %s \n' 
         '         and dbid = %s \n' 
         '         group by sql_id,sql_plan_hash_value,sid,serial,dbid\n' 
         '       order by resources_consumed desc LIMIT 10)\n' 
         '   )\n' 
         'and sample_time between datetime(\'now\',\'localtime\',\'-60 minutes\') and datetime(\'now\',\'localtime\')  \n' 
         'and sid= %s \n' 
         'and serial= %s \n' 
         'group by strftime(\'%%Y-%%m-%%d %%H:%%M\',s.sample_time),sql_id,sql_plan_hash_value,sid,serial,dbid\n' 
         'order by strftime(\'%%Y-%%m-%%d %%H:%%M\',s.sample_time)', [sid, serial, dbid, sid, serial]) 

出力:

[{ 
    'sql_id': u'3qkhfbf2kyvhk', 
    'sql_plan_hash_value': 2234478098L, 
    'sample_time': u'2017-12-23 10:41', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59389, 
    'resources_consumed': 1 
}, { 
    'sql_id': u'ft7wcqu3hzvca', 
    'sql_plan_hash_value': 2265968010L, 
    'sample_time': u'2017-12-23 10:41', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59395, 
    'resources_consumed': 2 
}, { 
    'sql_id': u'0m9b1dywgrdqj', 
    'sql_plan_hash_value': 3103504081L, 
    'sample_time': u'2017-12-23 10:42', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59469, 
    'resources_consumed': 1 
}, { 
    'sql_id': u'3qkhfbf2kyvhk', 
    'sql_plan_hash_value': 2234478098L, 
    'sample_time': u'2017-12-23 10:42', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59511, 
    'resources_consumed': 17 
}, { 
    'sql_id': u'50kcsz2gh1w84', 
    'sql_plan_hash_value': 2667639044L, 
    'sample_time': u'2017-12-23 10:42', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59421, 
    'resources_consumed': 1 
}, { 
    'sql_id': u'8u125dk9nfc0q', 
    'sql_plan_hash_value': 2470916118L, 
    'sample_time': u'2017-12-23 10:42', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59503, 
    'resources_consumed': 8 
}, { 
    'sql_id': u'dp0vgyb1hsfjb', 
    'sql_plan_hash_value': 3272358443L, 
    'sample_time': u'2017-12-23 10:42', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59454, 
    'resources_consumed': 1 
}, { 
    'sql_id': u'ft7wcqu3hzvca', 
    'sql_plan_hash_value': 2265968010L, 
    'sample_time': u'2017-12-23 10:42', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59510, 
    'resources_consumed': 8 
}, { 
    'sql_id': u'1xc91cuvu7j11', 
    'sql_plan_hash_value': 3080963105L, 
    'sample_time': u'2017-12-23 10:43', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59555, 
    'resources_consumed': 3 
}, { 
    'sql_id': u'3qkhfbf2kyvhk', 
    'sql_plan_hash_value': 2234478098L, 
    'sample_time': u'2017-12-23 10:43', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59577, 
    'resources_consumed': 26 
}, { 
    'sql_id': u'50kcsz2gh1w84', 
    'sql_plan_hash_value': 2667639044L, 
    'sample_time': u'2017-12-23 10:43', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59532, 
    'resources_consumed': 1 
}, { 
    'sql_id': u'8u125dk9nfc0q', 
    'sql_plan_hash_value': 2470916118L, 
    'sample_time': u'2017-12-23 10:43', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59578, 
    'resources_consumed': 8 
}, { 
    'sql_id': u'ft7wcqu3hzvca', 
    'sql_plan_hash_value': 2265968010L, 
    'sample_time': u'2017-12-23 10:43', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59565, 
    'resources_consumed': 3 
}, { 
    'sql_id': u'3qkhfbf2kyvhk', 
    'sql_plan_hash_value': 2234478098L, 
    'sample_time': u'2017-12-23 10:44', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59644, 
    'resources_consumed': 17 
}, { 
    'sql_id': u'50kcsz2gh1w84', 
    'sql_plan_hash_value': 2667639044L, 
    'sample_time': u'2017-12-23 10:44', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59623, 
    'resources_consumed': 1 
}, { 
    'sql_id': u'8u125dk9nfc0q', 
    'sql_plan_hash_value': 2470916118L, 
    'sample_time': u'2017-12-23 10:44', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59642, 
    'resources_consumed': 11 
}, { 
    'sql_id': u'dp0vgyb1hsfjb', 
    'sql_plan_hash_value': 3272358443L, 
    'sample_time': u'2017-12-23 10:44', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59614, 
    'resources_consumed': 2 
}, { 
    'sql_id': u'ft7wcqu3hzvca', 
    'sql_plan_hash_value': 2265968010L, 
    'sample_time': u'2017-12-23 10:44', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59648, 
    'resources_consumed': 3 
}, { 
    'sql_id': u'3qkhfbf2kyvhk', 
    'sql_plan_hash_value': 2234478098L, 
    'sample_time': u'2017-12-23 10:45', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59665, 
    'resources_consumed': 3 
}, { 
    'sql_id': u'50kcsz2gh1w84', 
    'sql_plan_hash_value': 2667639044L, 
    'sample_time': u'2017-12-23 10:45', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59649, 
    'resources_consumed': 1 
}, { 
    'sql_id': u'7726bj0dhtnmt', 
    'sql_plan_hash_value': 453825145, 
    'sample_time': u'2017-12-23 10:45', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59718, 
    'resources_consumed': 11 
}, { 
    'sql_id': u'8u125dk9nfc0q', 
    'sql_plan_hash_value': 2470916118L, 
    'sample_time': u'2017-12-23 10:45', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59707, 
    'resources_consumed': 13 
}, { 
    'sql_id': u'cmx7t67z8wa74', 
    'sql_plan_hash_value': 4270729444L, 
    'sample_time': u'2017-12-23 10:45', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59705, 
    'resources_consumed': 19 
}, { 
    'sql_id': u'0m9b1dywgrdqj', 
    'sql_plan_hash_value': 3103504081L, 
    'sample_time': u'2017-12-23 10:47', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59765, 
    'resources_consumed': 2 
}, { 
    'sql_id': u'3qkhfbf2kyvhk', 
    'sql_plan_hash_value': 2234478098L, 
    'sample_time': u'2017-12-23 10:47', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59768, 
    'resources_consumed': 10 
}, { 
    'sql_id': u'50kcsz2gh1w84', 
    'sql_plan_hash_value': 2667639044L, 
    'sample_time': u'2017-12-23 10:47', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59770, 
    'resources_consumed': 1 
}, { 
    'sql_id': u'8u125dk9nfc0q', 
    'sql_plan_hash_value': 2470916118L, 
    'sample_time': u'2017-12-23 10:47', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59764, 
    'resources_consumed': 11 
}, { 
    'sql_id': u'dp0vgyb1hsfjb', 
    'sql_plan_hash_value': 3272358443L, 
    'sample_time': u'2017-12-23 10:47', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59754, 
    'resources_consumed': 1 
}, { 
    'sql_id': u'3qkhfbf2kyvhk', 
    'sql_plan_hash_value': 2234478098L, 
    'sample_time': u'2017-12-23 10:48', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59779, 
    'resources_consumed': 4 
}, { 
    'sql_id': u'8u125dk9nfc0q', 
    'sql_plan_hash_value': 2470916118L, 
    'sample_time': u'2017-12-23 10:48', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59788, 
    'resources_consumed': 5 
}, { 
    'sql_id': u'ft7wcqu3hzvca', 
    'sql_plan_hash_value': 2265968010L, 
    'sample_time': u'2017-12-23 10:48', 
    'dbid': 312109145, 
    'sid': 64, 
    'serial': 16655, 
    'id': 59789, 
    'resources_consumed': 1 
}] 
+2

パンダの魔法が必要なような音がします。 –

+0

レビューを投稿するためのリンクを投稿できますか? –

+0

私はあなた自身でちょうど良いgoogle "pandas"ができると思います。パンダは非常に人気のある図書館ですが、私は頭の上のリンクを知らない。 –

答えて

0

は、ここで私はあなたの何を考えていPythonの2のための何か欲しいです。私はprint()をいくつか残して、内部で構築され使用されている重要なデータ構造の内容を表示しました。それらの内容を見て、どのように動作するかを理解しやすくする必要があります。

from __future__ import print_function 
from collections import defaultdict 
from pprint import pformat 
from random import randint 
from series import data 

def indent(text, amount, char=' '): 
    """ Indent each line of text by indicated number of characters. """ 
    padding = amount * char 
    return ''.join(padding+line for line in text.splitlines(True)) 

def GetRandomHexColor(): 
    return '#{:06X}'.format(randint(0, 0xffffff)) 


# Extract the needed information from data grouped so that the sample times 
# are grouped together by sql_id. 
timestamps = defaultdict(dict) 
for row in data: 
    timestamps[row['sql_id']][row['sample_time']] = row['resources_consumed'] 
print('timestamps:') 
print(indent(pformat(dict(timestamps)), 4)) 

# Create a sorted list of all the unique timestamps that exist. 
master_series = sorted(set(stamp for stamps in timestamps.values() 
          for stamp in stamps)) 
print() 
print('master_series:') 
print(indent(pformat(master_series), 4)) 

# Create list of entries where each has a sublist that consists of values for 
# every timestamp in the master_series. 
datasets = [{'label': sql_id, 
      'backgroundColor': GetRandomHexColor(), 
      'data': [{'y': timestamps[sql_id][stamp] 
           if stamp in timestamps[sql_id] else 0, 
         'x': stamp} for stamp in master_series] 
      } for sql_id in sorted(timestamps)] 
print() 
print('datasets:') 
print(indent(pformat(datasets), 4)) 

出力:

timestamps: 
    {u'0m9b1dywgrdqj': {u'2017-12-23 10:42': 1, u'2017-12-23 10:47': 2}, 
    u'1xc91cuvu7j11': {u'2017-12-23 10:43': 3}, 
    u'3qkhfbf2kyvhk': {u'2017-12-23 10:41': 1, 
         u'2017-12-23 10:42': 17, 
         u'2017-12-23 10:43': 26, 
         u'2017-12-23 10:44': 17, 
         u'2017-12-23 10:45': 3, 
         u'2017-12-23 10:47': 10, 
         u'2017-12-23 10:48': 4}, 
    u'50kcsz2gh1w84': {u'2017-12-23 10:42': 1, 
         u'2017-12-23 10:43': 1, 
         u'2017-12-23 10:44': 1, 
         u'2017-12-23 10:45': 1, 
         u'2017-12-23 10:47': 1}, 
    u'7726bj0dhtnmt': {u'2017-12-23 10:45': 11}, 
    u'8u125dk9nfc0q': {u'2017-12-23 10:42': 8, 
         u'2017-12-23 10:43': 8, 
         u'2017-12-23 10:44': 11, 
         u'2017-12-23 10:45': 13, 
         u'2017-12-23 10:47': 11, 
         u'2017-12-23 10:48': 5}, 
    u'cmx7t67z8wa74': {u'2017-12-23 10:45': 19}, 
    u'dp0vgyb1hsfjb': {u'2017-12-23 10:42': 1, 
         u'2017-12-23 10:44': 2, 
         u'2017-12-23 10:47': 1}, 
    u'ft7wcqu3hzvca': {u'2017-12-23 10:41': 2, 
         u'2017-12-23 10:42': 8, 
         u'2017-12-23 10:43': 3, 
         u'2017-12-23 10:44': 3, 
         u'2017-12-23 10:48': 1}} 

master_series: 
    [u'2017-12-23 10:41', 
    u'2017-12-23 10:42', 
    u'2017-12-23 10:43', 
    u'2017-12-23 10:44', 
    u'2017-12-23 10:45', 
    u'2017-12-23 10:47', 
    u'2017-12-23 10:48'] 

datasets: 
    [{'backgroundColor': '#BBF2C0', 
     'data': [{'x': u'2017-12-23 10:41', 'y': 0}, 
       {'x': u'2017-12-23 10:42', 'y': 1}, 
       {'x': u'2017-12-23 10:43', 'y': 0}, 
       {'x': u'2017-12-23 10:44', 'y': 0}, 
       {'x': u'2017-12-23 10:45', 'y': 0}, 
       {'x': u'2017-12-23 10:47', 'y': 2}, 
       {'x': u'2017-12-23 10:48', 'y': 0}], 
     'label': u'0m9b1dywgrdqj'}, 
    {'backgroundColor': '#09BC4F', 
     'data': [{'x': u'2017-12-23 10:41', 'y': 0}, 
       {'x': u'2017-12-23 10:42', 'y': 0}, 
       {'x': u'2017-12-23 10:43', 'y': 3}, 
       {'x': u'2017-12-23 10:44', 'y': 0}, 
       {'x': u'2017-12-23 10:45', 'y': 0}, 
       {'x': u'2017-12-23 10:47', 'y': 0}, 
       {'x': u'2017-12-23 10:48', 'y': 0}], 
     'label': u'1xc91cuvu7j11'}, 
    {'backgroundColor': '#19F805', 
     'data': [{'x': u'2017-12-23 10:41', 'y': 1}, 
       {'x': u'2017-12-23 10:42', 'y': 17}, 
       {'x': u'2017-12-23 10:43', 'y': 26}, 
       {'x': u'2017-12-23 10:44', 'y': 17}, 
       {'x': u'2017-12-23 10:45', 'y': 3}, 
       {'x': u'2017-12-23 10:47', 'y': 10}, 
       {'x': u'2017-12-23 10:48', 'y': 4}], 
     'label': u'3qkhfbf2kyvhk'}, 
    {'backgroundColor': '#A85778', 
     'data': [{'x': u'2017-12-23 10:41', 'y': 0}, 
       {'x': u'2017-12-23 10:42', 'y': 1}, 
       {'x': u'2017-12-23 10:43', 'y': 1}, 
       {'x': u'2017-12-23 10:44', 'y': 1}, 
       {'x': u'2017-12-23 10:45', 'y': 1}, 
       {'x': u'2017-12-23 10:47', 'y': 1}, 
       {'x': u'2017-12-23 10:48', 'y': 0}], 
     'label': u'50kcsz2gh1w84'}, 
    {'backgroundColor': '#9FEC4A', 
     'data': [{'x': u'2017-12-23 10:41', 'y': 0}, 
       {'x': u'2017-12-23 10:42', 'y': 0}, 
       {'x': u'2017-12-23 10:43', 'y': 0}, 
       {'x': u'2017-12-23 10:44', 'y': 0}, 
       {'x': u'2017-12-23 10:45', 'y': 11}, 
       {'x': u'2017-12-23 10:47', 'y': 0}, 
       {'x': u'2017-12-23 10:48', 'y': 0}], 
     'label': u'7726bj0dhtnmt'}, 
    {'backgroundColor': '#4FBF10', 
     'data': [{'x': u'2017-12-23 10:41', 'y': 0}, 
       {'x': u'2017-12-23 10:42', 'y': 8}, 
       {'x': u'2017-12-23 10:43', 'y': 8}, 
       {'x': u'2017-12-23 10:44', 'y': 11}, 
       {'x': u'2017-12-23 10:45', 'y': 13}, 
       {'x': u'2017-12-23 10:47', 'y': 11}, 
       {'x': u'2017-12-23 10:48', 'y': 5}], 
     'label': u'8u125dk9nfc0q'}, 
    {'backgroundColor': '#ED6D56', 
     'data': [{'x': u'2017-12-23 10:41', 'y': 0}, 
       {'x': u'2017-12-23 10:42', 'y': 0}, 
       {'x': u'2017-12-23 10:43', 'y': 0}, 
       {'x': u'2017-12-23 10:44', 'y': 0}, 
       {'x': u'2017-12-23 10:45', 'y': 19}, 
       {'x': u'2017-12-23 10:47', 'y': 0}, 
       {'x': u'2017-12-23 10:48', 'y': 0}], 
     'label': u'cmx7t67z8wa74'}, 
    {'backgroundColor': '#8E3D97', 
     'data': [{'x': u'2017-12-23 10:41', 'y': 0}, 
       {'x': u'2017-12-23 10:42', 'y': 1}, 
       {'x': u'2017-12-23 10:43', 'y': 0}, 
       {'x': u'2017-12-23 10:44', 'y': 2}, 
       {'x': u'2017-12-23 10:45', 'y': 0}, 
       {'x': u'2017-12-23 10:47', 'y': 1}, 
       {'x': u'2017-12-23 10:48', 'y': 0}], 
     'label': u'dp0vgyb1hsfjb'}, 
    {'backgroundColor': '#1FC7DC', 
     'data': [{'x': u'2017-12-23 10:41', 'y': 2}, 
       {'x': u'2017-12-23 10:42', 'y': 8}, 
       {'x': u'2017-12-23 10:43', 'y': 3}, 
       {'x': u'2017-12-23 10:44', 'y': 3}, 
       {'x': u'2017-12-23 10:45', 'y': 0}, 
       {'x': u'2017-12-23 10:47', 'y': 0}, 
       {'x': u'2017-12-23 10:48', 'y': 1}], 
     'label': u'ft7wcqu3hzvca'}] 

ここimport編だseries.pyモジュールです。あなたの質問に今持っているサンプルデータのリストを定義するだけです:

""" Define data from database. """ 

data = [ 
    { 
     'sql_id': u'3qkhfbf2kyvhk', 
     'sql_plan_hash_value': 2234478098L, 
     'sample_time': u'2017-12-23 10:41', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59389, 
     'resources_consumed': 1 
    }, { 
     'sql_id': u'ft7wcqu3hzvca', 
     'sql_plan_hash_value': 2265968010L, 
     'sample_time': u'2017-12-23 10:41', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59395, 
     'resources_consumed': 2 
    }, { 
     'sql_id': u'0m9b1dywgrdqj', 
     'sql_plan_hash_value': 3103504081L, 
     'sample_time': u'2017-12-23 10:42', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59469, 
     'resources_consumed': 1 
    }, { 
     'sql_id': u'3qkhfbf2kyvhk', 
     'sql_plan_hash_value': 2234478098L, 
     'sample_time': u'2017-12-23 10:42', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59511, 
     'resources_consumed': 17 
    }, { 
     'sql_id': u'50kcsz2gh1w84', 
     'sql_plan_hash_value': 2667639044L, 
     'sample_time': u'2017-12-23 10:42', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59421, 
     'resources_consumed': 1 
    }, { 
     'sql_id': u'8u125dk9nfc0q', 
     'sql_plan_hash_value': 2470916118L, 
     'sample_time': u'2017-12-23 10:42', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59503, 
     'resources_consumed': 8 
    }, { 
     'sql_id': u'dp0vgyb1hsfjb', 
     'sql_plan_hash_value': 3272358443L, 
     'sample_time': u'2017-12-23 10:42', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59454, 
     'resources_consumed': 1 
    }, { 
     'sql_id': u'ft7wcqu3hzvca', 
     'sql_plan_hash_value': 2265968010L, 
     'sample_time': u'2017-12-23 10:42', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59510, 
     'resources_consumed': 8 
    }, { 
     'sql_id': u'1xc91cuvu7j11', 
     'sql_plan_hash_value': 3080963105L, 
     'sample_time': u'2017-12-23 10:43', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59555, 
     'resources_consumed': 3 
    }, { 
     'sql_id': u'3qkhfbf2kyvhk', 
     'sql_plan_hash_value': 2234478098L, 
     'sample_time': u'2017-12-23 10:43', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59577, 
     'resources_consumed': 26 
    }, { 
     'sql_id': u'50kcsz2gh1w84', 
     'sql_plan_hash_value': 2667639044L, 
     'sample_time': u'2017-12-23 10:43', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59532, 
     'resources_consumed': 1 
    }, { 
     'sql_id': u'8u125dk9nfc0q', 
     'sql_plan_hash_value': 2470916118L, 
     'sample_time': u'2017-12-23 10:43', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59578, 
     'resources_consumed': 8 
    }, { 
     'sql_id': u'ft7wcqu3hzvca', 
     'sql_plan_hash_value': 2265968010L, 
     'sample_time': u'2017-12-23 10:43', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59565, 
     'resources_consumed': 3 
    }, { 
     'sql_id': u'3qkhfbf2kyvhk', 
     'sql_plan_hash_value': 2234478098L, 
     'sample_time': u'2017-12-23 10:44', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59644, 
     'resources_consumed': 17 
    }, { 
     'sql_id': u'50kcsz2gh1w84', 
     'sql_plan_hash_value': 2667639044L, 
     'sample_time': u'2017-12-23 10:44', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59623, 
     'resources_consumed': 1 
    }, { 
     'sql_id': u'8u125dk9nfc0q', 
     'sql_plan_hash_value': 2470916118L, 
     'sample_time': u'2017-12-23 10:44', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59642, 
     'resources_consumed': 11 
    }, { 
     'sql_id': u'dp0vgyb1hsfjb', 
     'sql_plan_hash_value': 3272358443L, 
     'sample_time': u'2017-12-23 10:44', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59614, 
     'resources_consumed': 2 
    }, { 
     'sql_id': u'ft7wcqu3hzvca', 
     'sql_plan_hash_value': 2265968010L, 
     'sample_time': u'2017-12-23 10:44', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59648, 
     'resources_consumed': 3 
    }, { 
     'sql_id': u'3qkhfbf2kyvhk', 
     'sql_plan_hash_value': 2234478098L, 
     'sample_time': u'2017-12-23 10:45', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59665, 
     'resources_consumed': 3 
    }, { 
     'sql_id': u'50kcsz2gh1w84', 
     'sql_plan_hash_value': 2667639044L, 
     'sample_time': u'2017-12-23 10:45', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59649, 
     'resources_consumed': 1 
    }, { 
     'sql_id': u'7726bj0dhtnmt', 
     'sql_plan_hash_value': 453825145, 
     'sample_time': u'2017-12-23 10:45', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59718, 
     'resources_consumed': 11 
    }, { 
     'sql_id': u'8u125dk9nfc0q', 
     'sql_plan_hash_value': 2470916118L, 
     'sample_time': u'2017-12-23 10:45', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59707, 
     'resources_consumed': 13 
    }, { 
     'sql_id': u'cmx7t67z8wa74', 
     'sql_plan_hash_value': 4270729444L, 
     'sample_time': u'2017-12-23 10:45', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59705, 
     'resources_consumed': 19 
    }, { 
     'sql_id': u'0m9b1dywgrdqj', 
     'sql_plan_hash_value': 3103504081L, 
     'sample_time': u'2017-12-23 10:47', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59765, 
     'resources_consumed': 2 
    }, { 
     'sql_id': u'3qkhfbf2kyvhk', 
     'sql_plan_hash_value': 2234478098L, 
     'sample_time': u'2017-12-23 10:47', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59768, 
     'resources_consumed': 10 
    }, { 
     'sql_id': u'50kcsz2gh1w84', 
     'sql_plan_hash_value': 2667639044L, 
     'sample_time': u'2017-12-23 10:47', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59770, 
     'resources_consumed': 1 
    }, { 
     'sql_id': u'8u125dk9nfc0q', 
     'sql_plan_hash_value': 2470916118L, 
     'sample_time': u'2017-12-23 10:47', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59764, 
     'resources_consumed': 11 
    }, { 
     'sql_id': u'dp0vgyb1hsfjb', 
     'sql_plan_hash_value': 3272358443L, 
     'sample_time': u'2017-12-23 10:47', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59754, 
     'resources_consumed': 1 
    }, { 
     'sql_id': u'3qkhfbf2kyvhk', 
     'sql_plan_hash_value': 2234478098L, 
     'sample_time': u'2017-12-23 10:48', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59779, 
     'resources_consumed': 4 
    }, { 
     'sql_id': u'8u125dk9nfc0q', 
     'sql_plan_hash_value': 2470916118L, 
     'sample_time': u'2017-12-23 10:48', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59788, 
     'resources_consumed': 5 
    }, { 
     'sql_id': u'ft7wcqu3hzvca', 
     'sql_plan_hash_value': 2265968010L, 
     'sample_time': u'2017-12-23 10:48', 
     'dbid': 312109145, 
     'sid': 64, 
     'serial': 16655, 
     'id': 59789, 
     'resources_consumed': 1 
    } 
] 

ハッピーホリデー!

関連する問題