Skip to content
SPL // Splunk

Using the mvzip and mvcount Command

KGI Avatar
 

Written by: Robert Caldwell | Last Updated:

 
June 4, 2025
 
Search Command Of The Week: mvzip and mvcount
 
 

Originally Published:

 
May 22, 2025

Splunk Processing Language (SPL) forms the foundation of Splunk’s powerful data analysis capabilities. Within this, the mvzip and mvcount commands are special tools designed to work with multi-value fields in Splunk. Multi-value fields require specific handling techniques for effective analysis. These commands extend SPL’s capabilities by providing elegant solutions for combining and counting values within these fields.

Understanding the Commands

mvzip

The mvzip command works by combining corresponding elements from multiple multi-value fields into a single multi-value field. Much like a zipper interleaves teeth from opposite sides, mvzip interweaves values from different fields. This operation proves particularly valuable when working with related data stored across multiple fields that need to be analyzed together. For instance, if you have separate multi-value fields containing usernames and their corresponding login times, mvzip can combine these into pairs within a single field. This simplifies subsequent analysis and visualization tasks by keeping related values together. 

mvcount

The mvcount command counts the number of values in a multi-value field and stores this count in a new field. This seemingly simple operation provides crucial information about the cardinality and distribution of values across your events. Understanding how many values exist in a multi-value field often serves as a starting point for more complex analyses. So this becomes useful when you need to troubleshoot system behaviors or analyze user activities. 

Benefits of Using mvzip and mvcount

These commands offer several advantages that can streamline your Splunk workflows: 

  • Enhanced Data Correlation – The mvzip command creates meaningful associations between related values, making it easier to identify patterns and relationships that might otherwise remain hidden in separate fields. Moreover, this correlation capability reduces the need for complex transformations. 
  • Simplified Analysis Workflows – By condensing related information into a single field with mvzip or quickly assessing field complexity with mvcount, analysts can reduce the number of steps needed in their search pipelines. Additionally, these commands allow for more intuitive data exploration and faster insight generation. 
  • Improved Visualization Options – Data processed with these commands often becomes more suitable for visualization through Splunk’s charting capabilities, enabling clearer communication of findings to stakeholders. Furthermore, the structured format created by these commands works seamlessly with Splunk’s visualization tools. 

Proper Basic Syntax

Understanding the syntax for each command is essential for their effective application: 

mvzip Syntax
				
					| eval <new-field>=mvzip(<mv-field1>, < mv-field2>, <delimiter>) 
				
			

Key parameters include: 

  • <new-field>: The new field which will combine the two values along with the delimiter 
  • <mv-field1>, <mv-field2>: The input multi-value fields to be combined 
  • delimiter: Specifies the character(s) placed between combined values (default is a comma: “,”) 
mvcount Syntax
				
					| eval <new-field>=mvcount(mv-field) 
				
			

 Key parameters include: 

  • <new-field>: The new field which will hold the count of each multi value field 
  • <mv-field>: The field to count, it will return “NULL” if there are no values 

Example Use Cases

Example #1: Analyzing Web Traffic with mvzip
Use Case: When investigating web traffic patterns, security analysts often need to correlate source IP addresses with the requested URLs. This correlation helps identify suspicious behavior patterns. 
				
					index=web sourcetype=access_combined 
| stats values(src_ip) as src_ips, values(uri_path) as uri_paths by session_id 
| eval ip_uri_pairs=mvzip(mvzip(src_ips, uri_paths, "→") 
				
			

Explanation: This search first collects all source IPs and requested URI paths for each session. The mvzip command then combines these values into pairs with a directional arrow as a delimiter. Finally, we could take this and filter for suspicious activity like malicious PHP files which would act as an indicator of compromise. 

Example #2: Network Connection Analysis with mvcount

Use Case: Network security monitoring often requires understanding the distribution of connections across different hosts. The mvcount command can provide quick insights into this distribution. 

				
					index=network sourcetype=firewall 
| stats values(dest_port) as dest_ports by src_ip 
| eval dest_port_count=mvcount(dest_ports) 
| where dest_port_count > 100
| sort - dest_port_count 
				
			
Explanation: This example identifies potential port scanning activity by first collecting all destination ports accessed by each source IP. The mvcount command then counts how many unique ports each IP has connected to. By filtering for IPs that have connected to more than 100 distinct ports and sorting by this count, security analysts can quickly identify potential scanning behavior. 
Example #3: User Activities Monitoring with mvcount

Use Case: Track user login dates and the IP addresses used to monitor suspicious activity. We can use mvcount to count the number of dates a user logged on to Office 365. 

				
					index=o365 
| stats values(UserId) as users, values(date) as login_date, values(ClientIP) as ips 
| mvexpand users 
| eval login_count=mvcount(ips) 
| where login_count > 10 
| sort – login_count 
				
			
Explanation: This search examines Office 365 logs and gathers a series of values in the UserId, date, and ClientIP fields. We then use mvexpand to give each user within each app its own row, which will help with our next command. We then use mvcount to sum up the number of IP addresses used to log in to that specific account. Finally, we use the where and sort commands to only show us accounts that have been attempted to be logged in to by 10 or more IP addresses, and sort by the highest sum first. With this, we can analyze suspicious login dates or IP addresses with user accounts in Office 365. 

Conclusion

The mvzip and mvcount commands significantly enhance Splunk’s ability to handle complex multi-value fields, allowing you to get more insight in your data. Their proper application can transform challenging data correlation tasks into streamlined, efficient processes. 

To summarize: 

  • mvzip combines values from multiple fields into meaningful pairs or groups, making relationships more visible and subsequent analysis more intuitive. 
  • mvcount provides quick insights into the occurrence of multi-value fields, serving as an essential diagnostic tool and a foundation for identifying anomalies. 
  • Together, these commands form a small but powerful niche toolkit for anyone working with multi-value data in Splunk, simplifying complex analysis tasks and enabling deeper insights into your data. 

To access more Splunk searches, check out Atlas Search Library, which is part of the Atlas Platform. Specifically, Atlas Search Library offers a curated list of optimized searches. These searches empower Splunk users without requiring SPL knowledge. Furthermore, you can create, customize, and maintain your own search library. By doing so, you ensure your users get the most from using Splunk.

Helpful? Don't forget to share this post!
LinkedIn
Reddit
Email
Facebook