Skip to content

Instantly share code, notes, and snippets.

@cbaragao
Last active October 28, 2023 14:50
Show Gist options
  • Save cbaragao/66a59b18ceabbf50178e37d20a054d45 to your computer and use it in GitHub Desktop.
Save cbaragao/66a59b18ceabbf50178e37d20a054d45 to your computer and use it in GitHub Desktop.
DAX Hex Map Example
SVG :=
// If a color is in the dataset, make it red
VAR _selected_color = "#FF0000"
// If it is not, make it gray
VAR _not_selected_color = "#A5A5A5"
//Set up the SVG header
VAR _header = "data:image/svg+xml;utf8,<svg width=""1280"" height=""720"" xmlns=""http://www.w3.org/2000/svg"" xmlns:xlink=""http://www.w3.org/1999/xlink"" overflow=""hidden"">
<defs>
<clipPath id=""clip0"">
<rect x=""0"" y=""0"" width=""1280"" height=""720""/>
</clipPath>
</defs>
<g clip-path=""url(#clip0)"">
<rect x=""0"" y=""0"" width=""1280"" height=""720"" fill=""#FFFFFF""/>"
// Set up the SVG footer
VAR _footer = "</g></svg>"
// Create a dummy table of states to test with
VAR _data = { ( "RI" ), ( "WY" ), ( "AS" ) }
// Set up the body as a table.
VAR _body = {
( "AK", "<path d=""M204.5 64 238 80.75 238 114.25 204.5 131 171 114.25 171 80.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(192.711 104)"">AK</text>" ),
( "WA", "<path d=""M311.5 183 345 199.75 345 233.25 311.5 250 278 233.25 278 199.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(296.235 223)"">WA</text>" ),
( "MT", "<path d=""M382.5 183 416 199.75 416 233.25 382.5 250 349 233.25 349 199.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(368.441 223)"">MT</text>" ),
( "ND", "<path d=""M454 183 488 199.75 488 233.25 454 250 420 233.25 420 199.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(440.464 223)"">ND</text>" ),
( "MN", "<path d=""M525.5 183 559 199.75 559 233.25 525.5 250 492 233.25 492 199.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(509.237 223)"">MN</text>" ),
( "ID", "<path d=""M347.5 237 381 253.75 381 287.25 347.5 304 314 287.25 314 253.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(337.901 278)"">ID</text>" ),
( "WY", "<path d=""M418.5 237 452 253.75 452 287.25 418.5 304 385 287.25 385 253.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(403.758 278)"">WY</text>" ),
( "SD", "<path d=""M489.5 237 523 253.75 523 287.25 489.5 304 456 287.25 456 253.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(478.198 278)"">SD</text>" ),
( "IA", "<path d=""M561 237 595 253.75 595 287.25 561 304 527 287.25 527 253.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(552.137 278)"">IA</text>" ),
( "IL", "<path d=""M630.5 237 664 253.75 664 287.25 630.5 304 597 287.25 597 253.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(623.428 278)"">IL</text>" ),
( "IN", "<path d=""M701.5 237 735 253.75 735 287.25 701.5 304 668 287.25 668 253.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(692.284 278)"">IN</text>" ),
( "OH", "<path d=""M773.5 237 807 253.75 807 287.25 773.5 304 740 287.25 740 253.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(759.391 278)"">OH</text>" ),
( "PA", "<path d=""M844.5 237 878 253.75 878 287.25 844.5 304 811 287.25 811 253.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(833.533 278)"">PA</text>" ),
( "WI", "<path d=""M597 183 631 199.75 631 233.25 597 250 563 233.25 563 199.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(584.828 223)"">WI</text>" ),
( "MI", "<path d=""M738 183 772 199.75 772 233.25 738 250 704 233.25 704 199.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(726.337 223)"">MI</text>" ),
( "NJ", "<path d=""M915.5 237 949 253.75 949 287.25 915.5 304 882 287.25 882 253.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(905.353 278)"">NJ</text>" ),
( "CT", "<path d=""M987 237 1021 253.75 1021 287.25 987 304 953 287.25 953 253.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(976.073 278)"">CT</text>" ),
( "NY", "<path d=""M880.5 183 914 199.75 914 233.25 880.5 250 847 233.25 847 199.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(868.064 223)"">NY</text>" ),
( "MA", "<path d=""M951.5 183 985 199.75 985 233.25 951.5 250 918 233.25 918 199.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(936.169 223)"">MA</text>" ),
( "RI", "<path d=""M1022.5 183 1056 199.75 1056 233.25 1022.5 250 989 233.25 989 199.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(1014.19 223)"">RI</text>" ),
( "VT", "<path d=""M916.5 128 950 144.75 950 179.25 916.5 196 883 179.25 883 144.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(905.6 169)"">VT</text>" ),
( "NH", "<path d=""M988.5 128 1022 144.75 1022 179.25 988.5 196 955 179.25 955 144.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(974.54 169)"">NH</text>" ),
( "ME", "<path d=""M1024.5 75 1058 91.75 1058 125.25 1024.5 142 991 125.25 991 91.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(1010.2 116)"">ME</text>" ),
( "OR", "<path d=""M311.5 291 345 307.75 345 341.25 311.5 358 278 341.25 278 307.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(298.501 332)"">OR</text>" ),
( "NV", "<path d=""M382.5 291 416 307.75 416 341.25 382.5 358 349 341.25 349 307.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(369.691 332)"">NV</text>" ),
( "CO", "<path d=""M454 291 488 307.75 488 341.25 454 358 420 341.25 420 307.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(441.307 332)"">CO</text>" ),
( "NE", "<path d=""M525.5 291 559 307.75 559 341.25 525.5 358 492 341.25 492 307.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(513.07 332)"">NE</text>" ),
( "MO", "<path d=""M594.5 291 628 307.75 628 341.25 594.5 358 561 341.25 561 307.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(578.695 332)"">MO</text>" ),
( "KY", "<path d=""M666.5 291 700 307.75 700 341.25 666.5 358 633 341.25 633 307.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(655.384 332)"">KY</text>" ),
( "WV", "<path d=""M737.5 291 771 307.75 771 341.25 737.5 358 704 341.25 704 307.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(721.823 332)"">WV</text>" ),
( "MD", "<path d=""M808.5 291 842 307.75 842 341.25 808.5 358 775 341.25 775 307.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(793.013 332)"">MD</text>" ),
( "DE", "<path d=""M880 291 914 307.75 914 341.25 880 358 846 341.25 846 307.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(868.12 332)"">DE</text>" ),
( "CA", "<path d=""M347.5 345 381 361.75 381 395.25 347.5 412 314 395.25 314 361.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(335.318 386)"">CA</text>" ),
( "AZ", "<path d=""M418.5 345 452 361.75 452 395.25 418.5 412 385 395.25 385 361.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(407.258 386)"">AZ</text>" ),
( "UT", "<path d=""M489.5 345 523 361.75 523 395.25 489.5 412 456 395.25 456 361.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(477.697 386)"">UT</text>" ),
( "KS", "<path d=""M561 345 595 361.75 595 395.25 561 412 527 395.25 527 361.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(550.563 386)"">KS</text>" ),
( "AR", "<path d=""M630.5 345 664 361.75 664 395.25 630.5 412 597 395.25 597 361.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(618.594 386)"">AR</text>" ),
( "TN", "<path d=""M701.5 345 735 361.75 735 395.25 701.5 412 668 395.25 668 361.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(689.784 386)"">TN</text>" ),
( "VA", "<path d=""M773.5 345 807 361.75 807 395.25 773.5 412 740 395.25 740 361.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(761.391 386)"">VA</text>" ),
( "NC", "<path d=""M844.5 345 878 361.75 878 395.25 844.5 412 811 395.25 811 361.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(831.83 386)"">NC</text>" ),
( "NM", "<path d=""M453 399 487 415.75 487 449.25 453 466 419 449.25 419 415.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(436.994 440)"">NM</text>" ),
( "OK", "<path d=""M524.5 399 558 415.75 558 449.25 524.5 466 491 449.25 491 415.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(511.6 440)"">OK</text>" ),
( "LA", "<path d=""M595.5 399 629 415.75 629 449.25 595.5 466 562 449.25 562 415.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(584.873 440)"">LA</text>" ),
( "MS", "<path d=""M666.5 399 700 415.75 700 449.25 666.5 466 633 449.25 633 415.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(652.813 440)"">MS</text>" ),
( "AL", "<path d=""M736.5 399 770 415.75 770 449.25 736.5 466 703 449.25 703 415.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(725.77 440)"">AL</text>" ),
( "SC", "<path d=""M807.5 399 841 415.75 841 449.25 807.5 466 774 449.25 774 415.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(797.127 440)"">SC</text>" ),
( "TX", "<path d=""M489 453 523 469.75 523 503.25 489 520 455 503.25 455 469.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(478.352 494)"">TX</text>" ),
( "GA", "<path d=""M773.5 453 807 469.75 807 503.25 773.5 520 740 503.25 740 469.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(760.225 494)"">GA</text>" ),
( "FL", "<path d=""M807.5 506 841 522.75 841 556.25 807.5 573 774 556.25 774 522.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(798.294 547)"">FL</text>" ),
( "HI", "<path d=""M204.5 506 238 522.75 238 556.25 204.5 573 171 556.25 171 522.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(195.127 547)"">HI</text>" ),
( "DC", "<path d=""M951.5 291 985 307.75 985 341.25 951.5 358 918 341.25 918 307.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(938.975 332)"">DC</text>" ),
( "PR", "<path d=""M1041.5 506 1075 522.75 1075 556.25 1041.5 573 1008 556.25 1008 522.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(1030.46 547)"">PR</text>" ),
( "VI", "<path d=""M1113.5 506 1147 522.75 1147 556.25 1113.5 573 1080 556.25 1080 522.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(1104.93 547)"">VI</text>" ),
( "AS", "<path d=""M137.5 619 171 635.75 171 669.25 137.5 686 104 669.25 104 635.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(126.177 659)"">AS</text>" ),
( "GU", "<path d=""M64.5 618 98 634.75 98 668.25 64.5 685 31 668.25 31 634.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""20"" transform=""translate(50.8496 659)"">GU</text>" ),
( "NMI", "<path d=""M101 565 135 581.75 135 615.25 101 632 67 615.25 67 581.75Z"" fill=""", """ fill-rule=""evenodd""/>", "<text fill=""#FFFFFF"" font-family=""Calibri,Calibri_MSFontService,sans-serif"" font-weight=""400"" font-size=""19"" transform=""translate(84.6439 604)"">NMI</text>" )
}
// Add a conditional column that picks the color if the state is listed in the test table
VAR _add =
ADDCOLUMNS (
_body,
"color", IF ( [Value1] IN _data, _selected_color, _not_selected_color )
)
// Concat the body table
VAR _concat =
CONCATENATEX ( _add, [Value2] & [color] & [Value3] & [Value4], " " )
// Concat all header, body, and footer
VAR _output = _header & _concat & _footer
RETURN
_output
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment