Free Trial

ディスカッション

答えを見つけ、質問し、Alteryx の専門知識を共有してください。
解決済み

数式エディタに排他的論理和(XOR)を実装する

gawa
オーロラ

数式エディタでは、論理積(AND)と論理和(OR)は使えますが、デフォルトでは排他的論理和(XOR)が使えません。XORが使えないと、IF分がごちゃっとして、ぱっと見でXORであることが分かりにくいです。

gawa_0-1675400733811.png

なので、👇のカスタム関数を使ってXORの機能を実装してみます

https://help.alteryx.com/ja/developer-help/build-custom-formula-functions

以下のようなxmlファイルを作って所定のフォルダに保存するだけです。ヘルプに従って書いていけば、それほど難しくありません。<Category>タグには、何かしらの既存のカテゴリー名をいれてあげないと、数式エディタで表示されないので、そこだけ注意です。

gawa_1-1675400922704.png

 

無事に認識されました

gawa_3-1675401175970.pnggawa_4-1675401192525.png

 

本当は、ANDやORのように演算子としてXORを定義したかったのですが、ヘルプにやり方が無かったため、関数で実装しました。

カスタム関数なので、他人とWFを共有する際はちょっと不便ですが・・・いつか、Designerのデフォルトで実装されるといいなと、密かに楽しみにしてます。

 

作ったxmlファイルを置いておきますので、ご自由にお使いください。

 

8件の返信8
AkimasaKajitani
17 - Castor
17 - Castor

@gawa さん

 

Ideaに投稿されてみてはいかがでしょうか?

https://community.alteryx.com/t5/Alteryx-Designer-Ideas/idb-p/product-ideas

 

gawa
オーロラ

@AkimasaKajitani さん、アイディア投稿できるんですね、知りませんでした。ちょっと投稿してみます!

Yoshiro_Fujimori
マグネター

@gawa さん 

カスタム関数をXMLで作れるとは知りませんでした。情報共有ありがとうございます。

 

> カスタム関数なので、他人とWFを共有する際はちょっと不便ですが

 

たしかに、カスタム関数のヘルプを見ると

 「XMLファイルを C:\Program Files\Alteryx\bin\RuntimeData\FormulaAddIn に保存しなさい」

と書いてありますが

Package a Tool を見ると このFormulaAddInのパスはインストール対象になっていないので

開発したワークフローと一緒にユーザーに展開するのは難しそうです。

なにか他の方法があるのでしょうかね。。

AkimasaKajitani
17 - Castor
17 - Castor

@Yoshiro_Fujimori さん @gawa さん

 

カスタム関数の配布は難しそうですね・・・

CrewMacroみたいにyxwzでインストーラ(ファイルをコピーするような)を作るくらいしか思いつきません。

 

ちなみに、Alteryx Formula Add Ins と呼ばれるカスタム関数パッケージが配布されていますが、やはり手動でコピーなどしてインストールせよ、となっています。

https://jdunkerley.co.uk/2016/05/15/alteryx-formula-add-ins-v1-1/

 

 

gawa
オーロラ

@Yoshiro_Fujimori さん、@AkimasaKajitaniさん 

Alteryx Serverだと、Serverのホスト上の似たようなフォルダにカスタムXMLを置くと、使えるのかなと想像したりしますが、稼働中のサーバに不具合起きたらと思うと怖くて手が出せないです。。。

共有の煩雑さを考えると、この手のよく使う処理はマクロ化してyxzpとかで共有しましょう、が第一選択になるのでしょうね。

 

返信いただいてありがとうございました!

AkimasaKajitani
17 - Castor
17 - Castor

@gawa さん

 

一応SDKという形で正式サポートしているはずなので、サーバーでも動くと思います。

 

Yoshiro_Fujimori
マグネター

@AkimasaKajitaniさん @gawaさん

 

ヘルプページの構造から、Custom Formulaは"Legacy SDKs"に含まれるようで、拡張性には限界があるよ、と書いてありますね。

These Legacy SDKs use outdated technology that limits your extension opportunities.

We've built a new Platform SDK using Python and the latest open-source technology to deliver a vastly improved development experience.

Go to Platform SDK to get started!

 

ではそのLegacyでない"Platform SDK"はというと

Configuration WindowのUIはReact ( AYX UI SDK )、内部LogicはPython ( AYX Python SDK.) で開発し、

開発したパッケージは専用のCommand Line Interface (AYX Plugin CLI, Pythonベース) で管理しなさいね

と書いてあります。

ちなみにこれらを使うためには AMP Engine を有効にする必要があるようです。

 

自前のツールを開発・保守するには、結構 本気で取り組む必要がありそうです。

まあそうかもしれませんが、XMLを作ってフォルダに置いておく手軽さと比べるとハードルが高いですね。

AkimasaKajitani
17 - Castor
17 - Castor

@Yoshiro_Fujimori さん

 

さすがにAMP ONオンリーだとしんどいですね・・・。だいぶんAMPも良くなってきましたが・・・。

いずれにしても、個別にインストールしないといけない感じがするので、手軽にワークフローといっしょに配布、というにはハードルが高そうです・・・。