Connecting Oracle BI to the Snowflake Data Cloud

Why use Oracle BI with Snowflake?

A number of my customers have had very positive experiences using Oracle Business Intelligence (also known as Oracle Analytics Server, Oracle Analytics Cloud, and OBIEE) with the Snowflake Data Cloud. Oracle BI has always focused on leveraging the power of SQL, pushing as much logic as possible to back-end relational databases. Having seen the SQL generated from a variety of BI tools on the market, in my opinion, it generates some of the best SQL for Snowflake because of its rich support for more advanced SQL capabilities like common table expressions and analytic window functions. Some competing BI technologies prefer to ingest data into their own engine rather than push advanced logic, such as time series formulas, to Snowflake. It also has very robust support for aggregate tables and this capability works very well with Snowflake’s materialized views. Oracle BI also supports Snowflake-specific features like dynamically selecting virtual warehouses to allow different groups of users to automatically use larger or smaller compute resources for the same dashboard.

In fact, because Oracle BI pushes down so much of the heavy lifting to Snowflake, migrating from on-premise databases to Snowflake can provide a remarkable improvement in how well Oracle BI performs. It is not uncommon for reports that took minutes on legacy row-oriented databases to take seconds on Snowflake’s columnar database. Numerous times over the years I have had to set hard limits in Oracle BI on how long queries could run and how many rows could be returned because otherwise, the back-end database would bog down or begin to queue queries during peak periods of the day. I have even had this issue with large on-premise Teradata and Vertica database clusters. However, with Snowflake and Oracle BI during peak usage, such queries will instead trigger Snowflake to automatically spin up additional compute virtual warehouses for brief periods of time and dashboards will take roughly the same amount of time all day. To learn more about how the Snowflake Data Cloud scales data warehouses and data lakes, I recommend the free Snowflake Hands-On Essentials on-demand courses.

Oracle’s Support for the Snowflake Data Cloud

The current versions of Oracle BI, Oracle Analytics Server 5.5 to 5.9, officially support Snowflake as both a data set and in BI semantic data models (typically referred to by their file extension, RPD). For OAS, it is still necessary to install the current Snowflake JDBC driver, but the RPD setup is very simple since users can now choose “Snowflake” as a database type. However, several Snowflake customers have also successfully set up OBIEE 12c to query Snowflake and the rest of this article should help new customers to reproduce that success.

Snowflake has both an ODBC and JDBC driver available. Oracle BI 12c and Oracle Analytics Server support databases with ODBC and JDBC drivers. The JDBC drivers are recommended because they are what OAS supports for Snowflake. They are less prone to environment-specific issues. They should work on any operating system supported by Oracle BI. The only requirement for the Snowflake JDBC driver is that your Weblogic server run JDK version 1.8 or higher.

Installing the Snowflake JDBC driver (OAS and OBIEE 12c)

Download the JDBC Driver and copy it to the Oracle BI server

You can download the current version of the JDBC driver from the Maven repository

This file should be copied to the $DOMAIN_HOME/lib folder where Oracle BI has been installed. This path will look something like this:

/home/obi/Oracle/Middleware/Oracle_Home/user_projects/domains/obi12dev/lib

It is recommended to fully restart Weblogic, not just Oracle BI, before proceeding. Also, to perform updates to the JDBC driver in the future, you will only need to stop Weblogic, replace the jar with the newer version, and restart Weblogic.

Set up a Java Datasource in Weblogic

  • Please review the Snowflake documentation for the JDBC driver

https://docs.snowflake.com/en/user-guide/jdbc-configure.html

  • Log in to the Weblogic console UI for the server (see Oracle documentation for details)
  • Click on “Data Sources” under “Services” on the home screen
Picture of where to find Data Sources in Weblogic Console
Where to find Data Sources in Weblogic Console
  • Click on the button to Lock and Edit the settings
  • Click “New” and “Generic Data Source”

Specify Datasource Settings as follows:

Name: Anything you like, such as “Snowflake

JNDI Name: It is typical to prefix the name with jndi/, such as “jndi/snowflake”. You will need this setting later when configuring the RPD

Database Type: Other

Database Username / Password: Same login you use to log into the Snowflake web UI

JDBC Driver Class: net.snowflake.client.jdbc.SnowflakeDriver

JDBC URL: You specify your Snowflake account using this syntax. It should look like the beginning of the URL you use to access Snowflake’s web UI.

jdbc:snowflake://<account_name>.snowflakecomputing.com:443/

Properties: Your list of properties can vary (see documentation for all options) but should likely include:

user=YOUR_SNOWFLAKE_USER
CLIENT_SESSION_KEEP_ALIVE=true
role=YOUR_SNOWFLAKE_ROLE
db=YOUR_DEFAULT_DATABASE
schema=YOUR_DEFAULT_SCHEMA
warehouse=YOUR_DEFAULT_WAREHOUSE

Also, if you are using the JDBC driver on AIX, you need to specify the following property because AIX does not support some of the more advanced Apache Arrow features in the JDBC driver.

jdbc_query_result_format=json

Deployment Targets: Check the box next to “bi_cluster” and the radio button “All servers in the cluster”

  • Finally, save and commit your changes to Weblogic
  • You should restart Weblogic again to make the data source available to Oracle BI

Adding Snowflake to the Oracle BI RPD

Before setting up your RPD you must first load Java Datasources. In the Oracle BI Administration Tool, select “File” and “Load Java Datasources”. In OAS, you will receive the following warning when you try to create a Connection Pool if you have skipped this step.

You will need to provide the hostname, port, and credentials for your OBIEE server; these should be similar to the URL and credentials you use to login to the OBIEE UI.

You should now create a new Database in the physical layer of your RPD. In OAS you can select Snowflake as the Database Type.

In OBIEE 12c, you can select ODBC Advanced as the database type. This choice affects which Database Features are enabled in the next tab by default, but we will customize these options in the next section.

Next, create a new Database Connection Pool using these settings

Call Interface: OBIEE 12c — JDBC (JNDI), OAS — Default

Require fully qualified table names: Checked

Data Source Name:

http://bi-server.hostname.net:9502/obiee/javads/jndi/snowflake

The last two parts of the URL should match the JNDI name you set up earlier in Weblogic. You can test that you have the correct URL by trying it first in your web browser and making sure you don’t receive any nasty error messages like 404, Page Not Found or 500, Internal Server Error.

User Name: This should be a Weblogic user, not a Snowflake user

Password: Weblogic user password

Once the connection pool is set up, right-click on the connection pool and import metadata to load tables/views into the RPD from Snowflake. Each database in Snowflake will be set up in RPD as a separate catalog under the same connection pool with its own schemas. You want to use the same connection pool for multiple catalogs/databases because Snowflake is designed to allow joins between different databases and schemas. If you are using OAS, you can now build out your model and deploy your RPD normally. If you are using OBIEE 12c, you will need to continue with the instructions for customizing the Database Features tab we saw earlier.

Recommended Step — Add an additional ODBC Connection Pool for Importing Metadata

Although it is often possible to import tables through the JDBC connection pool, some customers run into issues where the Oracle BI Administration client hangs when trying to import tables. This is an issue that I have seen using the tool with other databases as well. To avoid such issues, you can add an additional connection pool to your physical layer that utilizes the ODBC driver. In fact, I recommend having three connection pools: a JDBC connection pool for reports, a JDBC connection pool for initialization blocks, and a third ODBC connection pool strictly for importing metadata in the Administration Client. Oracle BI will automatically use the first connection pool under a database for reports and you can select your initialization block connection pool when you set up an initialization block.

Step 1: Download and install the Snowflake 64-bit ODBC drivers for Windows

You can find the latest version here and additional instructions for installing the driver here.

Step 2: Launch the 64-bit ODBC control panel and add a System DSN for Snowflake

Be sure to create a System DSN, not a User DSN or you will get an error when you try to import metadata in step 4.

