Cloud Workflowsでget_type関数を使ってみる

2023.02.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

データアナリティクス事業本部のkobayashiです。

GoogleCloudのWorkflowsで引数の型を判定する関数が追加されていたので試してみました。

Workflowsで引数の型を判定する関数(get_type)

タイトルの通りですが、Workflows中で引数の型を判定する関数でget_type(arg)で使用すると戻り値でboolean,bytes,double,integer,list,map,string,nullのいずれかを返す関数になります。

では実際にWorkflowを作って試してみたいと思います。Workflowsではyaml定義を使ってWorkflowを作成できるので以下のyamlを使います。

wf-get_type.yaml

main:
  steps:
    - assign_value:
        assign:
          - str_val: "str_val"
          - int_val: 999
          - double_val: 999.999
          - bool_val: True
          - list_val: [ "apple","orange","banana" ]
          - map_val: { "apple": 10,"orange": 20,"banana": 30 }
          - null_val:
    - assign_value_2:
        assign:
          - str_int_val: ${string(int_val)}
          - str_double_val: ${string(double_val)}
          - str_bool_val: ${string(bool_val)}
          - int_double_val: ${int(double_val)}
          - double_int_val: ${double(int_val)}
    - logging:
        call: sys.log
        args:
          text: ${"str_val:" + get_type(str_val) + ", int_val:" + get_type(int_val) + ", double_val:" + get_type(double_val) + ", bool_val:" + get_type(bool_val) + ", list_val:" + get_type(list_val) + ", map_val:" + get_type(map_val)+ ", null_val:" + get_type(null_val) }
          severity: INFO
    - logging_2:
        call: sys.log
        args:
          text: ${"str_int_val:" + get_type(str_int_val) + ", str_double_val:" + get_type(str_double_val) + ", str_bool_val:" + get_type(str_bool_val) + ", int_double_val:" + get_type(int_double_val) + ", double_int_val:" + get_type(double_int_val) }
          severity: INFO

ステップで行っていることを簡単に説明します。

  • assign_valueステップ
    • string型、integer型、double型、bool型、list型、map型、null型の変数を定義する
  • assign_value_2ステップ
    • string()関数、int()関数、double()関数を使ってassign_valueステップで定義した変数の型変換を行う
  • loggingステップ
    • assign_valueステップで定義した変数の型をCloud Loggingに出力する
  • logging_2ステップ
    • assign_value_2ステップで型変換した変数の型をCloud Loggingに出力する

ではこのyamlを使ってWorkflowを作成して実行結果を確認してみます。

$ gcloud workflows deploy wf-get_type --source=wf-get_type.yml --service-account 11111111111-compute@developer.gserviceaccount.com --location asia-northeast1
$ gcloud workflows run wf-get_type --location asia-northeast1

実行結果をCloud Loggingで確認してみます。

2023-02-14 13:37:22.745 JST
 str_val:string, int_val:integer, double_val:double, bool_val:boolean, list_val:list, map_val:map, null_val:null
2023-02-14 13:37:23.007 JST
 str_int_val:string, str_double_val:string, str_bool_val:string, int_double_val:integer, double_int_val:double

loggingステップではassign_valueステップで定義した変数の型が意図した通りに出力されていますし、logging_2ステップではassign_value_2ステップで型変換を行った後のデータ型が取得できていることが確認できました。

まとめ

GoogleCloudのWorkflowsで引数の型を判定する関数get_typeを使って定義した変数の型、型変換を行った後のデータ型が取得できることが確認できました。get_type関数の使いみちとしてはswitchステップのconditionにてデータ型により処理を変更するといったことがまずは考えられます。なお、get_type関数でfunctionやsubworkflowを与えた場合はエラーとなるのでその点は注意が必要です。

最後まで読んで頂いてありがとうございました。