Be sure to review our Idea Submission Guidelines for more information!
Submission GuidelinesHello,
After used the new "Image Recognition Tool" a few days, I think you could improve it :
> by adding the dimensional constraints in front of each of the pre-trained models,
> by adding a true tool to divide the training data correctly (in order to have an equivalent number of images for each of the labels)
> at least, allow the tool to use black & white images (I wanted to test it on the MNIST, but the tool tells me that it necessarily needs RGB images) ?
Question : do you in the future allow the user to choose between CPU or GPU usage ?
In any case, thank you again for this new tool, it is certainly perfectible, but very simple to use, and I sincerely think that it will allow a greater number of people to understand the many use cases made possible thanks to image recognition.
Thank you again
Kévin VANCAPPEL (France ;-))
Thank you again.
Kévin VANCAPPEL
Hi there
My idea is to have an option to copy and paste a tools configuration to a different tool of the same type somewhere else on the canvas.
Example:
Say I have four summarise tools dealing with four different data streams, I envision a 'Copy Tool Configuration' option after right clicking on a tool and then a 'Paste Tool Configuration" which can be applied across the multiple instances of the summarise tool by overwriting. This would preserve the tools anchors incoming and outgoing connections.
Benefit:
This would increase the speed of developing workflows. Naturally this would be significantly quicker than copy and pasting tools, and then re-wiring anchors. Additionally, this would potentially reduce human error when iteratively developing workflows.
Regards - Rhys Cooper
Dear Alteryx,
One day, when I pass from this life to the next I'll get to see and know everything! Loving data, one of my first forays into the infinite knowledge pool will be to quantify the time lost/mistakes made because excel defaults big numbers like customer identifiers to scientific notation. My second foray will be to discover the time lost/mistakes made due to
Unexpanded Mouse Wheel Drop Down Interaction
Riveting right? What is this? It's super simple, someone (not just Alteryx) had the brilliant idea that the mouse wheel should not just be used to scroll the page, but drop down menus as well. What happens when both the page and the drop down menu exist, sometimes disaster but more often annoyance. Case in point, configuring an input tool.
See the two scenarios below, my input is perfectly configured, I'll just flick my scroll wheel to see what row I decided to start loading from
Happy Path, cursor not over drop down = I'll scroll down for you ↓
Sad Path, cursor happened to hover the dropdown sometimes on the way down from a legit scroll = what you didn't want Microsoft Excel Legacy format?
And you better believe Alteryx LOVES having it's input file format value changed in rapid succession., hold please...
Scroll wheels should scroll, but not for drop down menus unless the dropdown has been expanded.
Oh and +1 for mouse horizontal scrolling support please.
Hi everyone! I have been trying to find a way to do this without creating a new idea, but I have decided to make it an official 'Idea' to see if there is anyone else that might appreciate a feature like this (or has found there own way to do it!)
Do your workflows look like this...
but you wish they could look like this?
Well... they can with your help!
Okay, I might be crazy...but its worth a shot.
While I understand this is an extremely niche issue, in my experience, it can become very difficult to trace the data through unmanaged lines in large workflows. I think it will be great to cable manage canvas lines so workflows are easier to follow. Heck, while I am already at it, I think it we should all start calling these canvas lines cables... They don't carry electricity, but they sure do carry data!
Here is an example I created in Alteryx using select tools and containers:
To increase Performance on some old Buissness Logic, i am trying to switch an existing system to In-DB tools. This has given me a lot of headache because there is no Multi-Field Formular Tool in the In-DB section. It is a very tedious job to run through every workflow to manually set the same regex for a table with more than 20 Fields.
I have had the idea to implement such a tool myself but i think this could be helpful for other developers in Alteryx Desktop too, so i am bringing this up here.
The Idea is to have a similar approach to the new Multi-Formular Tool like the other already existing Tool in Preperation.
Hi! I noticed that there is currently no way to use the debug function when working on an analytic app workflow that contains control containers. I'm running 2024.1 and I use the debug feature in my workflows that currently do not have control containers for me to troubleshoot when data changes in a dynamic workflow. Currently, when running in test mode, I have no way to review the data step by step in the flow when selected dynamically through the interface apps. I can only view the final output and make tweaks.
Similar to the setting that you have in many individual tools (join, append, select, et al) where you can go to options and choose to "forget missing fields" it would be nice where you could go to options for the entire flow and "forget missing fields".
This would remove the headache that you have with large flows where you make a change(s) then have to go back through each and every tool to "forget" within that tool. Yes you could still do it individually, but if you chose, you could also do it universally for the entire flow all at once to all the 'missing fields'.
Hello,
A lot of time, when you have a dataset, you want to know if there is a group of fields that works together. That can help to normalize (like de-joining) your data model for dataviz, performance issue or simplify your analysis.
Exemple
order_id item_id label model_id length color amount
1 | 1 | A | 10 | 15 | Blue | 101 |
2 | 1 | A | 10 | 15 | Blue | 101 |
3 | 2 | B | 10 | 15 | Blue | 101 |
4 | 2 | B | 10 | 15 | Blue | 101 |
5 | 2 | B | 10 | 15 | Blue | 101 |
6 | 3 | C | 20 | 25 | Red | 101 |
7 | 3 | C | 20 | 25 | Red | 101 |
8 | 3 | C | 20 | 25 | Red | 101 |
9 | 4 | D | 20 | 25 | Red | 101 |
10 | 4 | D | 20 | 25 | Red | 101 |
11 | 4 | D | 20 | 25 | Red | 101 |
Here, we could split the table in three :
-order
order_id item_id model_id amount
1 | 1 | 10 | 101,2 |
2 | 1 | 10 | 103 |
3 | 2 | 10 | 104,8 |
4 | 2 | 10 | 106,6 |
5 | 2 | 10 | 108,4 |
6 | 3 | 20 | 110,2 |
7 | 3 | 20 | 112 |
8 | 3 | 20 | 113,8 |
9 | 4 | 20 | 115,6 |
10 | 4 | 20 | 117,4 |
11 | 4 | 20 | 119,2 |
-model
model_id length color
10 | 15 | Blue |
20 | 25 | Red |
-item
item_id label
1 | A |
2 | B |
3 | C |
4 | D |
The tool would take :
-a dataframe in entry
-configuration : ability to select fields.
-output : a table with the recap of groups
<style> </style>
field group field remaining fields
1 | item_id | False |
1 | label | False |
2 | model_id | False |
2 | color | False |
3 | order_id | True |
3 | link to group 1 | True |
3 | link to group 2 | True |
3 | amount | True |
Very important : the non-selected fields (like here, amount), are in the result but all in the "remaining" group.
Algo steps:
1/pre-groups : count distinct of each fields. goal : optimization of algo, to avoid to calculate all pairs
fields that has the same count distinct than the number of rows are automatically excluded and sent to the remaining group
fields that have have the same count distinct are set in the same pre-group
2/ for each group, for each pair of fields,
let's do a distinct of value of the pair
like here
item_id label
1 | A |
2 | B |
3 | C |
4 | D |
if in this table, the count distinct of each field is equal to the number of rows, it's a "pair-group"
here, for the model, you will have
-model_id,length
-model_id,color
-length,color
3/Since a field can only belong to one group, it means model_id,length,color which would first (or second) group, then item_id and label
If a field does not belong to a group, he goes to "remaining group" at the end
in the remaining group, you can add a link to the other group since you don't know which field is the key.
<style> </style>
field group field remaining fields
1 | item_id | False |
1 | label | False |
2 | model_id | False |
2 | length | False |
2 | color | False |
3 | order_id | True |
3 | link to group 1 | True |
3 | link to group 2 | True |
3 | amount | True |
Best regards,
Simon
PS : I have in mind an evolution with links between non-remaining table (like here, the model could be linked to the item as an option)
The idea is quite simple. I am sure a lot of Alteryx enthusiasts use containers frequently. These can also be color coded for better overview and readability of your workflows. However, while connections between tools can be named, they cannot be colored.
Therefore, this idea is very simple. Adding an option to color these connections. This would allow for even more readability of workflows. Especially if a workflow contains multiple separate streams of data, this could help to navigate and keep track of how and where data is flowing.
My idea is essentially to borrow the keybinding/command ethos of Vim for Alteryx. For those who are unfamiliar, Vim is a text editor from a time before the mouse and the GUI became dominant forms of interacting with PCs. I think the key ideas to take from Vim are the Modes, Commands, and Grammar.
Vim is mode based for its typing. You start out in Normal mode and enter other modes through key commands. For example, to enter Insert mode, you just type 'i'. This mode allows you to enter text into whatever file you have open at the moment. There's also the Visual mode which is for highlighting sections of text for processing with other commands. This means that key commands can take on a variety of meanings in different modes, adding depth in a limited key range.
The Grammar is another key aspect. Rather than hold an arcane combination of modifiers and letters, Vim uses an Operator-Count-Motion approach. The operator will be the primary action: y for yank/copy, d for delete, c for change, v for visual select. The Count is how many objects you want this operator to be applied to. The Motion is where and what you want to work with: w for a word, s for a sentence, p for a paragraph, ( for a set of parentheses, b for brackets. There are also options that extend this so you can have a series of commands like d2w (delete 2 words), di( (delete inside parentheses), yap (yank/copy all of a paragraph), etc. Below is a cheat sheet displaying a wider list of the possibilities with the motions.
The Command mode is the last piece of the puzzle. By typing ':' while in Normal mode, you bring up a command prompt. Here you can enter any of a number of commands including changing user settings via keywords. For example, :s/old/new/gc will search through my file and attempt to find and replace every old term with the new term, the c at the end means that Vim will ask for confirmation before each change. I could also do things like :set nohl which will turn off highlighting for items found during searches. It's easy to imagine using similar functionality to make configuration changes to a wide set of tools or simply to selectively delete tools without using the mouse or scrolling to them.
To take it a step further, current menu functions could be turned into commands, imagine typing v6t to select the next 6 tools on the canvas. You could follow this by typing :Contain %V to wrap the selected tools in a container, perhaps with extra arguments a specific color palette could be applied as well! I say all this to say that the way forward for shortcuts in Alteryx is to break away from the one-handed modifier heavy paradigm that so many programs follow today. By creating commands that can duplicate the actions found in drop down and right click menus, as well as providing a means of navigating the canvas without a mouse, Alteryx can go to the next level in terms of efficiency and ergonomics.
Let me know what you think, if you need more concrete ideas on what this might look like in practice, I can add that. Thanks!
P.S. If you work on side projects outside of Alteryx, consider giving NeoVim a try, it adds a lot of extensibility and customization to classic Vim
I would like a way to disable all containers within a workflow with a single click. It could be simply disable / enable all or a series of check boxes, one for each container, where you can choose to disable / enable all or a chosen selection.
In large workflows, with many containers, if you want to run a single container while testing it can take a while to scroll up and down the workflow disabling each container in turn.
The current approach gives me both Record Counts and Total Record Size in KB, but I don't need or want the KB.
The option I am requesting does not currently exist. It would remove the KB and leave you with just the Record Counts. KB is useless to me. I only care about Record Counts. This option would help reduce the noise/clutter of the KBs.
I am working with complex workflows which use multiple files as input, located on network drives. Input tools are Input Data, Directory, Wildcard Input, Wildcard XLSX Input (from CReW macros).
Regularly, I experience very slow Designer when working on the workflows, and slow progress when running the tools mentioned above, especially when working from home. Switching off Auto Configure did not really help because I the column list sometimes does not converge even after pressing F5 multiple times, and when actively working on workflows, I have to press F5 all the time...
In order to speed up both working on workflows and running the workflows, I would like to propose a function "Cache all File Inputs" which loads and caches all file inputs at once. To achieve this state, I now have Cache and Run workflow once per every file input.
The idea is to have a Run option, where the workflow runs everything up to the selected tool (Like the Cache functionality does).
You select the tool, hit Run Up and the workflows executes everything "before" the selected tool.
That'll make developing much easier, specially when dealing with big workflows and constant changing data.
Hello,
As of today, DCM is great to store credentials. But once we want to dive deeper in technicity, like using macros or Applications, it's really bad. One of the things I hate is that we can't retrieve any informations from the DCM connection, just the id. Not good for logs, really bad for understanding and have some conditional logic related to connection type or name.
Here an example
Nice, I managed to retrieve an id but I have no idea of what it means : what kind of connection? what's name?
Best regards,
Simon
Idea
I feel the necessity of the features to know the version of Alteryx Designer Desktop for each user within an organization.
As well as some usage data of each user like 'Last Used' are available in License Portal, if 'Version of Alteryx Designer Desktop' for each user is also available in License Portal, it would be more manageable and could enhance the governance in organization.
Background
When the organization uses Alteryx Server and Designer Desktop, it is more challenging to make alignment of version of these products.
We frequently see our users install/upgrade to newer version of Alteryx Designer than that of Alteryx Server, and cause incompatibility issue when interacting with Alteryx Server.
Although we instruct our users to install the particular version, they sometimes upgrade to newer version later on by themselves, but it's not detectable.
I mean, even if they're using a wrong version of Alteryx Designer Desktop, we won't realize it until a problem occurs.
In order to identify such users and rectify their version, administrator shall be able to know which version they use whenever needed.
License Portal would be one of the best platform to make that information available in my opinion.
When I make the workflow, the font size on Result window is no problem.
But, when we show the contents of Results window on the presentation or online meeting, the font size is too small.
I want the function which is enlarge the font size. The important point is that the current font size is okay on making workflow and the large font size is only needed on showing to the another people on presentation or online meeting.
One more point to add, it would be helpful to be able to change the font size with Ctrl + mouse wheel.
Push the zoom button:
Hello,
This is a feature I haven't seen in any data prepation/etl. The core feature is to detect the unique key in a dataframe. More than often, you have to deal with a dataset without knowing what's make a row unique. This can lead to misinterpret the data, cartesian product at join and other funny stuff.
How do I imagine that ?
a specific tool in the Data Investigation category
Entry; one dataframe, ability to select fields or check all, ability to specify a max number of field for combination (empty or 0=no max).
Algo : it tests the count distinct every combination of field versus the count of rows
Result : one row by field combination that works. If no result : "no field combination is unique. check for duplicate or need for aggregation upstream".
ex :
order_id line_id amount customer site
1 | 1 | 100 | A | U_250 |
1 | 2 | 12 | A | U_250 |
1 | 3 | 45 | A | U_250 |
2 | 1 | 75 | A | U_250 |
2 | 2 | 12 | A | U_250 |
3 | 1 | 15 | B | U_250 |
4 | 1 | 45 | B | U_251 |
The user will select every field but excluding Amount (he knows that Amount would have no sense in key)
The algo will test the following key
-each separate field
-each combination of two fields
-each combination of three fields
-each combination of four fields
to match the number of row (7)
And gives something like that
choice number of fields field combination
very good | 2 | order_id,line_id |
average | 3 | order_id,line_id, customer |
average | 3 | order_id,line_id, site |
bad | 4 | order_id,line_id, site, customer |
… | … | …. |
Best regards,
Simon
Hello,
Unless you're lucky, your input dataset can have fields with the wrong types. That can lead to several issues such as :
-performance (a string is waaaaaaaay slower than let's say a boolean)
-compliance with master data management
-functional understanding (e.g : if i have a field called "modified" typed as string, I don't know if it contains the modification date, an information about the modification, etc... while if it's is typed as date, I already know it's a date)
-ability to do some type-specific operations (you can't multiply a string or extract a week from a string)
right now, the existing tools have been focused on strings but I think we can do better.
Here a proposition :
entry : a dataframe
configuration :
-selection of fields
or
-selection of field types
-ability to do it on a sample (optional)
Algo :
Alteryx | Byte | bool | only 2 values. 0 and 1 | to be done |
Alteryx | Int16 | bool | only 2 values. 0 and 1 | to be done |
Alteryx | Int16 | Byte | min=>0, max <=255 | to be done |
Alteryx | Int32 | bool | only 2 values. 0 and 1 | to be done |
Alteryx | Int32 | Byte | min>=0, max <=255 | to be done |
Alteryx | Int32 | Int16 | min>=-32,768, max <=32,767 | to be done |
Alteryx | Int64 | bool | only 2 values. 0 and 1 | to be done |
Alteryx | Int64 | Byte | min>=0, max <=255 | to be done |
Alteryx | Int64 | Int16 | min>=-32,768, max <=32,767 | to be done |
Alteryx | Int64 | Int32 | min>=-–2,147,483,648, max <=2,147,483,647 | to be done |
Alteryx | Fixed Decimal | bool | only 2 values. 0 and 1 | to be done |
Alteryx | Fixed Decimal | Byte | No decimal part, min>=0, max <=255 | to be done |
Alteryx | Fixed Decimal | Int16 | No decimal part, min>=-32,768, max <=32,767 | to be done |
Alteryx | Fixed Decimal | Int32 | No decimal part, min>=-–2,147,483,648, max <=2,147,483,647 | to be done |
Alteryx | Fixed Decimal | Int36 | No decimal part, min>=-––9,223,372,036,854,775,808, max <=9,223,372,036,854,775,807 | to be done |
Alteryx | Float | bool | only 2 values. 0 and 1 or 0,-1 | to be done |
Alteryx | Float | Byte | No decimal part, min>=0, max <=255 | to be done |
Alteryx | Float | Int16 | No decimal part, min>=-32,768, max <=32,767 | to be done |
Alteryx | Float | Int32 | No decimal part, min>=-–2,147,483,648, max <=2,147,483,647 | to be done |
Alteryx | Float | Int36 | No decimal part, min>=-––9,223,372,036,854,775,808, max <=9,223,372,036,854,775,807 | to be done |
Alteryx | Float | Fixed Decimal | to be done | to be done |
Alteryx | Double | bool | only 2 values. 0 and 1 or 0,-1 | to be done |
Alteryx | Double | Byte | No decimal part, min>=0, max <=255 | to be done |
Alteryx | Double | Int16 | No decimal part, min>=-32,768, max <=32,767 | to be done |
Alteryx | Double | Int32 | No decimal part, min>=-–2,147,483,648, max <=2,147,483,647 | to be done |
Alteryx | Double | Int36 | No decimal part, min>=-––9,223,372,036,854,775,808, max <=9,223,372,036,854,775,807 | to be done |
Alteryx | Double | Fixed Decimal | to be done | to be done |
Alteryx | Double | Float | when no need for doube precision | to be done |
Alteryx | DateTime | Date | no hours, minutes, seconds | to be done |
Alteryx | String | bool | only 2 values. 0 and 1 or 0,-1 or True/False or TRUE/FALSE or equivalent in some languages such as VRAI/FAUX, Vrai/Faux | to be done |
Alteryx | String | Byte | No decimal part, min>=0, max <=255 | to be done |
Alteryx | String | Int16 | No decimal part, min>=-32,768, max <=32,767 | to be done |
Alteryx | String | Int32 | No decimal part, min>=-–2,147,483,648, max <=2,147,483,647 | to be done |
Alteryx | String | Int36 | No decimal part, min>=-––9,223,372,036,854,775,808, max <=9,223,372,036,854,775,807 | to be done |
Alteryx | String | Fixed Decimal | to be done | to be done |
Alteryx | String | Float | when no need for doube precision | to be done |
Alteryx | String | Double | when need for double precision | to be done |
Alteryx | String | Date | test on several date formats | to be done |
Alteryx | String | Time | test on several time formats | to be done |
Alteryx | String | DateTime | test on several datetime formats | to be done |
Alteryx | WString | bool | only 2 values. 0 and 1 or 0,-1 or True/False or TRUE/FALSE or equivalent in some languages such as VRAI/FAUX, Vrai/Faux | to be done |
Alteryx | WString | Byte | No decimal part, min>=0, max <=255 | to be done |
Alteryx | WString | Int16 | No decimal part, min>=-32,768, max <=32,767 | to be done |
Alteryx | WString | Int32 | No decimal part, min>=-–2,147,483,648, max <=2,147,483,647 | to be done |
Alteryx | WString | Int36 | No decimal part, min>=-––9,223,372,036,854,775,808, max <=9,223,372,036,854,775,807 | to be done |
Alteryx | WString | Fixed Decimal | to be done | to be done |
Alteryx | WString | Float | when no need for doube precision | to be done |
Alteryx | WString | Double | when need for double precision | to be done |
Alteryx | WString | String | Latin-1 character only | to be done |
Alteryx | WString | Date | test on several date formats | to be done |
Alteryx | WString | Time | test on several time formats | to be done |
Alteryx | WString | DateTime | test on several datetime formats | to be done |
Alteryx | V_String | bool | only 2 values. 0 and 1 or 0,-1 or True/False or TRUE/FALSE or equivalent in some languages such as VRAI/FAUX, Vrai/Faux | to be done |
Alteryx | V_String | Byte | No decimal part, min>=0, max <=255 | to be done |
Alteryx | V_String | Int16 | No decimal part, min>=-32,768, max <=32,767 | to be done |
Alteryx | V_String | Int32 | No decimal part, min>=-–2,147,483,648, max <=2,147,483,647 | to be done |
Alteryx | V_String | Int36 | No decimal part, min>=-––9,223,372,036,854,775,808, max <=9,223,372,036,854,775,807 | to be done |
Alteryx | V_String | Fixed Decimal | to be done | to be done |
Alteryx | V_String | Float | when no need for doube precision | to be done |
Alteryx | V_String | Double | when need for double precision | to be done |
Alteryx | V_String | String | Same length | to be done |
Alteryx | V_String | Date | test on several date formats | to be done |
Alteryx | V_String | Time | test on several time formats | to be done |
Alteryx | V_String | DateTime | test on several datetime formats | to be done |
Alteryx | V_WString | bool | only 2 values. 0 and 1 or 0,-1 or True/False or TRUE/FALSE or equivalent in some languages such as VRAI/FAUX, Vrai/Faux | to be done |
Alteryx | V_WString | Byte | No decimal part, min>=0, max <=255 | to be done |
Alteryx | V_WString | Int16 | No decimal part, min>=-32,768, max <=32,767 | to be done |
Alteryx | V_WString | Int32 | No decimal part, min>=-–2,147,483,648, max <=2,147,483,647 | to be done |
Alteryx | V_WString | Int36 | No decimal part, min>=-––9,223,372,036,854,775,808, max <=9,223,372,036,854,775,807 | to be done |
Alteryx | V_WString | Fixed Decimal | to be done | to be done |
Alteryx | V_WString | Float | when no need for doube precision | to be done |
Alteryx | V_WString | Double | when need for double precision | to be done |
Alteryx | V_WString | String | Same length,latin- character only | to be done |
Alteryx | V_WString | WString | Same length | to be done |
Alteryx | V_WString | V_String | latin- character only | to be done |
Alteryx | V_WString | Date | test on several date formats | to be done |
Alteryx | V_WString | Time | test on several time formats | to be done |
Alteryx | V_WString | DateTime | test on several datetime formats | to be done |
The output would be something like that
Field | Input type | Proposition | Conversion |
toto | float | int | formula (with example)/native tool/datetime conversion tool… |
Best regards,
Simon
Hello all,
When using in-database, all you have in select or formula are the Alteryx field types (V_String, etc..).
However, since you're mostly writing in database, in the end, there is a conversion of Alteryx field types to real SQL field types (like varchar). But how is it done ? As of today, it's a total black box. Some documentation would be appreciated.
Best regards,
Simon
Whenever I overwrite an Excel sheet with data of the same format just different values (e.g. Q2 data versus Q1 data) all of my Pivot Tables break and I have to manually recreate them even though the schema didn't change. Somehow the Table is being deleted/removed and replaced with a completely different Table which is what causes the Pivot Tables to break. The only way to avoid this is to manually set the Cell Range, but who has time for that? The only solution I have found is to manually copy all values and paste them over the existing data which is very inefficient the more sheets you are working with.
User | Likes Count |
---|---|
4 | |
3 | |
3 | |
2 | |
2 |