Enter your connection information for Snowflake and take note of the Data Source name in the first field for later. Also make sure to use the test button to avoid any issues later with invalid settings.

Step 3: Add the connection to your RPD

Your Call interface should be ODBC and your data source name should match the name you used earlier in the ODBC control panel. The username and password on this screen should be a Snowflake username and password, not the Weblogic username and password you used for your JDBC-based connection pool.

Step 4: Import Metadata using your new Connection Pool

OBIEE 12c — Extra Step, Setting RPD Database Features

OBIEE 12c has ~90 connection definitions for many different data sources that you can select in their semantic layer (RPD) but not one exclusively for Snowflake. These definitions control the Database Features that are enabled by default. Enabled/disabled Database Features shape the generated SQL, influencing the degree of pushdown processing. Selecting the wrong connection type may result in SQL with an invalid syntax for Snowflake or may not push down processing to Snowflake resulting in much larger datasets being processed on the OBIEE server.

Oracle doesn’t have public documentation on how all of these database features work when enabled and it is necessary to experiment a bit. This is not unique to Snowflake and tuning these parameters is frequently a task for customers when implementing OBIEE, even when selecting one of the predefined connection types. The positive aspect of this task is that customers can enable push-down optimizations themselves as features are added to databases. It also allows OBIEE to work with nearly any SQL database with a JDBC/ODBC driver.

With the release of OAS 5.5–5.9, we can also use its DBFeatures.default file as our starting point for which features should also work with OBIEE 12c.

Sample Customization of Database Features

Below is a list of the settings used by OAS and an example of how one of Snowflake’s customers has set their database features. Your features may be slightly different than this list and that is ok.

The following Snowflake documentation is also useful for determining what SQL features are supported:

Since the customer pictures below were taken, I also recommend testing these additional features that are enabled by default for Snowflake in OAS:

DATE_TIME_LITERAL_SUPPORTED
TIMESTAMP_DIFF_SUPPORTED
NULLIF_SUPPORTED
NTILE_SUPPORTED
MEDIAN_SUPPORTED
DENSE_RANK_SUPPORTED
ROWNUM_LIMIT_SUPPORTED
COALESCE_SUPPORTED

Snowflake Features from Oracle Analytics Server 6.4.0

3/28/2022 UPDATE: Oracle has made a few minor changes to the list of parameters since earlier versions of OAS. The list below is up to date as of OAS/OAC version 6.4.0. I will highlight in bold the rows below that have been modified to help customers who have already applied these checkboxes. Also, Oracle has updated IS_CONCAT_NULL_RETURNS_NULL = Yes; to IS_CONCAT_NULL_RETURNS_NULL = No; but I believe this is a mistake so I have not updated that parameter below.

