URI definition for Snowflake follows this standard:

Identifier fragments:

  • Namespace: snowflake://{organization name}-{account name}
    • Scheme = snowflake
    • Authority = {organization name}-{account name}
  • Unique name: {database}.{schema}.{table}

URI format:

  • snowflake://{organization name}-{account name}/{database}.{schema}.{table}

Alternative identifier for Snowflake:

  • Snowflake was initially making user identify their account using account identifier looking like that xyz12345.eu-west-3.aws. Because of that you are allowed to define your Snowflake authority using this account identifier in Sifflet as well.
  • It would make the URI look like this format: snowflake://{account locator}/{database}.{schema}.{table}

Parameters limitations:

  • organization name must start with a lowercase or uppercase letter and include only lowercase and uppercase letters and numbers (regex: [a-zA-Z][a-zA-Z0-9]+)
  • account name must start with a lowercase or uppercase letter and include only lowercase and uppercase letters, numbers, underscores and dashes (regex: [a-zA-Z][a-zA-Z0-9_-]+)
  • account name must start with a lowercase or uppercase letter and include only lowercase and uppercase letters, numbers, dots and dashes (regex: [a-zA-Z][a-zA-Z0-9.-]+)
  • database, schema and table can have two format, following Snowflake naming standards: quoted format and unquoted format
    • unquoted identifier must include only lowercase and uppercase letters, numbers, underscores and dollars
    • quoted identifier needs to be quoted using double quotes and must include only characters included in the unicode range U+0001 to U+FFFF. If a double quote character is present in the name, it needs to be escaped with another double quote character in front of it.

Examples:

  • snowflake://xyz12345.eu-central-1/DATABASE.SCHEMA.TABLE
  • snowflake://sifflet-aws-us-east-2/"data.base my"."sCHE.MA my"."TA.BLE my"
  • snowflake://sifflet-aws-us-east-2/"♞"."♛"."♔"