Commands

Detailed reference for all the HDXCLI commands

Profile

There is a 'default' profile that will be used if you omit --profile <profile-name> on each request to the HDXCLI.

List

hdxcli profile list  

Add

One way is to do it interactively:

$ hdxcli profile add <profile-name>
Please, type the host name of your cluster: <host-name>  
Please, type the user name of your cluster: <user-name>  
Will you be using https  (Y/N): \<Y/N>

Or by passing the same information via options:

hdxcli add <profile-name> --hostname <hostname> --username <username> --scheme <http/s>

Show

If you omit --profile <profile-name>, 'default' profile will be shown.

hdxcli --profile <profile-name> profile show  

Set/Unset

hdxcli allows you to save both project name and table name to use as default.

Set

hdxcli set <project-name> <table-name>  

Unset

hdxcli unset

From now on, when you see --project <project-name> and --table <table-name>, you know that it can be omitted if the set command was previously used.

User

List

hdxcli user list

Delete

hdxcli user delete <user-email>

Show

hdxcli user --user <user-email> show

Assign roles

You can assign just one or multiple roles to a specific user. The option -r, --role can be used multiple times. It's a required setting.

hdxcli user assign-role <user-email> --role <role-name>  

Remove roles

The same as the assign-role command, but instead it removes roles from a user.

hdxcli user remove-role <user-email> --role <role-name>

Invite

List

The -p or --pending option can be used to filter the invite list, displaying only pending invitations.

hdxcli user invite list  

Send

The -r or --role option can be used multiple times. It's a required setting.

hdxcli user invite send <user-email> --role <role-name>

Resend

hdxcli user invite send <user-email>

Delete

hdxcli user invite delete <user-email>

Show

hdxcli user invite --user <user-email> show\

Role

List

hdxcli role list

Create

There are two ways to create a new role:

  • Using options. However, if you choose this method, the role can't have two or more policies.
  • Using the interactive method.

Create a role using options

-n, --name and -p, --permission are required options to create a new role, and the -p, --permission option can be used multiple times. While a role may or may not have a specific scope, these options are considered optional. The -t, --scope-type expects to receive the name of a resource, such as project, table, transform, etc., and the -i, --scope-id should be the UUID identifier for that specific resource.

Use the following command to create a new role:

hdxcli role create --name <role-name> --scope-type <scope-type> --scope-id <scope-id> --permission <permission-name>

Create a role using interactive method

To create a role interactively, use the following command:

$ hdxcli role create
Enter the name for the new role: <role-name>  
Adding a Policy, does it have a specific scope? [Y/n]\: \<y/n>  
Specify the type of scope for the role (e.g., project): <scope-type>  
Provide the 'uuid' for the specified scope: <scope-id>  
1 - commit_alterjob  
2 - change_kinesissource  
3 - ...  
n - All of them  
Enter the numbers corresponding to the permissions you'd want to add (comma-separated): \<i.e:1,2 or n>  
Do you want to add another Policy? [Y/n]\: \<y/n>

***

## Review Role Details

Role Name: <role-name>  
Policy 1:  
  Scope Type: <scope-type>  
  Scope ID: <scope-id>  
  Permissions: \<[permissions]>  
Confirm the creation of the new role? [Y/n]\: \<y/n>  
Created role role-name

Delete

hdxcli role delete <role-name>

Show

hdxcli role --role <role-name> show

Edit

This is an interactive command that allows you to modify the name of a role and add, modify, or delete policies associated with that role. Before finalizing the operation, it presents a detailed view of the modified role for confirmation or cancellation.

hdxcli role edit <role-name>

Add users

Required. This adds just one user or multiple users to a specific role. The option -u, --user can be used multiple times.

hdxcli role add-user <role-name> --user <user-email>

Remove users

The same as add-user command but to remove users from a role.

hdxcli role remove-user <role-name> --user <user-email>

Permissions list

This command displays a list of available permissions. Additionally, it allows filtering by type using the option -t, --type (for example -t function), showing only permissions related to that specific type.

hdxcli role permission list

Project

List

hdxcli project list

Create

hdxcli project create <project-name>

Delete

hdxcli project delete <project-name>

Display activity

hdxcli project --project <project-name> activity

Display statistics

hdxcli project --project <project-name> stats

Show

hdxcli project --project <project-name> show

Settings

Display all settings

hdxcli project --project <project-name> settings

Display single setting

hdxcli project --project <project-name> settings <setting-name>

Modify setting

hdxcli project --project <project-name> settings <setting-name> <new-value>

Migrate

hdxcli project --project <project-name> migrate <new-project-name> --target-profile <profile-name>

Table

List

hdxcli table --project <project-name> list

Create Raw Table (Regular)

If creating a regular table, no additional options are required. Use the table create command without specifying any options.

hdxcli table --project <project-name> create <table-name>

Additionally, an option (--settings-file) exists to set different table settings other than the default. This works for both regular tables and summary tables:

hdxcli table --project <project-name> create <table-name> --settings-file <settings-file>.json

Create Aggregation Table (Summary)

When creating summary tables, the following options are necessary:

  • --type or -t: Specify as summary.

  • --sql-query or -s: Provide the SQL query directly via the command line.

Alternatively, use --sql-query-file to specify a file containing the SQL query.

Example using a SQL query in the command line:

hdxcli table --project <project-name> create <table-name> --type summary --sql-query <sql-query>

Example using a file containing the SQL query:

hdxcli table --project <project-name> create <table-name> --type summary --sql-query-file <sql-query-file>.txt

Delete

hdxcli table --project <project-name> delete <table-name>

Display Activity

hdxcli table --project <project-name> --table <table-name> activity

Display Statistics

hdxcli table --project <project-name> --table <table-name> stats

Show

hdxcli table --project <project-name> --table <table-name> show

Settings

Display All Settings

hdxcli table --project <project-name> --table <table-name> settings

Display Single Setting

hdxcli table --project <project-name> --table <table-name> settings <setting-name>

Modify Setting

hdxcli table --project <project-name> --table <table-name> settings <setting-name> <new-value>

Migrate

hdxcli table --project <project-name> --table <table-name> migrate <target-project-name> <new-table-name> --target-profile <profile-name>

Truncate

hdxcli table --project <project-name> truncate <table-name>

Transform

List

hdxcli transform --project <project-name> --table <table-name> list

Create

The field ‘name’ in settings will be replaced by .

hdxcli transform --project <project-name> --table <table-name> create -f <transform-settings>.json <transform-name>

Delete

hdxcli transform --project <project-name> --table <table-name> delete <transform-name>

Show

hdxcli transform --project <project-name> --table <table-name> --transform <transform-name> show

Settings

Display All Settings

hdxcli transform --project <project-name> --table <table-name> --transform <transform-name> settings

Display Single Setting

hdxcli transform --project <project-name> --table <table-name> --transform <transform-name> settings <setting-name>

Modify setting

hdxcli transform --project <project-name> --table <table-name> --transform <transform-name> settings <setting-name> <new-value>

Migrate

hdxcli transform --project <project-name> --table <table-name> --transform <transform-name> migrate <target-project-name> <target-table-name> <new-transform-name> --target-profile <profile-name>

Map-from

The command transform map-from consumes data languages such as SQL, Elastic and others and create a Hydrolix transform from them.

hdxcli transform map-from --ddl-custom-mapping \<sql_to_hdx_mapping>.json \<ddl_file> <transform-name>

To learn more about map-from command, see Mapping DDLs to Hydrolix transform.

Jobs

Batch

List

hdxcli job batch list

Ingest

It will use the default transform in <project-name>.<table-name> if you don't provide --transform <transform-name>.

hdxcli job batch --project <project-name> --table <table-name> --transform <transform-name> ingest <job-name> <job-settings>.json

Delete

hdxcli job batch delete <job-name>

Retry

hdxcli job batch retry <job-name>

Cancel

hdxcli job batch cancel <job-name>

Show

hdxcli job batch --job <job-name> show

Settings

Display all settings
hdxcli job batch --job <job-name> settings
Display single setting
hdxcli job batch --job <job-name> settings <setting-name>
Modify setting
hdxcli job batch --job <job-name> settings <setting-name> <new-value>

Alter

List

hdxcli job alter list

In addition, you can add the following options to filter the result of the alter job list command:

  --status TEXT   Filter alter jobs by status.
  --project TEXT  Filter alter jobs by project name.
  --table TEXT    Filter alter jobs by table name.

For example, to filter by status running, you would use:

hdxcli job alter list --status running

Create

There are two ways to create an alter job, each serving a different purpose. The update command allows you to modify the value of a column based on a specified where clause. On the other hand, as you might expect, the delete command provides a way to remove rows based on a where clause. After creating these alter jobs, you must perform a commit on the created alter job to apply the modifications.

Update
hdxcli job alter create update --table <project-name>.<table-name> --column <column-name> --value <value> --where <where-clause>
Delete
hdxcli job alter create delete --table <project-name>.<table-name> --where <where-clause>

Commit

hdxcli job alter commit <job-name>

Cancel

hdxcli job alter cancel <job-name>

Retry

hdxcli job alter retry <job-name>

Show

hdxcli job alter show <job-name>

Delete

hdxcli job alter delete <job-name>

Purge Jobs

This command purge all batch jobs in your org.

$ hdxcli job purgejobs
Please type 'purge all jobs' to proceed: purge all jobs  
All jobs purged

Stream

Ingest

hdxcli stream --project <project-name> --table <table-name> --transform <transform-name> ingest <data-file> 

Sources

Kinesis / Kafka / SIEM

The command structure of these resources is the same, it's only necessary to replace ‘kinesis’ with ‘kafka’ or ‘siem’.

List

hdxcli sources kinesis --project <project-name> --table <table-name> list

Create

The field ‘name’ in settings will be replaced by <source-name>.

hdxcli sources kinesis --project <project-name> --table <table-name> create <source_settings>.json <source-name>

Delete

hdxcli sources kinesis --project <project-name> --table <table-name> delete <source-name>

Show

hdxcli sources kinesis --project <project-name> --table <table-name> --source <source-name> show

Settings

Display All Settings
hdxcli sources kinesis --project <project-name> --table <table-name> --source <source-name> settings
Display single setting
hdxcli sources kinesis --project <project-name> --table <table-name> --source <source-name> settings <setting-name>
Modify setting
hdxcli sources kinesis --project <project-name> --table <table-name> --source <source-name> settings <setting-name> <new-value>

Pool

List

hdxcli pool list

Create

pool-service needs to contain the name of the service (query-head, query-peer, etc. For more information see Hydrolix API Reference). pool-name is the name of the pool, that means the field ‘name’ in settings will be replaced by pool-name.
These options aren't required since they have default values. Override the defaults with these options:

Options

OptionTypeDescription
-r, --replicasintegerNumber of replicas for the workload (default: 1)
-c, --cpufloatDedicated CPU allocation for each replica (default: 0.5)
-m, --memoryfloatDedicated memory allocation for each replica, expressed in Gi (default: 0.5)
-s, --storagefloatStorage capacity for each replica, expressed in Gi (default: 0.5)
hdxcli pool create <pool-service> <pool-name>

An example modifying the default options would be:

hdxcli pool create <pool-service> <pool-name> -r 5 -c 1 -m 1 -s 2

Delete

hdxcli pool delete <pool-name>

Show

hdxcli pool --pool <pool-name> show

Settings

Display all settings
hdxcli pool --pool <pool-name> settings
Display single setting
hdxcli pool --pool <pool-name> settings <setting-name>
Modify setting
hdxcli pool --pool <pool-name> settings <setting-name> <new-value>

Dictionary

List

hdxcli dictionary --project <project-name> list

Create

<dictionary-settings> must contain all required fields (for more information on the required specifications, see the Hydrolix API Reference). <dictionary-filename> is the name of the dictionary file previously uploaded to Hydrolix. The field ‘name’ in settings will be replaced by <dictionary-name>.

hdxcli dictionary --project <project-name> create <dictionary-settings>.json <dictionary-filename> <dictionary-name>

Delete

hdxcli dictionary --project <project-name> delete <dictionary-name>

Show

hdxcli dictionary --project <project-name> --dictionary <dictionary-name> show

Settings

Display all settings

hdxcli dictionary --project <project-name> --dictionary <dictionary-name> settings

Display single setting

hdxcli dictionary --project <project-name> --dictionary <dictionary-name> settings <setting-name>

Modify setting

hdxcli dictionary --project <project-name> --dictionary <dictionary-name> settings <setting-name> <new-value>

Migrate

hdxcli dictionary --project <project-name> --dictionary <dictionary-name> migrate <target-project-name> <new-dictionary-name> --target-profile <profile-name>

Dictionary Files

List

hdxcli dictionary --project <project-name> files list

Upload

hdxcli supports two formats for <dictionary-file-to-upload>: JSON and CSV.

If the format is ‘json’ you don’t need to specify it.

hdxcli dictionary --project <project-name> files upload <dictionary-file-to-upload>.json <dictionary-filename>

Otherwise, if the format is ‘csv’ you must use -t verbatim or --body-from-file-type verbatim.

hdxcli dictionary --project <project-name> files upload -t verbatim <dictionary-file-to-upload>.csv <dictionary-filename>

Delete

hdxcli dictionary --project <project-name> files delete <dictionary-filename>

Function

List

hdxcli function --project <project-name> list

Create

There are two ways to create a new function:

  • Passing the function on the command line using -s or --inline-sql option:
hdxcli function --project <project-name> create -s '<function>' <function-name>
  • Using a JSON file with the function settings via -f or --sql-from-file option. The field ‘name’ in settings will be replaced by <function-name>:
hdxcli function --project <project-name> create -f <function-settings>.json <function-name>

Delete

hdxcli function --project <project-name> delete <function-name>

Show

hdxcli function --project <project-name> --function <function-name> show

Settings

Display all settings

hdxcli function --project <project-name> --function <function-name> settings

Display single setting

hdxcli function --project <project-name> --function <function-name> settings <setting-name>

Modify setting

hdxcli function --project <project-name> --function <function-name> settings <setting-name> <new-value>

Migrate

hdxcli function --project <project-name> --function <function-name> migrate <target-project-name> <new-function-name> --target-profile <profile-name>

Storage

List

hdxcli storage list

Create

There are two available methods to create a new storage: using a file containing the storage configuration or passing the configuration via the command line.

  • Using settings file (-f, --settings-filename):
hdxcli storage create <storage-name> --settings-filename <storage-settings>.json

Passing the configuration via the command line:

hdxcli storage create <storage-name> --bucket-path <bucket-path> --bucket-name <bucket-name> --region <region> --cloud <cloud>

Delete

hdxcxli storage delete <storage-name>

Show

hdxcli storage --storage <storage-name> show

Settings

Display all settings

hdxcli storage --storage <storage-name> settings

Display single setting

hdxcli storage --storage <storage-name> settings <setting-name>

Modify setting

hdxcli storage --storage <storage-name> settings <setting-name> <new-value>

Credential

List

Displays a list of all credentials.

hdxcli credential list

List-types

Displays the available credential types.

hdxcli credential list-types

Create

Creates a new credential.

hdxcli credential create <credential-name> <credential-type>

Depending on the credential-type, the required credentials will be requested interactively.
Alternatively, you can provide all the necessary details in a single command line by passing a JSON string to the --details option.
For example:

hdxcli credential create <credential-name> <credential-type> --details '{"key1": "value1", "key2": "value2"}'

Delete

Deletes a credential.

hdxcxli credential delete <credential-name>

Show

Displays details of a specific credential.

hdxcli credential --credential <credential-name> show

Settings

Display all settings

Shows all settings associated with a specific credential.

hdxcli credential --credential <credential-name> settings

Display single setting

Shows the value of a specific setting for a credential.

hdxcli credential --credential <credential-name> settings <setting-name>

Query-option

Query options operate at org, project or table level. For more information, refer to Query Options Precedence.

List

hdxcli query-option list

Set

hdxcli query-option set <query-option-name> <query-option-value>

An option (--from-file) is also available to configure a bunch of query options at once.

hdxcli query-option set --from-file <query-option-file>.json

This query option file must be a JSON file with the following structure:

{
  '<query-option-name>': <query-option-value>,
  ...
}

Unset

To unset a query option, one only needs to use the following command:

hdxcli query-option unset <query-option-name>

Additionally, there is an option --all that unsets all query options.

Check-health

This command checks the integrity of the transforms. Upon completion, it will print a brief report to the standard output.

hdxcli check-health [PROJECT_NAME] [TABLE_NAME]

Both project_name and table_name are optional. If none of them are provided, the validation will run on every transform the user has access to. Otherwise, if project_name is specified, the validation will be limited to the transforms within that project. The same applies to table_name.

Repair

The --repair option attempts to automatically fix detected issues in transforms and autoviews. If a conflict is found, the tool will try to repair it when possible. Otherwise, it will notify the user about the issue.

Usage:

hdxcli check-health --repair [PROJECT_NAME] [TABLE_NAME]

Notes:

  • If no project or table is provided, the tool will analyze and attempt to repair all transforms accessible to the user.
  • Repairs are limited to certain known conflicts, such as datatype or indexing mismatches between the transform and the autoview.

Integration

List

Allows you to list all transforms available in the repository.

hdxcli integration transform list

Apply

With this command you can create a new transform using the settings of a transform hosted in the repository.

hdxcli integration transform --project <project-name> --table <table-name> apply <public-transform-name> <transform-name>

Show

hdxcli integration transform show <public-transform-name>

Migrate

Migrate data table within the same cluster:

hdxcli migrate <source-project-name>.<source-table-name> <target-project-name>.<target-table-name>

Migrate data table to another cluster, using --target-profile:

hdxcli migrate <source-project-name>.<source-table-name> <target-project-name>.<target-table-name> --target-profile <profile-name>

Or passing cluster information:

hdxcli migrate <source-project-name>.<source-table-name> <target-project-name>.<target-table-name> --target-hostname <hostname> --target-username <username> --target-password <password> --target-uri-scheme <http/s>

To learn more about migrate command, see Data Migration Command for Hydrolix Tables.

Textual User Interface

To activate the hdxcli user interface, do as follows:

hdxcli tui

Version

hdxcli version