Skip to content

Instantly share code, notes, and snippets.

@sawanoboly
Created July 10, 2012 03:13
Show Gist options
  • Save sawanoboly/3080735 to your computer and use it in GitHub Desktop.
Save sawanoboly/3080735 to your computer and use it in GitHub Desktop.
Convert json to csv for Joyent SmartDataCenter network billing at all machines.
# -*- coding: utf-8 -*-
require 'csv'
require 'json'
require 'pp'
csvh = ["owner_uuid", "zone_uuid","net_if","period_start","period_end","Megabytes_sent_delta","Megabytes_received_delta"]
jfile = "data/billing.json"
rfile = "result/all_result.csv"
ownerset = JSON.load(File.read(jfile))
CSV.open(rfile, "wb",:force_quotes => true) do |writer|
writer << csvh
ownerset.each do |k_owner,v_owner|
v_owner.each do |k_zone, v_zone|
next if !v_zone["metering"]
v_zone["metering"]["network"].each do |k_nif, v_nif|
period_start = v_nif["period_start"]
period_end = v_nif["period_end"]
sent_delta = v_nif["bytes_sent_delta"] / 1024 / 1024
received_delta = v_nif["bytes_received_delta"] / 1024 / 1024
writer << [k_owner, k_zone, k_nif, period_start, period_end, sent_delta, received_delta]
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment