Missed the Q4 Fall Release Product Update? Watch the on-demand webinar for more info on the latest in Designer 24.2, Auto Insights Magic Reports, and more!
Free Trial

Alteryx Designer Desktop Ideas

Share your Designer Desktop product ideas - we're listening!
Submitting an Idea?

Be sure to review our Idea Submission Guidelines for more information!

Submission Guidelines

Featured Ideas

When developing in Python using custom objects - you often use print( object) or str(object) to see what's in this object quickly.

For example 

myDictionary = {
'CarType': 'Ford',
'Cost': 20000}

this defines a dictionary.   If I want to quickly look into these to see what's there I can use:

 

print(myDictionary)

# gives {'Cost': 20000, 'CarType': 'Ford'}

str(myDictionary) 

"{'Cost': 20000, 'CarType': 'Ford'}"

 

This is incredibly useful for debugging and to understand how these custom objects / classes work.

 

Please could you add an overload to the str() method to allow this kind of simple debugging and understanding for all the classes used in the Alteryx Python SDK (https://help.alteryx.com/20193/developer-help/sdks/build-custom-tools/python-engine-sdk/classes)

 

For example:

str(record_info_in) which is of type <class 'AlteryxPythonSDK.RecordInfo'>) gives you <AlteryxPythonSDK.RecordInfo object at 0x000001A2C48C3190> which is not very helpful.

Much more useful would be to flatten this into a string format or dictionary so that users can see what's in the RecordInfo object that they're working with to make delivery and debugging easier.

 

 

cc: @Ozzie @BlytheE 

 

 

 

 

In the designer - when you attempt to open a canvas from your company server - you're given a search screen to find your canvas.

 

This search sometimes does partial string match and sometimes not - this inconsistency is confusing (full worked up solution in the screenshots below).

For example - if you search for the word "full" it will bring back "main - full download" but will not bring back "main - checkFullDownload".

 

Please can you change this search process to work on any substring of the canvas name - that is the intuitive behavior that users would expect.

 

Thank you.

 

I should be able to find this one if I use the word "Full" right?I should be able to find this one if I use the word "Full" right?Nope - Full only returns canvasses where Full is at the beginning of the name; or after some whitespaceNope - Full only returns canvasses where Full is at the beginning of the name; or after some whitespaceIt would be better if this worked with any substringIt would be better if this worked with any substring

When developing HTML GUI for an alteryx tool - it has to be done in hand-code.

 

There are 2 main challenges here:

a) it is not approachable for new folk.   If we want the HTML SDK to be adopted more broadly, then it needs to be a graded learning curve where people without coding experience can use it and grow in confidence

b) it's not efficient.   the only way to know if you've done something right or wrong is to type it up in notepad, and then try it in Alteryx and see what breaks.

 

Could we instead move to an IDE type approach like Visual studio (screenshot below)?

 

Here:

  • the user can drag & drop tools from the toolbox (left)
  • position them visually in the design surface (center)
  • while still having the ability to set custom properties or behaviours (right)
  • and jump straight into code if you're comfortable (bottom)

And when you're ready to test it, you hit "start", and any errors or issues are reported at the bottom of the screen.

cc: @BlytheE 

 

IDE type experience with Alteryx SDK.jpg

 

My idea is to have the AlteryxEngineCMD.exe to run a workflow as part of the standard Alteryx license.

 

Use case - be able to run Alteryx from the command line without the need to buy the entire Scheduler package (at $6,500/seat).

 

I understand why certain features are add on, but the ability to run AlteryxEngineCMD.exe (I feel) should be part of  the standard license which is already $5K+. For those who only need to be able to run a command line execution of a workflow $6.5K is a lot of money!

The reporting tools do not currently support HTML structured or unstructured lists https://www.w3schools.com/tags/tag_ul.asp

All vertical combination creates tables which group the lines together.    Even if you manually create this - you get an error saying that ul (or ol or il) are not supported in composer

 

UL is not supported.png

 

This creates a challenge in 2 ways:

a) When creating lists in reporting outputs - you lose the functionality of structured lists (numbering with letters; numbers etc)

b) additionally - selecting the text in tables behaves differently than selecting data that is created in lists.

 

Please could you add the ability to create lists in addition to tables in the reporting tools by supporting the ol; ul; and il tags?

NOTE: this could initially be done just by supporting the tags; and then later this could be a summarize option on the summarize tool; and a bullet option in the text tool.

 

Summarize using tablesSummarize using tablesdesired: summarise using listsdesired: summarise using listsList rendered with the list tagsList rendered with the list tags

 

 

 

 

 

Give us the ability to connect a control parameter to an interface tool so that I can change interface elements based on previously entered data when chaining analytic apps together.

 

This would enable us to:

- have dynamic text for a radio button/checkbox.

- have dynamic text for a dropdown box prompt or a listbox prompt.

- pre-populate a text box based on inputs from a previous selection

- change the min/max and default values on numeric up down input

- default base map, zoom level, reference layer, draw properties

- select the default selected date on a date box as well as changing the prompt for a date box

- change the default file types for a file browse tool

At the moment one of the Union Tool errors reads: "The field "abc" is not present in all inputs".

 

It would be useful if the tool said "The field "abc" is not present in Input(s) #x,y..."

 

If there are a lot of inputs on the tool it can take a while to find which input is missing the field.

On the RedShift Bulk Loader add support for Redshift options:

 

http://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-conversion.html

 

  • TRUNCATECOLUMNS (automatically truncates any fields to the defined in the table)
  • IGNOREBLANKLINES
  • FILLRECORD
  • TIMEFORMAT
  • TRIMBLANKS
  • ENCODING
  • EMPTYASNULL
  • DATEFORMAT

...

Can Alteryx create a native connector to connect to SSAS TABULAR Cubes.

Given redshift prefers accepting many small files for bulk loading into redshift, it would be good to be able to have a max record limit within the s3 upload tool (similar to functionality for s3 download)

 

The other functionality that is useful for the s3 upload tool is ability to append file names based on datetimestamp_001, 002, 003 etc similar to current output tool

Hi,

 

It'd be great to have a specific connector for Hubspot. It' a marketing automation Platform such as Marketo.

 

Thanks.

As well as using keyboard shortcuts, many of us are using a mouse / keyboard with program specific assignable shortcut buttons. It is a serious boost to productivity. The ability to instantly enable / disable would be a great tool large complex workflows. In general, it would be great to expand the keyboard shortcuts to offer more Alteryx specific advanced functions.

It would be incredible helpful if Alteryx canvases auto-populated some metadata about each canvas to track its origination and updates.

 

The metadata fields I'm specifically thinking about are:

-Author

-Date Created

-Date Last Updated

When I put a map snippet into a report, there is no border. Therefore, road segments just terminate into whitespace.

 

Please add an option to create a border around the map snippet.Map With No BorderMap With No Border

 

 

Map With A BorderMap With A Border

 

 

 

 

 

 

Similar to how there is a functionality to use pip through the ayxinstallPackages, there needs to be a way to upgrade python itself. There are important packages such as keras that have errors in Python 3.6 that are not present when used with 3.7 so it should really be up to the user as to which python package to use. Another solution could also be to allow the user to point to their own local installation of Python so that the user can maintain consistency between their own local site-packages and the one that Alteryx has.

In the output window, numbers should always be displayed right aligned by default. Also the font should be fixed width type so an 8 and 1 both take equal width and we dont see numbers as below.

11111111

88888888

 

1. It instantly tells the user that its data type is numeric without having to check metadata.

2. Readability of the values is greatly increased.

I think it would be great to add metadata to a yxdb. For example, I was back tracking and trying to figure out which module/app I used to create an old yxdb. Now I use Notepad++ and do a "Find In Files" Search. Wouldn't it be great it the module path would be available when you look at the properties of a yxdb in Alteryx?

Would be nice if could use something like $Field rather than repeating the field name in the Condition and Loop expression within the Generate Rows tool

 

 

Hi Folks

 

So have been using the fuzzy match function quite a bit of recently. Love the tool, however it could benefit form being able to wire in a list of 'Don't generate' keywords. 

At the moment we can enter them manually, however where for example i might want to exclude city or area names etc... from the do not generate list this becomes quite a tedious manual entry task, so being able to load in keyword data from pre-existing lists etc.. would be a time saver. 

 

Cheers

 

Gavin

 

 

How about turning this;

SELECT * 
FROM Employee
ORDER BY First_name ASC

into this automatically

Picture1.png

and a more complex one

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID; 

into this

Picture2.png

basically it's a parser;

 

1) First check if it's a MS SQL, PL/SQL or T/SQL

2) Then figure out join relationships

3) Convert each subset SQL into function nodes

4) Convert function nodes to Alteryx yxmd (xml)

 

Creates the following for the first workflow

