Writing Scala Code
Here you can find how to use Scala and Scala with Snowpark API.
Follow the steps below or check the tutorial: Deploy Code to Snowflake using the Snowpark API.

Do you want to write Scala code?

  1. 1.
    First, let's create a new project in the BlackDiamond Studio web portal by clicking the + button.
2. Name your project.
3. Set up the project repository. You can create a new repository in BlackDiamond Studio powered by GitLab or connect your existing GitHub repository.
4. Connect to your Snowflake account and click on the Continue button at the bottom of the form. This is required to deploy to Snowflake.
5. Click on the Start with a template button. Then click on the Scala template below. This option will populate your repository with Scala code that you can use to deploy to Snowflake with the Snowpark API.
6. Click the Finish setup button.
7. Click the Open in IDE button on the project page.

Now that you are in the BlackDiamond Studio IDE, what do you want to do?

1. I want to use Snowpark with Scala

Getting started

  1. 1.
    In your project repository, you will find the Main.scala file that contains a basic example of how to create a Snowpark session, which then can be used to interact with the Snowflake account you should be connected to.
  2. 2.
    A Snowflake connection is required to use Snowpark with Scala. This connection can be set up when you create the project in the web portal, or it can be managed in the BlackDiamond Studio IDE with the SQL Tools extension.
  3. 3.
    The SQL Tools extension can be accessed by clicking on the cylinder icon on the Activity Bar (on the left side of the IDE).

Creating and exporting a Stored Procedure / User Defined Function (UDF)

  1. 1.
    Snowflake stored procedures and UDFs can be written in Scala and then exported to your Snowflake account.
  2. 2.
    Stored procedures and UDFs can be called or can be used during queries after being exported. They can be invoked from your SQL code or even using Snowpark.
  3. 3.
    If you want to create and export a Stored Procedure / UDF, follow these steps:
    1. 1.
      Make sure you have a build.sbt file.
    2. 2.
      Make sure you have already imported the builds with Metals. You can click on the Metals logo (an "M") on the activity bar on the IDE left bar and then click on Import build.
    3. 3.
      Right-click on the build.sbt file and then click on Black Diamond: Export Scala UDF. This will create a template file called UDF-Export-Snowflake-Scala.sql, located in the target folder.
    4. 4.
      Replace the placeholders in the UDF-Export-Snowflake-Scala.sql template file with the actual values that you want to use. If you are creating and exporting a UDF, you can ignore or remove section 3.1, since it is used for creating a Stored Procedure. Likewise, if you are exporting a Stored Procedure, you can ignore or remove section 3.2, since it is used for creating a UDF.
    5. 5.
      After filling the placeholders, you can run the SQL commands. Left-click on the UDF-Export-Snowflake-Scala.sql and then click on Black Diamond: Deploy. This will execute the SQL script and create the UDF/Procedure.
    6. 6.
      You can reorganize the template and change it in order to create multiple functions/procedures with the same script.

2. I just want to use Scala, I do not need Snowpark

Getting started

  • An example of how to write a "Hello World!" program on Scala is given at the beginning of the Main object, in the Main.scala file.
  • You can code just like you would normally with Scala.
  • You can remove the Snowpark code if you don't need it (this includes the UserDefinedFunctions.scala and the Procedures.scala files, and the references to the Snowpark library in the build.sbt file).

Common Issues

  1. 1.
    Metals' Import Build command fails or an sbt command fails.
    1. 1.
      Check your project/build.properties. When working on the BlackDiamond Studio IDE, your project/build.properties should look like this:
      This is because sbt has a bug which prevents sbt commands from working on certain environments, where Unix Domain Sockets cannot be created. A fix for this bug has been submitted, but a version with said fix has not been released yet. Currently, the best option is to use version 1.7.0-M3 (a custom build) that is installed in the BlackDiamond Studio IDE.
  2. 2.
    BlackDiamond: Export Scala UDF fails.
    1. 1.
      Make sure that your project is building correctly.
    2. 2.
      If your project is not building correctly, the template for the creation of the UDF/Procedure will not be generated.
  3. 3.
    The creation of a UDF or Stored Procedure fails.
    1. 1.
      Make sure that your function/procedure follows the guidelines for the creation of Scala UDFs.