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
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.
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
At the moment, in order for users in our organisation to run apps, they need to be added to permissions for the data connection for the server/DB the app uses (as we use Gallery connections for ease of collaboration within the Analytics team).
This is fine provided users running the apps do not have Alteryx Designer, however, we have users across the business who do use Designer - we don't always want these users having direct access to query the server/DB through designer just because they have the connection in order to run workflows on the Gallery. It's my understanding that at the moment this is necessarily the case, which is not ideal.
Would be great if we could grant permissions for users to use the connection to run apps in the Gallery without that enabling them to use that connection in Designer to query the DB however they want.
The order of the join fields effects the ordering output
For more complex joins it would be nice to have up and down arrows much like the summarise tool:
The data view of any anchor is searchable. I want to search the metadata view please.
It would be really great to have Dynamic Detour tool where you could specify the detour direction as an input to the tool rather than an imbedded control.
This would allow workflow branching.
Using a filter for this passes a dataset with no rows in it which causes dynamic in-db or dynamic input tools to error.
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)
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.
The basic premise is this:
Phantom spacing. Basically something that looks like it has spaces on Excel but is actually formatted as an indentation.
Unfortunately, to read the indentation we will need either a VBA prep or read the XML inside. The latter of which is difficult.
As to VBA, the general steps are to create an indentation formula in order to see the numbers, then go from there. The idea is credited to @clmc9601 as we discussed privately.
As of now, I do not see anyway to do this on Alteryx as a function or even expression. It would be very helpful especially reading trial balances or even Bloomberg outputs as they are formatted with indentation.
Reading indentation from Excel or any other file within Alteryx will be much appreciated, especially in actuarial and finance spaces.
It would be great if you could include a new Parse tool to process Data Sets description (Meta data) formatted using the DCAT (W3C) standard in the next version of Alteryx.
DCAT is a standard for the description of data sets. It provides a comprehensive set of metadata that can be used to describe the content, structure, and lineage of a data set.
We believe that supporting DCAT in Alteryx would be a valuable addition to the product. It would allow us to:
We understand that implementing support for this standards requires some development effort (eventually done in stages, building from a minimal viable support to a full-blown support). However, we believe that the benefits to the Alteryx Community worldwide and Alteryx as a top-quality data preparation tool outweigh the cost.
I also expect the effort to be manageable (perhaps a macro will do as a start) when you see the standard RDF syntax being used, which is similar to JSON.
DCAT, which stands for Data Catalog Vocabulary, is a W3C Recommendation for describing data catalogs in RDF. It provides a set of classes and properties for describing datasets, their distributions, and their relationships to other datasets and data catalogs. This allows data catalogs to be discovered and searched more easily, and it also makes it possible to integrate data catalogs with other Semantic Web applications.
DCAT is designed to be flexible and extensible, so they can be used to describe a wide variety. They are both also designed to be interoperable, so they can be used together to create rich and interconnected descriptions of data and knowledge.
Here are some of the benefits of using DCAT:
Here are some examples of how DCAT is being used:
As the Semantic Web continues to grow, DCAT is likely to become even more widely used.
DCAT
RDF
Can we have an option to disable all tool containers at once? Similar to disable all browse tools or tools that write output.
Once I've built a workflow I often have to go through the process of removing and combining tools such as selects and formula tools which could be simplified to just one tool. It would be great to have an automated feature which could detect groups of tools which could be simplified and then automatically combined them into one step, improving/simplifying my workflow.
Most people who have been around for more than one version change of Alteryx will be familiar with the standard dreaded error pop-up box:
"There was an error opening [workflow X]. This workflow was created by a more recent version of Alteryx..."
The pop up box is generated as many times as there are assets potentially affected. You click once to acknowledge you're aware there is a problem with asset 1A, then you click again when the 1B pop up appears, then you keep clicking until you reach W76. Or that's what the software expects you to do and seem to figure is the graceful way to handle potential problems associated with missing assets (it's far from certain there are even any problems with running the specific code referred to on the older version, this is a warning-level notification where stuff might not work which has been 'promoted' to a full-fledged error that you are requested to address at the asset level).
If you work somewhere where there is a large community of Alteryx users sharing assets widely with each other (all making use of large shared macro repositories) the software's choice of notifying you at the asset level is, not to mince words, completely insane. You could do everything right, have exactly the recommended version from the perspective of Alteryx sys-management, the one that corresponds to the corporate server version executing the scheduled workflows, and still be bombarded with 15 notifications at start-up if you're away for a few days and in the time you were away one or two new guys at the (very large) company decided to create a few new assets with the latest version of the software and share them with their colleagues (the latest version was not yet implemented server-side, so some of those tools might fail for those users - but the tools become everybody's problem the second they're stored in the shared location).
The notifications at startup make no distinction between relevant and irrelevant messages, you can start an empty new workflow and still get messages related to macros you don't care about, because they're located somewhere where Alteryx has been told to look for them even if they're not loaded/included in the workflow.
Every single asset Alteryx might in theory make use of during the session that is starting up will spark an individual message that cannot be ignored or skipped without acknowledging its existence, even if many of the assets will work just fine with an older version. This setup scales ...badly.
I can think of at least two solutions which would in many ways be preferable to the current structure. One would be to 'batch' the notifications prior to creating the pop-up box (one pop-up per start-up, not per asset). What might be included in such a pop-up could for instance be a grouped output with the Alteryx versions that did not match the active version ('workflows developed in version 'XX56' and 'XX57' were identified and these may fail to load', or whatever). Another option would be to have a setting in Designer where you tell Alteryx you don't want to see these notifications at start-up.
It would be nice to have an option to distribute tools with the fixed default space of three in between each tool. Now it just distributes based on the available space, which can be inconsistent throughout the workflow.
Adding "Lightning Bolt" connectors to the standard workflow tools to allow dynamic automation of the settings would be a game changer. I believe that this would enable us to create universally dynamic and adaptive workflows which could be used as drop in solutions for most datasets. This would turn the standard tools into a dynamic ones and dramatically reduce the tool count to accomplish dynamic tasks, and make complex workflows much easier to internalize. Making standard workflow tools more dynamic would allow us to easily dynamically incorporate conditional tests / values / fieldname selections / bypass / etc into tools like detour / filter / formula / unique / transpose / crosstab / summarize / Outputs / etc. I would also like to see the ability to utilize a bool field to bypass any given tool in a workflow. That way we could do things like conditionally bypass an entire formula tool which would dramatically simplify complex formula construction, turn on and off inputs / outputs, simplify error avoidance, etc.
In order to build complex dynamic conditional workflows with the current tool capabilities, most of us are forced to use custom macros (often a multitude of workflow specific ones as well), constantly add and remove formula created fields for message relay, and create complex multi-routings / tests / unions in a standard workflow with large numbers of tools and containers. This hides many of our tasks within short-term use fields / custom macros and it makes the rest of our workflows voluminous and less intuitive.
On the User Interface side, I recommend a simple approach. Next to the standard tool setting there should be a dynamic input option which allows you to select the source field in the lightning bolt connector. Next to that, there should be an icon that can be clicked on to pop up a short text description and a basic screen shot of data in the correct format for dynamic input. I would also like to see a check box at the bottom for manual tool "bypass" which can also be dynamically controlled. (This would especially be helpful on outputs, but it would also be helpful to allow formulas and filters to be kept in place for future use even when they should not currently be used) Turned off tools could be highlighted in a red background or something.
This would be useful for anyone creating dynamic and adaptive workflows, but it would especially expand Alteryx Designer's capability to attract more custom software developers like me. It would dramatically reduce the need for a large number of complex workflow specific macros that clutter our systems. Users that find the traditional workflow tool approach easier for them could easily use the tools as normal by simply using the standard manual settings. Advanced users could simplify the creation of universally dynamic and self adaptive workflows.
The most difficult part about quickly sharing Community Questions and Solutions is constructing representative "Dummy" data values as static Text Inputs that can be packaged in a workflow. Most of us are almost exclusively working with sensitive client and company data that cannot be shared. It would be great to have a tool that converted values over to dummy values based on the type of data in that field. Kind of like a dynamic find and replace that randomizes values, replaces occurrences with similar dummy values, or scrambles string values in an indecipherable way.
The tool output could directly update a connected "Create Text Input" tool, or it could be connected to a browse tool that could quickly be converted to a Text Input.
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,
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
Hello
Cartesian product is a common issue when joining dataset with a bad key. What I suggest is an option to check if there will be a cartesian product on the join tool.
-there is a label "Cartesian product (non join key uniqueness) detection"
-under it a drop down menu with three choices
-do nothing
-fail
-warning
Algo :
if do nothing==> well... do nothing more than actual behaviour.
if "fail" or "warning" : count distinct of join key versus count row on each side of the join. If none is unique, display a warning or an error message.
Best regards,
Simon
I would love a tool to be created for looking up a value in a table based on a condition. It could be called "Lookup." One input to the tool would be the lookup list, the other is the main database. Inside the tool you could enter functions that can query the lookup table and return the results either as an overwrite of an existing field in the main DB or as a new field in the main DB, similar to the options in the Multi-Row Formula tool.
Here is a link to my post in Community that explains the problem. The solution, in a nutshell, was to create a Join (which resulted in millions of additional rows), run the conditional formula, then filter to get rid of the millions of rows that were created by the Join so only those that met the condition remained (the original database rows).
Here is the text of my Community post describing my project (slightly modified for clarity):
Table 1: A list of Pay Dates (the lookup table)
Table 2: Daily timekeeper data with Week Start and Week End Date fields.
The goal: To find the Pay Date in Table 1 that is greater than the Week Start Date in Table 2 and no more than 13 days after the Week End Date in Table 2.
[Table 2: Week Start Date] < [Table 1: Pay Date]
and [Table 2: Week End Date] < [Table 1: Pay Date]
and DateTimeDiff([Table 1: Pay Date], [Table 2: Week End Date], 'Days') <= 13
There are many different flows I could use this type of tool for that would save time and simplify the flow.
Thanks!