{"id":557,"date":"2010-12-07T22:49:00","date_gmt":"2010-12-07T22:49:00","guid":{"rendered":"\/blogs\/jonathan\/post\/An-XEvent-a-Day-(7-of-31)-e28093-Targets-Week-e28093-bucketizers.aspx"},"modified":"2017-04-13T15:49:04","modified_gmt":"2017-04-13T19:49:04","slug":"an-xevent-a-day-7-of-31-targets-week-bucketizers","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-7-of-31-targets-week-bucketizers\/","title":{"rendered":"An XEvent a Day (7 of 31) &#8211; Targets Week &#8211; bucketizers"},"content":{"rendered":"<p>Yesterday\u2019s post, <a href=\"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-6-of-31-targets-week-asynchronous_file_target\/\" target=\"_blank\">Targets Week &#8211; asynchronous_file_target<\/a>, looked at the asynchronous_file_target Target in Extended Events and how it outputs the raw Event data in an XML document.&#160; Continuing with Targets week today, we\u2019ll look at the bucketizer targets in Extended Events which can be used to group Events based on the Event data that is being returned.<\/p>\n<h2>What is the bucketizer?<\/h2>\n<p>The bucketizer performs grouping of Events as they are processed by the target into buckets based on the Event data and the Targets configuration.&#160; There are two bucketizer targets in Extended Events; a synchronous_bucketizer and an asynchronous_bucketizer.&#160; The only difference between the two is the manner in which the Event data is processed; either synchronously on the connection that generated the Event, or asynchronously after being dispatched to the target based on the MAX_DISPATCH_LATENCY for the Event Session, or when the dispatch buffer becomes full.&#160; Since the two bucketizers are identical in every way, except for their processing, this blog post will use the asynchronous_bucketizer for all further references.&#160; The bucketizers are a memory resident target, similar to the ring_buffer and like the ring_buffer, only contain the grouped Event data when the Event Session is active.&#160; When the Event Session is stopped, the memory buffers allocated to the bucketizer target are freed and all data contained in the target disappears.&#160; The bucketizer targets can be used to simplify troubleshooting by identifying the events that are occurring the most, and then allowing more focused Event collection for further analysis.&#160; Further analysis could include using either the ring_buffer or the asynchronous_file_target to look at the actual Event data being generated, or changing the bucketizer Targets configuration to group event occurrences based on a different criteria. <\/p>\n<h2>Configuration Options<\/h2>\n<p>The ring_buffer like most of the targets has configuration options that can be found in the sys.dm_xe_object_columns DMV.<\/p>\n<blockquote>\n<pre class=\"code\"><span style=\"color: green\">-- Target Configurable Fields\r\n<\/span><span style=\"color: blue\">SELECT \r\n    <\/span>oc<span style=\"color: gray\">.<\/span>name <span style=\"color: blue\">AS <\/span>column_name<span style=\"color: gray\">,\r\n    <\/span>oc<span style=\"color: gray\">.<\/span>column_id<span style=\"color: gray\">,\r\n    <\/span>oc<span style=\"color: gray\">.<\/span><span style=\"color: magenta\">type_name<\/span><span style=\"color: gray\">,\r\n    <\/span>oc<span style=\"color: gray\">.<\/span>capabilities_desc<span style=\"color: gray\">,\r\n    <\/span>oc<span style=\"color: gray\">.<\/span><span style=\"color: blue\">description\r\nFROM <\/span><span style=\"color: green\">sys<\/span><span style=\"color: gray\">.<\/span><span style=\"color: green\">dm_xe_packages <\/span><span style=\"color: blue\">AS <\/span>p\r\n<span style=\"color: gray\">JOIN <\/span><span style=\"color: green\">sys<\/span><span style=\"color: gray\">.<\/span><span style=\"color: green\">dm_xe_objects <\/span><span style=\"color: blue\">AS <\/span>o \r\n    <span style=\"color: blue\">ON <\/span>p<span style=\"color: gray\">.<\/span><span style=\"color: blue\">guid <\/span><span style=\"color: gray\">= <\/span>o<span style=\"color: gray\">.<\/span>package_guid\r\n<span style=\"color: gray\">JOIN <\/span><span style=\"color: green\">sys<\/span><span style=\"color: gray\">.<\/span><span style=\"color: green\">dm_xe_object_columns <\/span><span style=\"color: blue\">AS <\/span>oc \r\n    <span style=\"color: blue\">ON <\/span>o<span style=\"color: gray\">.<\/span>name <span style=\"color: gray\">= <\/span>oc<span style=\"color: gray\">.<\/span><span style=\"color: magenta\">OBJECT_NAME \r\n    <\/span><span style=\"color: gray\">AND <\/span>o<span style=\"color: gray\">.<\/span>package_guid <span style=\"color: gray\">= <\/span>oc<span style=\"color: gray\">.<\/span>object_package_guid\r\n<span style=\"color: blue\">WHERE <\/span><span style=\"color: gray\">(<\/span>p<span style=\"color: gray\">.<\/span>capabilities <span style=\"color: gray\">IS NULL OR <\/span>p<span style=\"color: gray\">.<\/span>capabilities <span style=\"color: gray\">&amp; <\/span>1 <span style=\"color: gray\">= <\/span>0<span style=\"color: gray\">)\r\n  AND (<\/span>o<span style=\"color: gray\">.<\/span>capabilities <span style=\"color: gray\">IS NULL OR <\/span>o<span style=\"color: gray\">.<\/span>capabilities <span style=\"color: gray\">&amp; <\/span>1 <span style=\"color: gray\">= <\/span>0<span style=\"color: gray\">)\r\n  AND <\/span>o<span style=\"color: gray\">.<\/span>object_type <span style=\"color: gray\">= <\/span><span style=\"color: red\">'target'\r\n  <\/span><span style=\"color: gray\">AND <\/span>o<span style=\"color: gray\">.<\/span>name <span style=\"color: gray\">= <\/span><span style=\"color: red\">'asynchronous_bucketizer'\r\n<\/span><\/pre>\n<\/blockquote>\n<p><span style=\"color: green\"><\/span><\/p>\n<p>In SQL Server 2008, 2008R2, and SQL Server Denali CTP1, there are four configuration options for the asynchronous_bucketizer Target.&#160; The slots option sets the maximum number of buckets the target will collect.&#160; Once this number of buckets is reached, new events that do not apply to an existing bucket are dropped by the target and not grouped.&#160; The filtering_event_name option is used to set the name of the specific Event in the Event Session to filter on.&#160; The source_type option is used to specify whether the source being used for bucketing is a part of the Event data or an Action that has been added to the Events contained in the Event Session.&#160; The source option specifies the source that will be used to generate the buckets for grouping in the target.<\/p>\n<p><a href=\"https:\/\/www.SQLskills.com\/blogs\/jonathan\/wp-content\/uploads\/windowslivewriter\/anxeventaday7of31targetsweekbucketizers\/3644b50a\/image.png\" mce_href=\"http:\/\/sqlblog.com\/blogs\/jonathan_kehayias\/image_43E11008.png\"><img fetchpriority=\"high\" decoding=\"async\" style=\"border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px\" title=\"image\" border=\"0\" alt=\"image\" src=\"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/WindowsLiveWriter\/AnXEventaDay7of31TargetsWeekbucketizers\/35001C2B\/image_thumb.png\" width=\"644\" height=\"91\" mce_src=\"http:\/\/sqlblog.com\/blogs\/jonathan_kehayias\/image_thumb_0E87D7D6.png\" \/><\/a> <\/p>\n<p>As shown above the source is the only required option for the asynchronous_bucketizer Target.&#160; However, when the source is an Action the source_type option is also required to specify that the source is an Action.&#160; When using one of the Event Data elements as the source, only the Data element (also known as a column name) needs to provided to the source.&#160; When using an Action for the source, the Package name must be specified along with the Action name in the format of packagename.actionname.&#160; Likewise when specifying a filtering_event_name, the Package name must also be provided in the format of packagename.eventname.<\/p>\n<h2>Understanding the Target Data Format<\/h2>\n<p>The bucketizer Targets like the other Targets already output the data in XML format, and the XML is not schema bound, but has a predictable format.&#160; Inside the Extended Events Engine, the bucketing data is maintained in a binary format that minimizes the amount of memory necessary for the Targets memory buffers.&#160; The bucketing data is materialized into an XML document when the Target information is queried using the sys.dm_xe_session_targets DMV, allowing it to be used for analysis.&#160; The asynchronous_bucketizer XML document contains a parent XML &lt;BucketizerTarget&gt; Node that contains attributes about the Targets operation since the Event Session was started including the number of truncated Events and the maximum number of buckets contained in the Target.&#160; The bucket groups are contained in &lt;Slot&gt; nodes that have two attributes; the count is the number of events that have occurred and the trunc is the number of bytes that have been truncated.&#160; The &lt;Slot&gt; node contains a &lt;value&gt; node that contains the source that the bucket belongs to.&#160; A simplified representation of the XML document for the asynchronous_bucketizer target is:<\/p>\n<blockquote>\n<pre class=\"code\"><span style=\"color: blue\">&lt;<\/span><span style=\"color: #a31515\">BucketizerTarget <\/span><span style=\"color: red\">truncated<\/span><span style=\"color: blue\">=<\/span>&quot;&quot; <span style=\"color: red\">buckets<\/span><span style=\"color: blue\">=<\/span>&quot;&quot;<span style=\"color: blue\">&gt;\r\n  &lt;<\/span><span style=\"color: #a31515\">Slot <\/span><span style=\"color: red\">count<\/span><span style=\"color: blue\">=<\/span>&quot;&quot; <span style=\"color: red\">trunc<\/span><span style=\"color: blue\">=<\/span>&quot;&quot;<span style=\"color: blue\">&gt;\r\n    &lt;<\/span><span style=\"color: #a31515\">value<\/span><span style=\"color: blue\">&gt;&lt;\/<\/span><span style=\"color: #a31515\">value<\/span><span style=\"color: blue\">&gt;\r\n  &lt;\/<\/span><span style=\"color: #a31515\">Slot<\/span><span style=\"color: blue\">&gt;\r\n&lt;\/<\/span><span style=\"color: #a31515\">BucketizerTarget<\/span><span style=\"color: blue\">&gt;<\/span><\/pre>\n<\/blockquote>\n<h2>Querying\/Parsing the Target Data<\/h2>\n<p>The asynchronous_bucketizer targets simplistic XML output makes querying it relatively simple compared to the targets that we\u2019ve already looked at this week.&#160; However, unlike the other ring_buffer and asychronous_file_target, the asychronous_bucketizer can not be parsed using Adam Machanic\u2019s <a href=\"http:\/\/sqlblog.com\/blogs\/adam_machanic\/archive\/2010\/05\/08\/extended-events-code-generator-v1-001-a-quick-fix.aspx\" target=\"_blank\" mce_href=\"http:\/\/sqlblog.com\/blogs\/adam_machanic\/archive\/2010\/05\/08\/extended-events-code-generator-v1-001-a-quick-fix.aspx\">Extended Events Code Generator<\/a>.&#160; The simplicity of the XML and its standard output doesn\u2019t really require specialized code to generate a easily usable table output for this.&#160; The <a href=\"http:\/\/extendedeventmanager.codeplex.com\/\" target=\"_blank\" mce_href=\"http:\/\/extendedeventmanager.codeplex.com\/\">Extended Events SSMS Addin for SQL Server 2008<\/a>&#160; TargetDataViewer will shred the XML but its not even worth using for this particular target, since the XQuery is very simple, and you can do a lot more with the TSQL depending on the Event Session that your create.&#160; To demonstrate the usage of the asynchronous_bucketizer, we\u2019ll look at a couple of examples.&#160; The first example will show how to track recompiles by database_id to find the databases that have the most recompiles occurring.<\/p>\n<blockquote>\n<pre class=\"code\"><span style=\"color: green\">-- Create an Event Session to Track Recompiles\r\n<\/span><span style=\"color: blue\">IF <\/span><span style=\"color: gray\">EXISTS(<\/span><span style=\"color: blue\">SELECT <\/span><span style=\"color: gray\">* <\/span><span style=\"color: blue\">FROM <\/span><span style=\"color: green\">sys<\/span><span style=\"color: gray\">.<\/span><span style=\"color: green\">server_event_sessions <\/span><span style=\"color: blue\">WHERE <\/span>name<span style=\"color: gray\">=<\/span><span style=\"color: red\">'BucketizerTargetDemoRecompiles'<\/span><span style=\"color: gray\">)\r\n    <\/span><span style=\"color: blue\">DROP EVENT SESSION <\/span>[BucketizerTargetDemoRecompiles] <span style=\"color: blue\">ON SERVER<\/span><span style=\"color: gray\">;\r\n<\/span><span style=\"color: blue\">CREATE EVENT SESSION <\/span>[BucketizerTargetDemoRecompiles]\r\n<span style=\"color: blue\">ON SERVER\r\nADD EVENT <\/span>sqlserver<span style=\"color: gray\">.<\/span>sql_statement_starting\r\n<span style=\"color: gray\">(    <\/span><span style=\"color: blue\">ACTION <\/span><span style=\"color: gray\">(<\/span>sqlserver<span style=\"color: gray\">.<\/span>database_id<span style=\"color: gray\">) <\/span><span style=\"color: green\">-- database_id to bucket on\r\n     <\/span><span style=\"color: blue\">WHERE <\/span><span style=\"color: gray\">(<\/span><span style=\"color: blue\">state<\/span><span style=\"color: gray\">=<\/span>1<span style=\"color: gray\">) <\/span><span style=\"color: green\">-- recompile state from dm_xe_map_values\r\n<\/span><span style=\"color: gray\">),\r\n<\/span><span style=\"color: blue\">ADD EVENT <\/span>sqlserver<span style=\"color: gray\">.<\/span>sp_statement_starting\r\n<span style=\"color: gray\">(    <\/span><span style=\"color: blue\">ACTION <\/span><span style=\"color: gray\">(<\/span>sqlserver<span style=\"color: gray\">.<\/span>database_id<span style=\"color: gray\">) <\/span><span style=\"color: green\">-- database_id to bucket on\r\n     <\/span><span style=\"color: blue\">WHERE <\/span><span style=\"color: gray\">(<\/span><span style=\"color: blue\">state<\/span><span style=\"color: gray\">=<\/span>1<span style=\"color: gray\">) <\/span><span style=\"color: green\">-- recompile state from dm_xe_map_values\r\n<\/span><span style=\"color: gray\">)\r\n<\/span><span style=\"color: blue\">ADD TARGET <\/span>package0<span style=\"color: gray\">.<\/span>asynchronous_bucketizer\r\n<span style=\"color: gray\">(     <\/span><span style=\"color: blue\">SET <\/span>source_type<span style=\"color: gray\">=<\/span>1<span style=\"color: gray\">, <\/span><span style=\"color: green\">-- specifies bucketing on Action \r\n         <\/span><span style=\"color: gray\">source=<\/span><span style=\"color: red\">'sqlserver.database_id' <\/span><span style=\"color: green\">-- Action to bucket on\r\n<\/span><span style=\"color: gray\">)\r\n<\/span><span style=\"color: blue\">WITH <\/span><span style=\"color: gray\">(<\/span>MAX_DISPATCH_LATENCY <span style=\"color: gray\">= <\/span>5 SECONDS<span style=\"color: gray\">)\r\n<\/span><span style=\"color: blue\">GO\r\nALTER EVENT SESSION <\/span>[BucketizerTargetDemoRecompiles]\r\n<span style=\"color: blue\">ON SERVER\r\nSTATE<\/span><span style=\"color: gray\">=<\/span>START<\/pre>\n<\/blockquote>\n<p>The above session collects the sql_statement_starting and sp_statement_starting Events, adds the database_id Action to the Event so that we can bucket on it, and then filters the Events to only fire if the state for the Event matches the map_key in sys.dm_xe_map_values for Recompile.&#160; If the server being tested on doesn\u2019t have a high recompile rate, an easy way to trigger Recompiles is to update the statistics on the tables inside of a database.<\/p>\n<blockquote>\n<pre class=\"code\"><span style=\"color: blue\">EXECUTE <\/span><span style=\"color: maroon\">sp_MSforeachtable <\/span><span style=\"color: red\">'UPDATE STATISTICS ?'<\/span><\/pre>\n<\/blockquote>\n<p><a href=\"http:\/\/www.11011.net\/software\/vspaste\" mce_href=\"http:\/\/11011.net\/software\/vspaste\"><\/a>To view the bucketized data from the target, we query sys.dm_xe_session_targets for our session and target using CAST to convert the target_data to XML in a derived table, and then using a CROSS APPLY of the .node() method to split on the &lt;Slot&gt; nodes.<\/p>\n<blockquote>\n<pre class=\"code\"><span style=\"color: blue\">SELECT \r\n    <\/span><span style=\"color: magenta\">DB_NAME<\/span><span style=\"color: gray\">(<\/span>n<span style=\"color: gray\">.<\/span>value<span style=\"color: gray\">(<\/span><span style=\"color: red\">'(value)[1]'<\/span><span style=\"color: gray\">, <\/span><span style=\"color: red\">'int'<\/span><span style=\"color: gray\">)) <\/span><span style=\"color: blue\">AS <\/span>DatabaseName<span style=\"color: gray\">,\r\n    <\/span>n<span style=\"color: gray\">.<\/span>value<span style=\"color: gray\">(<\/span><span style=\"color: red\">'(@count)[1]'<\/span><span style=\"color: gray\">, <\/span><span style=\"color: red\">'int'<\/span><span style=\"color: gray\">) <\/span><span style=\"color: blue\">AS <\/span>EventCount<span style=\"color: gray\">,\r\n    <\/span>n<span style=\"color: gray\">.<\/span>value<span style=\"color: gray\">(<\/span><span style=\"color: red\">'(@trunc)[1]'<\/span><span style=\"color: gray\">, <\/span><span style=\"color: red\">'int'<\/span><span style=\"color: gray\">) <\/span><span style=\"color: blue\">AS <\/span>EventsTrunc\r\n<span style=\"color: blue\">FROM\r\n<\/span><span style=\"color: gray\">(<\/span><span style=\"color: blue\">SELECT <\/span><span style=\"color: magenta\">CAST<\/span><span style=\"color: gray\">(<\/span>target_data <span style=\"color: blue\">as XML<\/span><span style=\"color: gray\">) <\/span>target_data\r\n<span style=\"color: blue\">FROM <\/span><span style=\"color: green\">sys<\/span><span style=\"color: gray\">.<\/span><span style=\"color: green\">dm_xe_sessions <\/span><span style=\"color: blue\">AS <\/span>s \r\n<span style=\"color: gray\">JOIN <\/span><span style=\"color: green\">sys<\/span><span style=\"color: gray\">.<\/span><span style=\"color: green\">dm_xe_session_targets <\/span>t\r\n    <span style=\"color: blue\">ON <\/span>s<span style=\"color: gray\">.<\/span><span style=\"color: blue\">address <\/span><span style=\"color: gray\">= <\/span>t<span style=\"color: gray\">.<\/span>event_session_address\r\n<span style=\"color: blue\">WHERE <\/span>s<span style=\"color: gray\">.<\/span>name <span style=\"color: gray\">= <\/span><span style=\"color: red\">'BucketizerTargetDemoRecompiles'\r\n  <\/span><span style=\"color: gray\">AND <\/span>t<span style=\"color: gray\">.<\/span>target_name <span style=\"color: gray\">= <\/span><span style=\"color: red\">'asynchronous_bucketizer'<\/span><span style=\"color: gray\">) <\/span><span style=\"color: blue\">as <\/span>tab\r\n<span style=\"color: gray\">CROSS APPLY <\/span>target_data<span style=\"color: gray\">.<\/span>nodes<span style=\"color: gray\">(<\/span><span style=\"color: red\">'BucketizerTarget\/Slot'<\/span><span style=\"color: gray\">) <\/span><span style=\"color: blue\">as <\/span>q<span style=\"color: gray\">(<\/span>n<span style=\"color: gray\">)<\/span><\/pre>\n<p>  <a href=\"http:\/\/www.11011.net\/software\/vspaste\" mce_href=\"http:\/\/11011.net\/software\/vspaste\"><\/a><\/p><\/blockquote>\n<p>With the &lt;Slot&gt; nodes split, pulling the &lt;value&gt; node and attributes is very simple, and since we bucketed on database_id, we can use the DB_NAME() function in SQL to return the database name associated with the database_id in the &lt;value&gt; node.<\/p>\n<h2>Considerations for Usage<\/h2>\n<p>The bucketizer targets are great for simplifying analysis of Event data to determine who to best proceed with further troubleshooting.&#160; However, in SQL Server 2008, and 2008R2 a bug exists that causes incorrect output from the bucketizers when used to bucket on the wait_info event wait_type Data element.&#160; This was fixed in SQL Server 2008 Service Pack 2 (<a title=\"http:\/\/support.microsoft.com\/kb\/2285068\" href=\"https:\/\/support.microsoft.com\/en-us\/help\/2285068\/list-of-the-bugs-that-are-fixed-in-sql-server-2008-service-pack-2\" mce_href=\"http:\/\/support.microsoft.com\/kb\/2285068\">http:\/\/support.microsoft.com\/kb\/2285068<\/a>), and is not a problem in SQL Server Denali CTP1, but as of this writing has yet to be corrected in SQL Server 2008 R2 (at least the CU\u2019s I have tested, there may be a newer one that I have missed, but I didn\u2019t find one in a search).&#160; To demonstrate this problem the following Event Session can be used:<\/p>\n<blockquote>\n<pre class=\"code\"><span style=\"color: blue\">IF <\/span><span style=\"color: gray\">EXISTS(<\/span><span style=\"color: blue\">SELECT <\/span><span style=\"color: gray\">* <\/span><span style=\"color: blue\">FROM <\/span><span style=\"color: green\">sys<\/span><span style=\"color: gray\">.<\/span><span style=\"color: green\">server_event_sessions <\/span><span style=\"color: blue\">WHERE <\/span>name<span style=\"color: gray\">=<\/span><span style=\"color: red\">'BucketizerTargetDemoWaits'<\/span><span style=\"color: gray\">)\r\n    <\/span><span style=\"color: blue\">DROP EVENT SESSION <\/span>[BucketizerTargetDemoWaits] <span style=\"color: blue\">ON SERVER<\/span><span style=\"color: gray\">;\r\n<\/span><span style=\"color: blue\">CREATE EVENT SESSION <\/span>[BucketizerTargetDemoWaits]\r\n<span style=\"color: blue\">ON SERVER\r\nADD EVENT <\/span>sqlos<span style=\"color: gray\">.<\/span>wait_info\r\n<span style=\"color: gray\">(    <\/span><span style=\"color: blue\">ACTION <\/span><span style=\"color: gray\">(<\/span>sqlserver<span style=\"color: gray\">.<\/span>database_id<span style=\"color: gray\">)\r\n    <\/span><span style=\"color: blue\">WHERE <\/span><span style=\"color: gray\">(<\/span>duration <span style=\"color: gray\">&gt; <\/span>0<span style=\"color: gray\">)) \r\n<\/span><span style=\"color: blue\">ADD TARGET <\/span>package0<span style=\"color: gray\">.<\/span>asynchronous_bucketizer<span style=\"color: gray\">(\r\n     <\/span><span style=\"color: blue\">SET <\/span>filtering_event_name<span style=\"color: gray\">=<\/span><span style=\"color: red\">'sqlos.wait_info'<\/span><span style=\"color: gray\">, <\/span>source_type<span style=\"color: gray\">=<\/span>0<span style=\"color: gray\">, source=<\/span><span style=\"color: red\">'wait_type'<\/span><span style=\"color: gray\">)\r\n<\/span><span style=\"color: blue\">WITH <\/span><span style=\"color: gray\">(<\/span>MAX_DISPATCH_LATENCY <span style=\"color: gray\">= <\/span>5 SECONDS<span style=\"color: gray\">)\r\n<\/span><span style=\"color: blue\">GO\r\nALTER EVENT SESSION <\/span>[BucketizerTargetDemoWaits]\r\n<span style=\"color: blue\">ON SERVER\r\nSTATE<\/span><span style=\"color: gray\">=<\/span>START<\/pre>\n<p>  <a href=\"http:\/\/www.11011.net\/software\/vspaste\" mce_href=\"http:\/\/11011.net\/software\/vspaste\"><\/a><\/p><\/blockquote>\n<p>The above Event Session will return valid map_key values for the wait_types Map in sys.dm_xe_map_values on SQL Server 2008 Service Pack 2 and SQL Server Denali CTP1, but will have erroneous information in the &lt;value&gt; node on SQL Server 2008 RTM and SP1 and SQL Server 2008 R2.&#160; To query the bucketed waits from the target, use the following query:<\/p>\n<blockquote>\n<pre class=\"code\"><span style=\"color: blue\">SELECT \r\n    <\/span>mv<span style=\"color: gray\">.<\/span>map_value <span style=\"color: blue\">AS <\/span>WaitType<span style=\"color: gray\">,\r\n    <\/span>n<span style=\"color: gray\">.<\/span>value<span style=\"color: gray\">(<\/span><span style=\"color: red\">'(@count)[1]'<\/span><span style=\"color: gray\">, <\/span><span style=\"color: red\">'int'<\/span><span style=\"color: gray\">) <\/span><span style=\"color: blue\">AS <\/span>EventCount<span style=\"color: gray\">,\r\n    <\/span>n<span style=\"color: gray\">.<\/span>value<span style=\"color: gray\">(<\/span><span style=\"color: red\">'(@trunc)[1]'<\/span><span style=\"color: gray\">, <\/span><span style=\"color: red\">'int'<\/span><span style=\"color: gray\">) <\/span><span style=\"color: blue\">AS <\/span>EventsTrunc<span style=\"color: gray\">,\r\n    <\/span>n<span style=\"color: gray\">.<\/span>value<span style=\"color: gray\">(<\/span><span style=\"color: red\">'(value)[1]'<\/span><span style=\"color: gray\">, <\/span><span style=\"color: red\">'int'<\/span><span style=\"color: gray\">) <\/span><span style=\"color: blue\">AS <\/span>MapKey\r\n<span style=\"color: blue\">FROM\r\n<\/span><span style=\"color: gray\">(<\/span><span style=\"color: blue\">SELECT <\/span><span style=\"color: magenta\">CAST<\/span><span style=\"color: gray\">(<\/span>target_data <span style=\"color: blue\">as XML<\/span><span style=\"color: gray\">) <\/span>target_data\r\n<span style=\"color: blue\">FROM <\/span><span style=\"color: green\">sys<\/span><span style=\"color: gray\">.<\/span><span style=\"color: green\">dm_xe_sessions <\/span><span style=\"color: blue\">AS <\/span>s \r\n<span style=\"color: gray\">JOIN <\/span><span style=\"color: green\">sys<\/span><span style=\"color: gray\">.<\/span><span style=\"color: green\">dm_xe_session_targets <\/span>t\r\n    <span style=\"color: blue\">ON <\/span>s<span style=\"color: gray\">.<\/span><span style=\"color: blue\">address <\/span><span style=\"color: gray\">= <\/span>t<span style=\"color: gray\">.<\/span>event_session_address\r\n<span style=\"color: blue\">WHERE <\/span>s<span style=\"color: gray\">.<\/span>name <span style=\"color: gray\">= <\/span><span style=\"color: red\">'BucketizerTargetDemoWaits'\r\n  <\/span><span style=\"color: gray\">AND <\/span>t<span style=\"color: gray\">.<\/span>target_name <span style=\"color: gray\">= <\/span><span style=\"color: red\">'asynchronous_bucketizer'<\/span><span style=\"color: gray\">) <\/span><span style=\"color: blue\">as <\/span>tab\r\n<span style=\"color: gray\">CROSS APPLY <\/span>target_data<span style=\"color: gray\">.<\/span>nodes<span style=\"color: gray\">(<\/span><span style=\"color: red\">'BucketizerTarget\/Slot'<\/span><span style=\"color: gray\">) <\/span><span style=\"color: blue\">as <\/span>q<span style=\"color: gray\">(<\/span>n<span style=\"color: gray\">)\r\nJOIN <\/span><span style=\"color: green\">sys<\/span><span style=\"color: gray\">.<\/span><span style=\"color: green\">dm_xe_map_values <\/span><span style=\"color: blue\">as <\/span>mv\r\n    <span style=\"color: blue\">ON <\/span>mv<span style=\"color: gray\">.<\/span>map_key <span style=\"color: gray\">= <\/span>n<span style=\"color: gray\">.<\/span>value<span style=\"color: gray\">(<\/span><span style=\"color: red\">'(value)[1]'<\/span><span style=\"color: gray\">, <\/span><span style=\"color: red\">'int'<\/span><span style=\"color: gray\">)\r\n<\/span><span style=\"color: blue\">WHERE <\/span>mv<span style=\"color: gray\">.<\/span>name <span style=\"color: gray\">= <\/span><span style=\"color: red\">'wait_types'<\/span><\/pre>\n<p>  <a href=\"http:\/\/www.11011.net\/software\/vspaste\" mce_href=\"http:\/\/11011.net\/software\/vspaste\"><\/a><\/p><\/blockquote>\n<h2>What\u2019s next?<\/h2>\n<p>Well, at this point we are nearly half way through the Targets in Extended Events, and tomorrow we\u2019ll continue our investigation by looking at the synchronous_event_counter, which can be used to help determine the impact an Event Session may have without having to perform full Event collection.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Yesterday\u2019s post, Targets Week &#8211; asynchronous_file_target, looked at the asynchronous_file_target Target in Extended Events and how it outputs the raw Event data in an XML document.&#160; Continuing with Targets week today, we\u2019ll look at the bucketizer targets in Extended Events which can be used to group Events based on the Event data that is being [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23,38,45],"tags":[],"class_list":["post-557","post","type-post","status-publish","format-standard","hentry","category-extended-events","category-sql-server-2008","category-xevent-a-day-series"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>An XEvent a Day (7 of 31) - Targets Week - bucketizers - Jonathan Kehayias<\/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:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-7-of-31-targets-week-bucketizers\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"An XEvent a Day (7 of 31) - Targets Week - bucketizers - Jonathan Kehayias\" \/>\n<meta property=\"og:description\" content=\"Yesterday\u2019s post, Targets Week &#8211; asynchronous_file_target, looked at the asynchronous_file_target Target in Extended Events and how it outputs the raw Event data in an XML document.&#160; Continuing with Targets week today, we\u2019ll look at the bucketizer targets in Extended Events which can be used to group Events based on the Event data that is being [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-7-of-31-targets-week-bucketizers\/\" \/>\n<meta property=\"og:site_name\" content=\"Jonathan Kehayias\" \/>\n<meta property=\"article:published_time\" content=\"2010-12-07T22:49:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-04-13T19:49:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/WindowsLiveWriter\/AnXEventaDay7of31TargetsWeekbucketizers\/35001C2B\/image_thumb.png\" \/>\n<meta name=\"author\" content=\"Jonathan Kehayias\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jonathan Kehayias\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/an-xevent-a-day-7-of-31-targets-week-bucketizers\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/an-xevent-a-day-7-of-31-targets-week-bucketizers\\\/\"},\"author\":{\"name\":\"Jonathan Kehayias\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#\\\/schema\\\/person\\\/01c10d94f3648654ef706d5e6305f69c\"},\"headline\":\"An XEvent a Day (7 of 31) &#8211; Targets Week &#8211; bucketizers\",\"datePublished\":\"2010-12-07T22:49:00+00:00\",\"dateModified\":\"2017-04-13T19:49:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/an-xevent-a-day-7-of-31-targets-week-bucketizers\\\/\"},\"wordCount\":1368,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/an-xevent-a-day-7-of-31-targets-week-bucketizers\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/wp-content\\\/uploads\\\/WindowsLiveWriter\\\/AnXEventaDay7of31TargetsWeekbucketizers\\\/35001C2B\\\/image_thumb.png\",\"articleSection\":[\"Extended Events\",\"SQL Server 2008\",\"XEvent a Day Series\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/an-xevent-a-day-7-of-31-targets-week-bucketizers\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/an-xevent-a-day-7-of-31-targets-week-bucketizers\\\/\",\"url\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/an-xevent-a-day-7-of-31-targets-week-bucketizers\\\/\",\"name\":\"An XEvent a Day (7 of 31) - Targets Week - bucketizers - Jonathan Kehayias\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/an-xevent-a-day-7-of-31-targets-week-bucketizers\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/an-xevent-a-day-7-of-31-targets-week-bucketizers\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/wp-content\\\/uploads\\\/WindowsLiveWriter\\\/AnXEventaDay7of31TargetsWeekbucketizers\\\/35001C2B\\\/image_thumb.png\",\"datePublished\":\"2010-12-07T22:49:00+00:00\",\"dateModified\":\"2017-04-13T19:49:04+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#\\\/schema\\\/person\\\/01c10d94f3648654ef706d5e6305f69c\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/an-xevent-a-day-7-of-31-targets-week-bucketizers\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/an-xevent-a-day-7-of-31-targets-week-bucketizers\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/an-xevent-a-day-7-of-31-targets-week-bucketizers\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/wp-content\\\/uploads\\\/WindowsLiveWriter\\\/AnXEventaDay7of31TargetsWeekbucketizers\\\/35001C2B\\\/image_thumb.png\",\"contentUrl\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/wp-content\\\/uploads\\\/WindowsLiveWriter\\\/AnXEventaDay7of31TargetsWeekbucketizers\\\/35001C2B\\\/image_thumb.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/an-xevent-a-day-7-of-31-targets-week-bucketizers\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Extended Events\",\"item\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/category\\\/extended-events\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"An XEvent a Day (7 of 31) &#8211; Targets Week &#8211; bucketizers\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#website\",\"url\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/\",\"name\":\"Jonathan Kehayias - The Rambling DBA\",\"description\":\"The Rambling DBA\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#\\\/schema\\\/person\\\/01c10d94f3648654ef706d5e6305f69c\",\"name\":\"Jonathan Kehayias\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g\",\"caption\":\"Jonathan Kehayias\"},\"sameAs\":[\"http:\\\/\\\/3.209.169.194\\\/blogs\\\/jonathan\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"An XEvent a Day (7 of 31) - Targets Week - bucketizers - Jonathan Kehayias","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:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-7-of-31-targets-week-bucketizers\/","og_locale":"en_US","og_type":"article","og_title":"An XEvent a Day (7 of 31) - Targets Week - bucketizers - Jonathan Kehayias","og_description":"Yesterday\u2019s post, Targets Week &#8211; asynchronous_file_target, looked at the asynchronous_file_target Target in Extended Events and how it outputs the raw Event data in an XML document.&#160; Continuing with Targets week today, we\u2019ll look at the bucketizer targets in Extended Events which can be used to group Events based on the Event data that is being [&hellip;]","og_url":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-7-of-31-targets-week-bucketizers\/","og_site_name":"Jonathan Kehayias","article_published_time":"2010-12-07T22:49:00+00:00","article_modified_time":"2017-04-13T19:49:04+00:00","og_image":[{"url":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/WindowsLiveWriter\/AnXEventaDay7of31TargetsWeekbucketizers\/35001C2B\/image_thumb.png","type":"","width":"","height":""}],"author":"Jonathan Kehayias","twitter_misc":{"Written by":"Jonathan Kehayias","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-7-of-31-targets-week-bucketizers\/#article","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-7-of-31-targets-week-bucketizers\/"},"author":{"name":"Jonathan Kehayias","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#\/schema\/person\/01c10d94f3648654ef706d5e6305f69c"},"headline":"An XEvent a Day (7 of 31) &#8211; Targets Week &#8211; bucketizers","datePublished":"2010-12-07T22:49:00+00:00","dateModified":"2017-04-13T19:49:04+00:00","mainEntityOfPage":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-7-of-31-targets-week-bucketizers\/"},"wordCount":1368,"commentCount":0,"image":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-7-of-31-targets-week-bucketizers\/#primaryimage"},"thumbnailUrl":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/WindowsLiveWriter\/AnXEventaDay7of31TargetsWeekbucketizers\/35001C2B\/image_thumb.png","articleSection":["Extended Events","SQL Server 2008","XEvent a Day Series"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-7-of-31-targets-week-bucketizers\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-7-of-31-targets-week-bucketizers\/","url":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-7-of-31-targets-week-bucketizers\/","name":"An XEvent a Day (7 of 31) - Targets Week - bucketizers - Jonathan Kehayias","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-7-of-31-targets-week-bucketizers\/#primaryimage"},"image":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-7-of-31-targets-week-bucketizers\/#primaryimage"},"thumbnailUrl":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/WindowsLiveWriter\/AnXEventaDay7of31TargetsWeekbucketizers\/35001C2B\/image_thumb.png","datePublished":"2010-12-07T22:49:00+00:00","dateModified":"2017-04-13T19:49:04+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#\/schema\/person\/01c10d94f3648654ef706d5e6305f69c"},"breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-7-of-31-targets-week-bucketizers\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-7-of-31-targets-week-bucketizers\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-7-of-31-targets-week-bucketizers\/#primaryimage","url":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/WindowsLiveWriter\/AnXEventaDay7of31TargetsWeekbucketizers\/35001C2B\/image_thumb.png","contentUrl":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/WindowsLiveWriter\/AnXEventaDay7of31TargetsWeekbucketizers\/35001C2B\/image_thumb.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-7-of-31-targets-week-bucketizers\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/"},{"@type":"ListItem","position":2,"name":"Extended Events","item":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/category\/extended-events\/"},{"@type":"ListItem","position":3,"name":"An XEvent a Day (7 of 31) &#8211; Targets Week &#8211; bucketizers"}]},{"@type":"WebSite","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#website","url":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/","name":"Jonathan Kehayias - The Rambling DBA","description":"The Rambling DBA","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#\/schema\/person\/01c10d94f3648654ef706d5e6305f69c","name":"Jonathan Kehayias","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g","caption":"Jonathan Kehayias"},"sameAs":["http:\/\/3.209.169.194\/blogs\/jonathan"]}]}},"_links":{"self":[{"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/posts\/557","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/comments?post=557"}],"version-history":[{"count":0,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/posts\/557\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/media?parent=557"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/categories?post=557"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/tags?post=557"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}