in src/main/java/com/google/cloud/dfmetrics/model/ResourcePricing.java [100:122]
public double estimateJobCost(String jobType, Map<String, Double> metrics) {
// Check if dataflow prime is enabled. If so return the cos
double dcuPrice = getPrice(metrics, "TotalDcuUsage", 1, 1);
if (dcuPrice > 0) {
LOG.warn("Estimated Job Cost is not available for prime enabled jobs");
return 0.0;
}
double estimatedCost =
getPrice(metrics, "TotalVcpuTime", SECONDS_PER_HOUR, vcpuPerHour)
+ getPrice(metrics, "TotalMemoryUsage", (SECONDS_PER_HOUR * 1000), memoryGbPerHour)
+ getPrice(metrics, "TotalPdUsage", SECONDS_PER_HOUR, pdGbPerHour)
+ getPrice(metrics, "TotalSsdUsage", SECONDS_PER_HOUR, ssdGbPerHour);
if (jobType.equals("JOB_TYPE_STREAMING")) {
estimatedCost +=
getPrice(metrics, "TotalStreamingDataProcessed", GB_IN_BYTES, streamingDataPerGb);
} else {
estimatedCost +=
getPrice(metrics, "BillableShuffleDataProcessed", GB_IN_BYTES, shuffleDataPerGb);
}
return Math.round(estimatedCost * scale) / scale;
}