{"id":2488,"date":"2026-10-29T09:58:42","date_gmt":"2026-10-29T08:58:42","guid":{"rendered":"https:\/\/thomas-kopton.de\/vblog\/?p=2488"},"modified":"2026-10-29T10:00:00","modified_gmt":"2026-10-29T09:00:00","slug":"vmware-vcf-operations-super-metrics-from-0-to-hero-part-2-looping-functions-and-depth","status":"publish","type":"post","link":"https:\/\/thomas-kopton.de\/vblog\/?p=2488","title":{"rendered":"VMware VCF Operations Super Metrics from 0 to Hero \u2013 Part 2: Looping Functions and Depth"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">In <a href=\"https:\/\/thomas-kopton.de\/vblog\/?p=2463\" data-type=\"link\" data-id=\"https:\/\/thomas-kopton.de\/vblog\/?p=2463\">Part 1<\/a> we took a Super Metric formula apart: resource entries, this, metric keys and depth. Every example worked on a single object. That is useful for unit conversions, but the real value of Super Metrics starts when one object asks many objects a question.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">VCF Operations already answers many cluster questions out of the box, at least in a basic form: configured vCPUs, Worst VM CPU contention, overcommitment. The power of Super Metrics is that we can go further and ask questions no out-of-the-box metric answers, for example: \u201cWhat is the worst CPU contention of all VMs with more than 4 vCPUs in this cluster?\u201d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Note the wording. A Super Metric returns a value, not an object: it tells you how bad the worst VM is, not which VM it is. To answer a question like this, the cluster must look at all its VMs, and that is what looping functions do. The \u201cmore than 4 vCPUs\u201d part needs a filter, we get there in Part 3.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Looping functions vs. single functions<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Super Metric functions come in two families.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Looping functions<\/strong> iterate over every object a resource entry returns and collapse the values into one number per collection cycle (few examples):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>sum<\/code> and <code>avg<\/code> &#8211; the total or the mean<\/li>\n\n\n\n<li><code>min<\/code> and <code>max <\/code>&#8211; the best or the worst value<\/li>\n\n\n\n<li><code>count<\/code> &#8211; how many values there are (very powerful with filters, see Part 3)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Single functions<\/strong> take one value and return one value, for example <code>abs<\/code>, <code>ceil<\/code>, <code>floor<\/code>, <code>pow<\/code>, <code>sqrt<\/code> or <code>log<\/code>, plus the usual operators + &#8211; * \/ % and parentheses.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One rule follows from this: a looping function only makes sense around a resource entry that returns many objects, so one with <code>objecttype<\/code> and <code>depth<\/code>. Wrapping <code>max() <\/code>around <code>${this, \u2026}<\/code> gives you the same single value back.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The complete list is in the documentation. You don\u2019t need to memorize it, the editor offers the functions in its dropdown.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Metric or attribute, and \u201cCannot convert aggregated result to number\u201d<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If you have built a few super metrics, you have probably met this error. To understand it, it helps to know the two ways a resource entry can name what it reads. The documentation defines them like this:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>An <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-purple-color\">attribute<\/mark><\/strong> is \u201cmetadata that describes the metric for the adapter to collect from the object\u201d. Think of it as the metric <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-purple-color\">type<\/mark><\/em>, for example CPU usage.<\/li>\n\n\n\n<li>A <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-purple-color\">metric<\/mark><\/strong> is \u201can instance of an attribute\u201d. The docs\u2019 example: if a VM has several CPUs, the CPU usage of each CPU is a metric instance.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">A resource entry can use either <code>metric=<\/code> or <code>attribute=<\/code>, both for a single object (<code>this<\/code>) and for objects found by <code>objecttype<\/code> and <code>depth<\/code>. The documentation\u2019s own looping example uses <code>attribute=<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>avg(${adaptertype=VMWARE, objecttype=VirtualMachine, attribute=cpu|usage_average, depth=1})<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The error itself comes from what a resource entry returns. A resource entry that reads one metric of one object, such as <code>${this, metric=cpu|usage_average}<\/code>, is a number. You can add it, divide it and compare it. A resource entry that can return values from many objects or instances, either because it uses objecttype and depth or because it reads an attribute with several instances, returns a set of values. A set is not a number, so it has to go through a looping function first:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Fails: one value per host, but no function to collapse them<br>${adaptertype=VMWARE, objecttype=HostSystem, metric=cpu|usage_average, depth=1}<br><br># Works: max() turns the set into one number<br>max(${adaptertype=VMWARE, objecttype=HostSystem, metric=cpu|usage_average, depth=1})<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The same applies when you put a multi-value resource entry straight into arithmetic, for example subtracting one host metric from another without <code>sum()<\/code> or <code>avg() <\/code>around each. So when you see \u201cCannot convert aggregated result to number\u201d, check two things:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Is every resource entry with objecttype and depth wrapped in a looping function?<\/li>\n\n\n\n<li>If you meant a single value of a single object, did you pick the metric of that object (<code>metric=<\/code>) rather than the metric type across objects or instances (<code>attribute=<\/code>)?<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Three warm-up examples you can verify<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">All three examples below are assigned to <strong>Cluster Compute Resource<\/strong>. Remember from Part 1: from a cluster, hosts are at depth 1 and VMs at depth 2.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">They are deliberately simple, and VCF Operations shows similar values on the cluster out of the box. That is the point: compare your result with the out-of-the-box value to prove the mechanics work, before you build formulas that nothing else can check.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">How bad is the worst VM?<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>max(${adaptertype=VMWARE, objecttype=VirtualMachine, metric=cpu|readyPct, depth=2})<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Averages hide pain. A cluster where 99 VMs are fine and one VM has 15% CPU ready looks perfectly healthy on average. max tells you how bad the worst VM is. It does not tell you which VM that is: a Super Metric returns a value, not an object. To find the VM, sort a VM list or view by CPU ready.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">How much did we hand out?<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>sum(${adaptertype=VMWARE, objecttype=VirtualMachine, metric=config|hardware|num_Cpu, depth=2})<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The sum of configured vCPUs across all VMs in the cluster.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">What do we physically own?<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>sum(${adaptertype=VMWARE, objecttype=HostSystem, metric=hardware|cpuinfo|num_CpuCores, depth=1})<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The sum of physical cores across all hosts. Note the different depth: hosts are one hop away, VMs two.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Putting it together: the vCPU to pCore ratio<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Divide the last two and you have the KPI that almost every capacity conversation I have with customers starts with:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sum(${adaptertype=VMWARE, objecttype=VirtualMachine, metric=config|hardware|num_Cpu, depth=2})<br>\/ sum(${adaptertype=VMWARE, objecttype=HostSystem, metric=hardware|cpuinfo|num_CpuCores, depth=1})<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Name it <code>YourPrefix - vCPU to pCore Ratio<\/code> and assign it to Cluster Compute Resource. Two habits I recommend when building formulas like this:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Build the numerator first and Preview it on its own. Then add the denominator. If the final result looks wrong, you know which half to look at.<\/li>\n\n\n\n<li>Sanity-check it once by hand: count the vCPUs and cores in the UI and do the division in your head.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2026\/10\/image-2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"633\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2026\/10\/image-2-1024x633.png\" alt=\"\" class=\"wp-image-2507\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2026\/10\/image-2-1024x633.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2026\/10\/image-2-767x474.png 767w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2026\/10\/image-2-300x185.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2026\/10\/image-2-1536x950.png 1536w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2026\/10\/image-2-2048x1266.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\"><em>Figure 01: vCPU to pCore ratio example.<\/em><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">There is one flaw in this formula. Can you spot it? I\u2019ll fix it in Part 3.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Aggregate first, convert last<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">When you combine aggregation with unit conversion, do the conversion once, at the end:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sum(${adaptertype=VMWARE, objecttype=VirtualMachine, metric=mem|guest_provisioned, depth=2}) \/ 1048576<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This gives the total configured VM memory of the cluster in GB (the metric is reported in KB; 1,048,576 KB = 1 GB). The conversion runs once, on the aggregated value, which keeps the formula short and easy to read.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">One formula, many levels<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Now let\u2019s reuse the ratio on a datacenter. Assign the same Super Metric to <strong>Datacenter<\/strong> and Preview it. It doesn\u2019t work: from a datacenter, VMs are three hops away and hosts two. The formula is looking at the wrong level.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The fix is the trick from Part 1. Raise both depths to a generous value:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sum(${adaptertype=VMWARE, objecttype=VirtualMachine, metric=config|hardware|num_Cpu, depth=5})<br>\/ sum(${adaptertype=VMWARE, objecttype=HostSystem, metric=hardware|cpuinfo|num_CpuCores, depth=5})<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Because objecttype still filters, the formula only picks VMs and hosts, whatever the level. Assign it to Cluster, Datacenter and vCenter, and you get the ratio on all three from one definition. This is also what the official best-practice guidance recommends: use a larger depth so the Super Metric can expand to higher levels.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Try it<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">On <strong>Cluster Compute Resource<\/strong>, build:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>YourPrefix &#8211; Max VM CPU Ready (%) with max and depth 2.<\/li>\n\n\n\n<li>YourPrefix &#8211; Total VM Memory Configured (GB) with sum and the conversion at the end.<\/li>\n\n\n\n<li>YourPrefix &#8211; vCPU to pCore Ratio, then make it reusable on Datacenter by raising the depth.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">What\u2019s next<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Our ratio counts every VM in the cluster, including the powered-off ones. That is the flaw, and it is a good reason to learn filtering. In <strong>Part 3<\/strong> we look at the where clause, freshness checks, string operators and conditional expressions that turn numbers into decisions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Stay<\/mark><\/strong> <strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#f5d800\" class=\"has-inline-color\">safe<\/mark><\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Thomas \u2013&nbsp;<a href=\"https:\/\/twitter.com\/ThomasKopton\">https:\/\/twitter.com\/ThomasKopton<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Part 1 we took a Super Metric formula apart: resource entries, this, metric keys and depth. Every example worked on a single object. That is useful for unit conversions, but the real value of Super Metrics starts when one object asks many objects a question. VCF Operations already answers many cluster questions out of &#8230;<\/p>\n","protected":false},"author":1,"featured_media":2480,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[57,15,14,95,93,34,2],"tags":[58,94],"class_list":["post-2488","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aria-operations","category-super-metric","category-supermetric","category-vcf","category-vcf-operations","category-vrealize-operations","category-vrops","tag-aria-operations","tag-vcf-operations"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>VMware VCF Operations Super Metrics from 0 to Hero \u2013 Part 2: Looping Functions and Depth - TOMsOps<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thomas-kopton.de\/vblog\/?p=2488\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"VMware VCF Operations Super Metrics from 0 to Hero \u2013 Part 2: Looping Functions and Depth - TOMsOps\" \/>\n<meta property=\"og:description\" content=\"In Part 1 we took a Super Metric formula apart: resource entries, this, metric keys and depth. Every example worked on a single object. That is useful for unit conversions, but the real value of Super Metrics starts when one object asks many objects a question. VCF Operations already answers many cluster questions out of ...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thomas-kopton.de\/vblog\/?p=2488\" \/>\n<meta property=\"og:site_name\" content=\"TOMsOps\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-29T08:58:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-29T09:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2026\/10\/image-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1096\" \/>\n\t<meta property=\"og:image:height\" content=\"596\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Thomas Kopton\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Thomas Kopton\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=2488#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=2488\"},\"author\":{\"name\":\"Thomas Kopton\",\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/#\\\/schema\\\/person\\\/892d6b96c66b1dd4b75c6e32fdbfea82\"},\"headline\":\"VMware VCF Operations Super Metrics from 0 to Hero \u2013 Part 2: Looping Functions and Depth\",\"datePublished\":\"2026-10-29T08:58:42+00:00\",\"dateModified\":\"2026-10-29T09:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=2488\"},\"wordCount\":1168,\"commentCount\":2,\"image\":{\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=2488#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/image-1.png\",\"keywords\":[\"Aria Operations\",\"VCF Operations\"],\"articleSection\":[\"Aria Operations\",\"Super Metric\",\"SuperMetric\",\"VCF\",\"VCF Operations\",\"vRealize Operations\",\"vROps\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=2488#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=2488\",\"url\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=2488\",\"name\":\"VMware VCF Operations Super Metrics from 0 to Hero \u2013 Part 2: Looping Functions and Depth - TOMsOps\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=2488#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=2488#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/image-1.png\",\"datePublished\":\"2026-10-29T08:58:42+00:00\",\"dateModified\":\"2026-10-29T09:00:00+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/#\\\/schema\\\/person\\\/892d6b96c66b1dd4b75c6e32fdbfea82\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=2488#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=2488\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=2488#primaryimage\",\"url\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/image-1.png\",\"contentUrl\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/image-1.png\",\"width\":1096,\"height\":596},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=2488#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"VMware VCF Operations Super Metrics from 0 to Hero \u2013 Part 2: Looping Functions and Depth\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/#website\",\"url\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/\",\"name\":\"TOMsOps\",\"description\":\"Just another VMware Cloud Management Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/#\\\/schema\\\/person\\\/892d6b96c66b1dd4b75c6e32fdbfea82\",\"name\":\"Thomas Kopton\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e746aafbd3733172ceb4d600ba1feda61bc87cd3b70f5a9dfb581907cc7973b1?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e746aafbd3733172ceb4d600ba1feda61bc87cd3b70f5a9dfb581907cc7973b1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e746aafbd3733172ceb4d600ba1feda61bc87cd3b70f5a9dfb581907cc7973b1?s=96&d=mm&r=g\",\"caption\":\"Thomas Kopton\"},\"url\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"VMware VCF Operations Super Metrics from 0 to Hero \u2013 Part 2: Looping Functions and Depth - TOMsOps","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thomas-kopton.de\/vblog\/?p=2488","og_locale":"en_US","og_type":"article","og_title":"VMware VCF Operations Super Metrics from 0 to Hero \u2013 Part 2: Looping Functions and Depth - TOMsOps","og_description":"In Part 1 we took a Super Metric formula apart: resource entries, this, metric keys and depth. Every example worked on a single object. That is useful for unit conversions, but the real value of Super Metrics starts when one object asks many objects a question. VCF Operations already answers many cluster questions out of ...","og_url":"https:\/\/thomas-kopton.de\/vblog\/?p=2488","og_site_name":"TOMsOps","article_published_time":"2026-10-29T08:58:42+00:00","article_modified_time":"2026-10-29T09:00:00+00:00","og_image":[{"width":1096,"height":596,"url":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2026\/10\/image-1.png","type":"image\/png"}],"author":"Thomas Kopton","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Thomas Kopton","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thomas-kopton.de\/vblog\/?p=2488#article","isPartOf":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=2488"},"author":{"name":"Thomas Kopton","@id":"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/892d6b96c66b1dd4b75c6e32fdbfea82"},"headline":"VMware VCF Operations Super Metrics from 0 to Hero \u2013 Part 2: Looping Functions and Depth","datePublished":"2026-10-29T08:58:42+00:00","dateModified":"2026-10-29T09:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=2488"},"wordCount":1168,"commentCount":2,"image":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=2488#primaryimage"},"thumbnailUrl":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2026\/10\/image-1.png","keywords":["Aria Operations","VCF Operations"],"articleSection":["Aria Operations","Super Metric","SuperMetric","VCF","VCF Operations","vRealize Operations","vROps"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/thomas-kopton.de\/vblog\/?p=2488#respond"]}]},{"@type":"WebPage","@id":"https:\/\/thomas-kopton.de\/vblog\/?p=2488","url":"https:\/\/thomas-kopton.de\/vblog\/?p=2488","name":"VMware VCF Operations Super Metrics from 0 to Hero \u2013 Part 2: Looping Functions and Depth - TOMsOps","isPartOf":{"@id":"https:\/\/thomas-kopton.de\/vblog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=2488#primaryimage"},"image":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=2488#primaryimage"},"thumbnailUrl":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2026\/10\/image-1.png","datePublished":"2026-10-29T08:58:42+00:00","dateModified":"2026-10-29T09:00:00+00:00","author":{"@id":"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/892d6b96c66b1dd4b75c6e32fdbfea82"},"breadcrumb":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=2488#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thomas-kopton.de\/vblog\/?p=2488"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/thomas-kopton.de\/vblog\/?p=2488#primaryimage","url":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2026\/10\/image-1.png","contentUrl":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2026\/10\/image-1.png","width":1096,"height":596},{"@type":"BreadcrumbList","@id":"https:\/\/thomas-kopton.de\/vblog\/?p=2488#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thomas-kopton.de\/vblog"},{"@type":"ListItem","position":2,"name":"VMware VCF Operations Super Metrics from 0 to Hero \u2013 Part 2: Looping Functions and Depth"}]},{"@type":"WebSite","@id":"https:\/\/thomas-kopton.de\/vblog\/#website","url":"https:\/\/thomas-kopton.de\/vblog\/","name":"TOMsOps","description":"Just another VMware Cloud Management Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thomas-kopton.de\/vblog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/892d6b96c66b1dd4b75c6e32fdbfea82","name":"Thomas Kopton","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/e746aafbd3733172ceb4d600ba1feda61bc87cd3b70f5a9dfb581907cc7973b1?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e746aafbd3733172ceb4d600ba1feda61bc87cd3b70f5a9dfb581907cc7973b1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e746aafbd3733172ceb4d600ba1feda61bc87cd3b70f5a9dfb581907cc7973b1?s=96&d=mm&r=g","caption":"Thomas Kopton"},"url":"https:\/\/thomas-kopton.de\/vblog\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/posts\/2488","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2488"}],"version-history":[{"count":19,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/posts\/2488\/revisions"}],"predecessor-version":[{"id":2570,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/posts\/2488\/revisions\/2570"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/media\/2480"}],"wp:attachment":[{"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2488"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2488"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2488"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}