With the release of Alteryx Designer 2018.2, the Python SDK has finally shed its Beta flag!
Now it's time to celebrate!
To enter the contest:
You'll have to make a decision: keep working on your tool closer to the deadline to make it as perfect as possible, or submit it early so you have time to socialize your post to get as many stars as possible?
☝️☝️☝️ The winner will receive a custom WASD mechanical keyboard 🌋🌋🌋
👇👇👇 All entrants will be rewarded with the Python Contest badge 🔥🔥🔥
Remember to make sure you've upgraded to 2018.2.
Subscribe to this thread or check back here (pythoncontest.alteryx.com) to vote as new tools are submitted!
I love this tool! As a fellow Teknion consultant, I have used many of Jonathan's brilliant tools, and this is one where I can see a lot of uses. For example, I could be waiting for files to populate in a directory, however, they arrive on a random basis, and don't come in on a regular schedule. I may have a daily process that checks this directory to see if any (or a minimum number of) files have been uploaded, then run the process - with the Terminator tool, I can simply have it check to see if a minimum number of files have been loaded into the directory; if yes, then it kicks off the rest of my process. Very cool, Jonathan!
Late to play but here's my go - A grouped record id.
Source code on GitHub: https://github.com/jdunkerley/AlteryxAddIns/tree/master/OmniBus.GroupedRecordID
Supports presort XML to group and sort the incoming records. Packaged demo workflow attached as well.
Doesn't currently support adding as the first column. Aiming to add this. Additionally, UI is a bit chunky and would rather have a custom widget but haven't had time yet.
Hey guys. I have a very niche, but in my very humble opinion, a super fantastic probably best tool you'll ever encounter.
Introducing.......a Translation Tool! So basically, it'll take strings in a field and translate it to a language of you're choosing. In this introductory version, I have about like 10 languages. Now you may ask, why not just use the API? Well that's because it costs money after a certain amount of requests, plus, this is cooler. Basically, this utilizes a python package, called Selenium, which process clicks in a web browser. This means it's slower than an API, but will get the job done. It has capabilities for a handful of browsers, but this tool utilizes Google Chrome. With the installation of the Tool, it will create a virtual python environment that installs the selenium package as well as the chromedriver.exe found here
There are some features I would consider making with the Tool; the main two would be to have an option for headless and another for time delay between translations. Let me explain -
1. Going Headless - this basically means hiding the browser that is automatically "clicking" or showing it. Showing is nicer, just because it's cool to see the machine do everything in front of your eyes, but hiding makes the process look nicer? Idk, I'd consider having it as an option (it's currently hidden)
*It can be manually changed at this line by commenting it out
2. Time Delay - Sometimes the Engine processes faster than the browser can "click". So the more this value is increased, it will capture everything and translate appropriately. Currently, I have it set to 0.5 seconds between records, as 0.25 seconds still had issues. But it would be nice to have that option for users to adjust based on how fast they want the workflow to run, since it's inherently slow. Again, considering....
** It can be manually changed by changing the value here (in seconds)
Anyway, the point was to at least have this out there. Plus with the Selenium package, you can automate filling in forms on a certain webpage if you have the data. However, I just like languages and translations, hence this tool!
As always, suggestions and comments are welcome :)
Note*** I hope you all like my image, I was scared of copyright issues, and I put a lot of sweat, blood, and tears into making this in paint.
@Nick612Haylund Not exactly what you requested, but...with this version when meeting the criteria it now write to the output "Info: Terminator (1): Record count minumum met. Processing gate opened.", and if the minimum is not met, once all records are received it will write to the output "Info: Terminator (1): Record count insufficient for processing. I'll be back."
Congratulations to Nick - his Glassdoor Company Scraper won the most votes! Full results...
Glassdoor Company Scraper
|Scrape reviews and interviews from Glassdoor.com||44|
|Prevent a process from executing until a minimum amount of input records are present||29|
|Think of it like the Regex Parse tool, but instead of parsing into columns, each match parses into a new record||12|
|Score a text field into positive, negative, and neutral scores from the words and phrase in it||10|
|Re-order your fields in various ways||10|
|Upload data to the DataRobot machine learning platform and score data using models generated by DataRobot||9|
Omnibus Grouped Record ID
|Record ID with grouping||7|
We also had several Alteryx associates get in on the share-fest...
Mimesis Data Generator
|Generate dummy data for testing purposes|
|Generate spatial objects from GeoJSON|
|Create word clouds from text|
|K-Means clustering implemented with Scikit Learn|
|Translate text by automating Chrome browser clicks with the Selenium Python package|
Thanks to all the participants - I hope you continue to build and share!
And to all you voters and spectators - I hope these tools prove useful and serve as examples to create your own tools.