<?xml version="1.0"?>
<AlteryxDocument yxmdVer="10.5">
  <Nodes>
    <Node ToolID="1">
      <GuiSettings Plugin="AlteryxBasePluginsGui.AlteryxSelect.AlteryxSelect">
        <Position x="174" y="90" />
      </GuiSettings>
      <Properties>
        <Configuration>
          <OrderChanged value="False" />
          <SelectFields>
            <SelectField field="*Unknown" selected="True" />
          </SelectFields>
        </Configuration>
        <Annotation DisplayMode="0">
          <Name />
          <DefaultAnnotationText />
          <Left value="False" />
        </Annotation>
      </Properties>
      <EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxSelect" />
    </Node>
    <Node ToolID="2">
      <GuiSettings Plugin="AlteryxBasePluginsGui.Sort.Sort">
        <Position x="246" y="90" />
      </GuiSettings>
      <Properties>
        <Configuration>
          <SortInfo locale="0">
            <Field field="FIRST_NAME" order="Ascending" />
          </SortInfo>
        </Configuration>
        <Annotation DisplayMode="0">
          <Name />
          <DefaultAnnotationText>FIRST_NAME - Ascending</DefaultAnnotationText>
          <Left value="False" />
        </Annotation>
      </Properties>
      <EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxSort" />
    </Node>
    <Node ToolID="4">
      <GuiSettings Plugin="AlteryxBasePluginsGui.TextInput.TextInput">
        <Position x="90" y="90" />
      </GuiSettings>
      <Properties>
        <Configuration>
          <NumRows value="0" />
          <Fields>
            <Field name="FIRST_NAME" />
          </Fields>
          <Data />
        </Configuration>
        <Annotation DisplayMode="0">
          <Name />
          <DefaultAnnotationText />
          <Left value="False" />
        </Annotation>
      </Properties>
      <EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxTextInput" />
    </Node>
    <Node ToolID="13">
      <GuiSettings Plugin="AlteryxBasePluginsGui.BrowseV2.BrowseV2">
        <Position x="330" y="90" />
      </GuiSettings>
      <Properties>
        <Configuration>
          <Layout>
            <View1>
              <Hints>
                <Table />
              </Hints>
            </View1>
          </Layout>
        </Configuration>
        <Annotation DisplayMode="0">
          <Name />
          <DefaultAnnotationText />
          <Left value="False" />
        </Annotation>
      </Properties>
      <EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxBrowseV2" />
    </Node>
  </Nodes>
  <Connections>
    <Connection>
      <Origin ToolID="1" Connection="Output" />
      <Destination ToolID="2" Connection="Input" />
    </Connection>
    <Connection>
      <Origin ToolID="2" Connection="Output" />
      <Destination ToolID="13" Connection="Input" />
    </Connection>
    <Connection>
      <Origin ToolID="4" Connection="Output" />
      <Destination ToolID="1" Connection="Input" />
    </Connection>
  </Connections>
  <Properties>
    <Memory default="True" />
    <GlobalRecordLimit value="0" />
    <TempFiles default="True" />
    <Annotation on="True" includeToolName="False" />
    <ConvErrorLimit value="10" />
    <ConvErrorLimit_Stop value="False" />
    <CancelOnError value="False" />
    <DisableBrowse value="False" />
    <EnablePerformanceProfiling value="False" />
    <DisableAllOutput value="False" />
    <ShowAllMacroMessages value="False" />
    <ShowConnectionStatusIsOn value="True" />
    <ShowConnectionStatusOnlyWhenRunning value="True" />
    <ZoomLevel value="0" />
    <LayoutType>Horizontal</LayoutType>
    <MetaInfo>
      <NameIsFileName value="True" />
      <Name>New Workflow1</Name>
      <Description />
      <RootToolName />
      <ToolVersion />
      <ToolInDb value="False" />
      <CategoryName />
      <SearchTags />
      <Author />
      <Company />
      <Copyright />
      <DescriptionLink actual="" displayed="" />
    </MetaInfo>
    <Events>
      <Enabled value="True" />
    </Events>
  </Properties>
</AlteryxDocument>

and for the second example with joins...