[ DATA_SOURCE_FEATURE = SNOWFLAKE ]
MAX_TABLES_IN_SELECT = 1024;
MAX_COLUMNS_IN_GROUP_BY = 1024;
MAX_COLUMNS_IN_ORDER_BY = 1024;
MAX_COLUMNS_IN_INDEX = 30;
PERF_PREFER_COMPRESSION = No;
IS_COMPRESSION_SUPPORTED = No;
IS_EHCC_SUPPORTED = No;
IS_INMEMORY_SUPPORTED = No;
CONVERT_BIG_INT_BITMASK = 0x00000000;
CONVERT_BINARY_BITMASK = 0x00000000;
CONVERT_BIT_BITMASK = 0x00000000;
CONVERT_CHAR_BITMASK = 0x000208FE;
CONVERT_DATE_BITMASK = 0x00000000;
CONVERT_DECIMAL_BITMASK = 0x00000001;
CONVERT_DOUBLE_BITMASK = 0x000031FF;
CONVERT_FLOAT_BITMASK = 0x000031FF;
CONVERT_INTEGER_BITMASK = 0x00020001;
CONVERT_LONG_VAR_BINARY_BITMASK = 0x00000000;
CONVERT_LONG_VAR_CHAR_BITMASK = 0x00000000;
CONVERT_NUMERIC_BITMASK = 0x00000001;
CONVERT_REAL_BITMASK = 0x00000001;
CONVERT_SMALL_INT_BITMASK = 0x00020001;
CONVERT_TIME_BITMASK = 0x00000000;
CONVERT_TIMESTAMP_BITMASK = 0x00002019;
CONVERT_TINY_INT_BITMASK = 0x00020001;
CONVERT_VAR_BINARY_BITMASK = 0x00000001;
CONVERT_VAR_CHAR_BITMASK = 0x00000000;
IS_LEFT_OUTER_JOIN_SUPPORTED = Yes ;
IS_RIGHT_OUTER_JOIN_SUPPORTED = Yes ;
IS_FULL_OUTER_JOIN_SUPPORTED = Yes ;
IS_NESTED_OUTER_JOIN_SUPPORTED = Yes ;
IS_DERIVED_TABLES_SUPPORTED = Yes ;
IS_CORRELATION_NAME_SUPPORTED = Yes;
IS_UNION_SUPPORTED = Yes ;
IS_UNION_ALL_SUPPORTED = Yes ;
IS_EXCEPT_ALL_SUPPORTED = No ;
IS_EXCEPT_SUPPORTED = Yes ;
IS_INTERSECT_ALL_SUPPORTED = No ;
IS_INTERSECT_SUPPORTED = Yes ;
IS_PREDICATE_SCALAR_SUBQUERY_SUPPORTED = Yes ;
IS_VALUE_SUBQUERY_SUPPORTED = Yes ;
IS_CORRELATED_SUBQUERY_SUPPORTED = Yes;
IS_COMPARISON_SUBQUERY_SUPPORTED = Yes;
IS_EXISTS_SUBQUERY_SUPPORTED = Yes;
IS_IN_SUBQUERY_SUPPORTED = Yes;
IS_QUANTIFIED_SUBQUERY_SUPPORTED = Yes;
IS_SUBQUERY_IN_CASE_SUPPORTED = Yes;
IS_COUNT_SUPPORTED = Yes ;
IS_COUNT_DISTINCT_SUPPORTED = Yes ;
IS_COUNT_STAR_SUPPORTED = Yes ;
IS_SUM_SUPPORTED = Yes ;
IS_AVG_SUPPORTED = Yes ;
IS_MIN_SUPPORTED = Yes ;
IS_MAX_SUPPORTED = Yes ;
IS_FIRST_SUPPORTED = No ;
IS_LAST_SUPPORTED = No ;
IS_RANK_SUPPORTED = Yes ;
IS_DENSE_RANK_SUPPORTED = Yes;
IS_PERCENTILE_SUPPORTED = No ;
IS_MOVING_AVG_SUPPORTED = No ;
IS_TOPN_SUPPORTED = Yes ;
IS_BOTTOMN_SUPPORTED = Yes ;
IS_RUNNING_COUNT_SUPPORTED = No;
IS_GROUP_BY_SUPPORTED = Yes;
IS_GROUP_BY_EXPR_SUPPORTED = Yes ;
IS_GROUP_BY_GROUPING_SETS_SUPPORTED = Yes;
IS_HAVING_SUPPORTED = Yes ;
IS_CASE_LOOK_UP_SUPPORTED = Yes ;
IS_CASE_IF_SUPPORTED = Yes ;
IS_NULLIF_SUPPORTED = Yes;
IS_DATE_LITERAL_SUPPORTED = Yes ;
IS_TIME_LITERAL_SUPPORTED = Yes ;
IS_DATE_TIME_LITERAL_SUPPORTED = Yes ;
IS_INTERVAL_LITERAL_SUPPORTED = No ;
IS_CALENDAR_EXTRACT_DAY_SUPPORTED = Yes ; IS_CALENDAR_EXTRACT_DAY_OF_QUARTER_SUPPORTED = Yes ;
IS_CALENDAR_EXTRACT_DAY_OF_YEAR_SUPPORTED =Yes ;
IS_CALENDAR_EXTRACT_HOUR_SUPPORTED = Yes ;
IS_CALENDAR_EXTRACT_MINUTE_SUPPORTED = Yes ;
IS_CALENDAR_EXTRACT_MONTH_SUPPORTED = Yes ;
IS_CALENDAR_EXTRACT_MONTH_OF_QUARTER_SUPPORTED = No ;
IS_CALENDAR_EXTRACT_QUARTER_OF_YEAR_SUPPORTED = Yes ;
IS_CALENDAR_EXTRACT_SECOND_SUPPORTED = Yes ;
IS_CALENDAR_EXTRACT_WEEK_OF_QUARTER_SUPPORTED = No ;
IS_CALENDAR_EXTRACT_WEEK_OF_YEAR_SUPPORTED = Yes ;
IS_CALENDAR_EXTRACT_YEAR_SUPPORTED = Yes ;
IS_CALENDAR_EXTRACT_WEEK_OF_MONTH_SUPPORTED = No ;
IS_CALENDAR_EXTRACT_SHORT_NAME_OF_MONTH_SUPPORTED = Yes ;
IS_CALENDAR_EXTRACT_LONG_NAME_OF_MONTH_SUPPORTED = No ;
IS_CALENDAR_EXTRACT_DAY_OF_WEEK_SUPPORTED = Yes ;
IS_CALENDAR_EXTRACT_SHORT_NAME_OF_DAY_SUPPORTED = Yes ;
IS_CALENDAR_EXTRACT_LONG_NAME_OF_DAY_SUPPORTED = No ;
IS_FISCAL_EXTRACT_DAY_SUPPORTED = No ;
IS_FISCAL_EXTRACT_DAY_OF_QUARTER_SUPPORTED = No ;
IS_FISCAL_EXTRACT_DAY_OF_YEAR_SUPPORTED = No ;
IS_FISCAL_EXTRACT_HOUR_SUPPORTED = No ;
IS_FISCAL_EXTRACT_MINUTE_SUPPORTED = No ;
IS_FISCAL_EXTRACT_MONTH_SUPPORTED = No ;
IS_FISCAL_EXTRACT_MONTH_OF_QUARTER_SUPPORTED = No ;
IS_FISCAL_EXTRACT_QUARTER_OF_YEAR_SUPPORTED = No ;
IS_FISCAL_EXTRACT_SECOND_SUPPORTED = No ;
IS_FISCAL_EXTRACT_WEEK_OF_QUARTER_SUPPORTED = No ;
IS_FISCAL_EXTRACT_WEEK_OF_YEAR_SUPPORTED = No ;
IS_FISCAL_EXTRACT_YEAR_SUPPORTED = No ;
IS_FISCAL_EXTRACT_WEEK_OF_MONTH_SUPPORTED = No ;
IS_FISCAL_EXTRACT_SHORT_NAME_OF_MONTH_SUPPORTED = No ;
IS_FISCAL_EXTRACT_LONG_NAME_OF_MONTH_SUPPORTED = No ;
IS_FISCAL_EXTRACT_DAY_OF_WEEK_SUPPORTED = No ;
IS_FISCAL_EXTRACT_SHORT_NAME_OF_DAY_SUPPORTED = No ;
IS_FISCAL_EXTRACT_LONG_NAME_OF_DAY_SUPPORTED = No ;
IS_CHAR_LENGTH_SUPPORTED = Yes ;
IS_BIT_LENGTH_SUPPORTED = Yes ;
IS_OCTET_LENGTH_SUPPORTED = Yes ;
IS_POSITION_SUPPORTED = Yes ;
IS_LOCATE_SUPPORTED = Yes ;
IS_ASCII_SUPPORTED = Yes ;
IS_LENGTH_SUPPORTED = Yes ;
IS_EXP_SUPPORTED = Yes ;
IS_POWER_SUPPORTED = Yes ;
IS_SQRT_SUPPORTED = Yes ;
IS_CEILING_SUPPORTED = Yes ;
IS_FLOOR_SUPPORTED = Yes ;
IS_ROUND_SUPPORTED = Yes ;
IS_TRUNCATE_SUPPORTED = Yes ;
IS_SIGN_SUPPORTED = Yes ;
IS_ABS_SUPPORTED = Yes ;
IS_MOD_SUPPORTED = Yes ;
IS_MODF_SUPPORTED = No ;
IS_RAND_SUPPORTED = No ;
IS_LOG_SUPPORTED = Yes ;
IS_LOG10_SUPPORTED = No ;
IS_PI_SUPPORTED = Yes ;
IS_DEGREES_SUPPORTED = Yes ;
IS_RADIANS_SUPPORTED = Yes ;
IS_SIN_SUPPORTED = Yes ;
IS_COS_SUPPORTED = Yes ;
IS_TAN_SUPPORTED = Yes ;
IS_COT_SUPPORTED = Yes ;
IS_ASIN_SUPPORTED = Yes ;
IS_ACOS_SUPPORTED = Yes ;
IS_ATAN_SUPPORTED = Yes ;
IS_ATAN2_SUPPORTED = Yes ;
IS_SINH_SUPPORTED = Yes ;
IS_COSH_SUPPORTED = Yes ;
IS_TANH_SUPPORTED = Yes ;
IS_TRIM_SUPPORTED = Yes ;
IS_LTRIM_SUPPORTED = Yes;
IS_RTRIM_SUPPORTED = Yes;
IS_UPPER_SUPPORTED = Yes ;
IS_LOWER_SUPPORTED = Yes ;
IS_CONCAT_SUPPORTED = Yes ;
IS_SUBSTRING_SUPPORTED = Yes ;
IS_REPLACE_SUPPORTED = Yes ;
IS_INSERT_SUPPORTED = Yes ;
IS_LEFT_SUPPORTED = Yes ;
IS_RIGHT_SUPPORTED = Yes ;
IS_SPACE_SUPPORTED = Yes ;
IS_REPEAT_SUPPORTED = Yes ;
IS_CHAR_SUPPORTED = Yes ;
IS_TIMESTAMP_ADD_SUPPORTED = Yes ;
IS_TIMESTAMP_DIFF_SUPPORTED = Yes ;
IS_DATABASE_SUPPORTED = No ;
IS_IFNULL_SUPPORTED = Yes ;
IS_USER_SUPPORTED = No ;
IS_CONVERT_SUPPORTED = No ;
IS_CONCAT_NULL_RETURNS_NULL = Yes;
IS_IS_NULL_SUPPORTED = Yes ;
IS_BETWEEN_SUPPORTED = Yes ;
IS_LIKE_SUPPORTED = Yes ;
IS_LIKE_ESCAPE_CLAUSE_SUPPORTED = Yes ;
IS_IN_SUPPORTED = Yes ;
IS_MULTICOLUMN_IN_SUPPORTED = Yes ;
IS_MULTIPLE_STATEMENTS_PER_CONNECTION_SUPPORTED = Yes ;
IS_NULL_VALUES_SORT_FIRST = Yes ;
IS_NULLS_SORT_DIRECTION_IN_ORDERBY_SUPPORTED = Yes;
IS_CAST_SUPPORTED = Yes;
IS_PARAMETERS_IN_HAVING_CLAUSE_SUPPORTED = No;
IDENTIFIER_QUOTE_CHAR = '';
IS_ORDERBY_SUPPORTED = Yes ;
IS_DISTINCT_SUPPORTED = Yes ;
IS_EXPRESSIONS_IN_ORDERBY_SUPPORTED = Yes;
IS_ORDER_BY_COLUMNS_IN_SELECT_SUPPORTED = Yes;
FRACTIONAL_SECOND_PRECISION = 3;
MAX_ENTRIES_PER_IN_LIST = 1000;
MAX_PARAMETERS_PER_DRIVE_JOIN = 100;
MAX_QUERIES_PER_DRIVE_JOIN = 200;
PERF_PREFER_IN_LISTS = Yes ;
IS_SQL89_COLUMN_ALIAS_CONFORMANCE_SUPPORTED = No ;
IS_STDDEV_SAMP_DISTINCT_SUPPORTED = Yes ;
IS_STDDEV_SAMP_SUPPORTED = Yes ;
IS_CREATE_AS_SELECT_SUPPORTED = Yes ;
IS_INSERT_SELECT_SUPPORTED = Yes ;
IS_SUBTOTALLING_SUPPORTED = Yes ;
IS_ROWNUM_SUPPORTED = Yes;
IS_WITH_CLAUSE_SUPPORTED = Yes;
IS_CREATE_VIEW_SUPPORTED = Yes ;
IS_QUALIFIED_DATA_REFERENCE_SUPPORTED = No;
IS_DUAL_TABLE_SUPPORTED = Yes;
IS_NESTED_ORDERBY_SUPPORTED= Yes;
IS_ROWNUM_LIMIT_SUPPORTED = Yes;
IS_ROWNUM_OFFSET_SUPPORTED = Yes;
IS_COALESCE_SUPPORTED = Yes;COMMENT_START = '/*';
COMMENT_END = '*/';
PERF_PREFER_MINIMAL_WITH_USAGE = No;
PERF_PREFER_INTERNAL_STITCH_JOIN = No;
PERF_PREFER_NO_COMMON_QUERY_FACTORING = Yes;
PREFERS_NATIVE_NULLS_EQUAL_COMPARISON = No;
MIN_BULK_FETCH_BUFFER_SIZE = 32768 ;
MAX_BULK_FETCH_BUFFER_SIZE = 3276800 ;
DEFAULT_BULK_FETCH_ROW_COUNT = 1000 ;
IS_ADD_SUPPORTED = Yes;
IS_SUBTRACT_SUPPORTED = Yes;
IS_MULTIPLY_SUPPORTED = Yes;
IS_DIVIDE_SUPPORTED = Yes;
IS_UNARY_MINUS_SUPPORTED = Yes;
IS_STRING_LITERAL_SUPPORTED = Yes;
IS_INTEGER_LITERAL_SUPPORTED = Yes;
IS_FLOAT_LITERAL_SUPPORTED = Yes;
IS_EQUALITY_SUPPORTED = Yes;
IS_LESS_THAN_SUPPORTED = Yes;
IS_GREATER_THAN_SUPPORTED = Yes;
IS_LESS_EQUAL_THAN_SUPPORTED = Yes;
IS_GREATER_EQUAL_THAN_SUPPORTED = Yes;
IS_NOT_EQUAL_SUPPORTED = Yes;
IS_AND_SUPPORTED = Yes;
IS_OR_SUPPORTED = Yes;
IS_NOT_SUPPORTED = Yes;
IS_NTILE_SUPPORTED = Yes;
IS_MEDIAN_SUPPORTED = Yes;
IS_STDDEV_POP_SUPPORTED = Yes;
IS_STDDEV_POP_DISTINCT_SUPPORTED = Yes;
IS_TIME_SERIES_AGO_SUPPORTED = No;
IS_TIME_SERIES_TODATE_SUPPORTED = No;
IS_IS_DESCENDANT_SUPPORTED = No;
IS_IS_LEAF_SUPPORTED = No;
IS_LITERAL_IN_PROJECTION_SUPPORTED = Yes;
IS_NUMERIC_SUPPORTED = Yes;
IS_ANCESTOR_DIMENSION_PROPERTY_SUPPORTED = No;
IS_SUBSELECT_SUPPORTED = Yes;
IS_NLSSORT_SUPPORTED = No;

Sample Configuration Screens

--

--

Dan Flippo
Snowflake Builders Blog: Data Engineers, App Developers, AI/ML, & Data Science

Sr Solutions Architect @Snowflake; SME: dbt, Kafka, Oracle BI & DB, StreamSets, Vertica. Views & opinions are my own and do not represent those of my employer.