<?xml version="1.0"?>
<AlteryxDocument yxmdVer="10.5">
  <Nodes>
    <Node ToolID="1">
      <GuiSettings Plugin="AlteryxBasePluginsGui.AlteryxSelect.AlteryxSelect">
        <Position x="126" y="54" />
      </GuiSettings>
      <Properties>
        <Configuration>
          <OrderChanged value="False" />
          <SelectFields>
            <SelectField field="*Unknown" selected="True" />
          </SelectFields>
        </Configuration>
        <Annotation DisplayMode="0">
          <Name />
          <DefaultAnnotationText />
          <Left value="False" />
        </Annotation>
      </Properties>
      <EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxSelect" />
    </Node>
    <Node ToolID="2">
      <GuiSettings Plugin="AlteryxBasePluginsGui.TextInput.TextInput">
        <Position x="54" y="54" />
      </GuiSettings>
      <Properties>
        <Configuration>
          <NumRows value="0" />
          <Fields>
            <Field name="CustomerID" />
            <Field name="OrderID" />
            <Field name="CustomerName" />
            <Field name="OrderDate" />
          </Fields>
          <Data />
        </Configuration>
        <Annotation DisplayMode="0">
          <Name />
          <DefaultAnnotationText />
          <Left value="False" />
        </Annotation>
      </Properties>
      <EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxTextInput" />
    </Node>
    <Node ToolID="3">
      <GuiSettings Plugin="AlteryxBasePluginsGui.AlteryxSelect.AlteryxSelect">
        <Position x="126" y="198" />
      </GuiSettings>
      <Properties>
        <Configuration>
          <OrderChanged value="False" />
          <SelectFields>
            <SelectField field="*Unknown" selected="True" />
          </SelectFields>
        </Configuration>
        <Annotation DisplayMode="0">
          <Name />
          <DefaultAnnotationText />
          <Left value="False" />
        </Annotation>
      </Properties>
      <EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxSelect" />
    </Node>
    <Node ToolID="4">
      <GuiSettings Plugin="AlteryxBasePluginsGui.TextInput.TextInput">
        <Position x="54" y="198" />
      </GuiSettings>
      <Properties>
        <Configuration>
          <NumRows value="0" />
          <Fields>
            <Field name="CustomerID" />
          </Fields>
          <Data />
        </Configuration>
        <Annotation DisplayMode="0">
          <Name />
          <DefaultAnnotationText />
          <Left value="False" />
        </Annotation>
      </Properties>
      <EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxTextInput" />
    </Node>
    <Node ToolID="5">
      <GuiSettings Plugin="AlteryxBasePluginsGui.Join.Join">
        <Position x="222" y="126" />
      </GuiSettings>
      <Properties>
        <Configuration joinByRecordPos="False">
          <JoinInfo connection="Left">
            <Field field="CustomerID" />
          </JoinInfo>
          <JoinInfo connection="Right">
            <Field field="CustomerID" />
          </JoinInfo>
          <SelectConfiguration>
            <Configuration outputConnection="Join">
              <OrderChanged value="False" />
              <SelectFields>
                <SelectField field="Right_CustomerID" selected="True" rename="Right_CustomerID" />
                <SelectField field="*Unknown" selected="True" />
              </SelectFields>
            </Configuration>
          </SelectConfiguration>
        </Configuration>
        <Annotation DisplayMode="0">
          <Name />
          <DefaultAnnotationText />
          <Left value="False" />
        </Annotation>
      </Properties>
      <EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxJoin" />
    </Node>
    <Node ToolID="6">
      <GuiSettings Plugin="AlteryxBasePluginsGui.BrowseV2.BrowseV2">
        <Position x="294" y="126" />
      </GuiSettings>
      <Properties>
        <Configuration>
          <Layout>
            <View1>
              <Hints>
                <Table />
              </Hints>
            </View1>
          </Layout>
        </Configuration>
        <Annotation DisplayMode="0">
          <Name />
          <DefaultAnnotationText />
          <Left value="False" />
        </Annotation>
      </Properties>
      <EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxBrowseV2" />
    </Node>
  </Nodes>
  <Connections>
    <Connection>
      <Origin ToolID="1" Connection="Output" />
      <Destination ToolID="5" Connection="Left" />
    </Connection>
    <Connection>
      <Origin ToolID="3" Connection="Output" />
      <Destination ToolID="5" Connection="Right" />
    </Connection>
    <Connection>
      <Origin ToolID="2" Connection="Output" />
      <Destination ToolID="1" Connection="Input" />
    </Connection>
    <Connection>
      <Origin ToolID="4" Connection="Output" />
      <Destination ToolID="3" Connection="Input" />
    </Connection>
    <Connection>
      <Origin ToolID="5" Connection="Join" />
      <Destination ToolID="6" Connection="Input" />
    </Connection>
  </Connections>
  <Properties>
    <Memory default="True" />
    <GlobalRecordLimit value="0" />
    <TempFiles default="True" />
    <Annotation on="True" includeToolName="False" />
    <ConvErrorLimit value="10" />
    <ConvErrorLimit_Stop value="False" />
    <CancelOnError value="False" />
    <DisableBrowse value="False" />
    <EnablePerformanceProfiling value="False" />
    <DisableAllOutput value="False" />
    <ShowAllMacroMessages value="False" />
    <ShowConnectionStatusIsOn value="True" />
    <ShowConnectionStatusOnlyWhenRunning value="True" />
    <ZoomLevel value="0" />
    <LayoutType>Horizontal</LayoutType>
    <MetaInfo>
      <NameIsFileName value="True" />
      <Name>New Workflow1</Name>
      <Description />
      <RootToolName />
      <ToolVersion />
      <ToolInDb value="False" />
      <CategoryName />
      <SearchTags />
      <Author />
      <Company />
      <Copyright />
      <DescriptionLink actual="" displayed="" />
    </MetaInfo>
    <Events>
      <Enabled value="True" />
    </Events>
  </Properties>
</AlteryxDocument>
Top Liked Authors