Changelog

This page contains a raw changelog of Neo4j Graph Analytics for Snowflake.

Changelog

1.0.37

Added

Changed

  • Renamed GraphSAGE training configuration parameters for graph.gs_nc_train and graph.gs_unsup_train. These are breaking changes.

    • numSamples is now numNeighbors, and is no longer mandatory as it defaults to [20, 10].

    • hiddenChannels is now embeddingDimension.

    • activation is now activationFunction.

    • negSamplingRatio is now negativeSamplingRatio (graph.gs_unsup_train only).

    • trainBatchSize and evalBatchSize are replaced by a single batchSize, used for both training and evaluation (graph.gs_nc_train only).

    • GraphSAGE training now rejects dropout values of 1.0; accepted values are in the range [0.0, 1.0).

Removed

  • Removed the GraphSAGE training configuration parameters epochsPerCheckpoint and lossReduction. Model checkpointing is no longer performed during GraphSAGE training, and the training loss is always reduced by the mean.

Fixed

1.0.36

Added

Changed

Fixed

  • Update Snowflake JDBC driver to 4.3.3 Fixes a bug where write back would sometimes fail in GCP accounts because the driver corrupted parquet files written back to a stage.

1.0.35

Added

Changed

  • Update Snowflake JDBC driver to 4.3.2

Fixed

1.0.34

Added

Changed

  • Handling Snowgraph errors that happen outside of container execution

Fixed

1.0.33

Added

  • Promoted the estimation feature from experimental status.

    • The estimate schema is now the stable entrypoint for memory estimation procedures, replacing estimate_experimental.

    • The estimate_experimental schema is kept for backwards compatibility but returns a deprecation notice directing users to the equivalent estimate procedure.

  • Execute-as-user (Preview): jobs can optionally run under a user’s own identity via a Programmatic Access Token instead of the application’s identity.

Changed

  • Removed experimental.visualize. The procedure returned HTML output, and executing HTML code is not supported in new Snowflake notebooks.

Fixed

1.0.32

Added

  • Added GRAPH.GET_AGENT_CALLER_GRANTS(agent_name) to print the GRANT CALLER statements an admin must run so the agent’s data exploration tool can access the configured source and working schemas under Snowflake’s Restricted Caller’s Rights (RCR).

Changed

  • The Cortex Agent’s _explore_graph_data tool now runs under Restricted Caller’s Rights (RCR); CREATE_AGENT appends the required GRANT CALLER statements to its return value.

Fixed

1.0.31

Added

  • The Neo4j Agent for CortexAI is now generally available. Agent management procedures CREATE_AGENT and DROP_AGENT are exposed in the GRAPH schema.

  • Added two new dedicated schemas for the agent feature: AGENT_TOOLS (internal tools used by the agent during conversations) and AGENT_ARTEFACTS (objects created and managed by the agent, such as the context table, config table, and semantic view per agent instance).

Changed

  • Moved the agent API from EXPERIMENTAL to the GRAPH schema. Use GRAPH.CREATE_AGENT to create agents.

Removed

  • Removed EXPERIMENTAL.CREATE_AGENT and all other agent tools from the EXPERIMENTAL schema. Agents created with the experimental API must be recreated using GRAPH.CREATE_AGENT because their internal specification references removed procedures.

  • EXPERIMENTAL.DROP_AGENT is retained only to clean up agents created before the migration, whose artefacts reside in the legacy AGENT_EXPERIMENTAL schema that GRAPH.DROP_AGENT does not touch.

Fixed

1.0.30

Added

  • Added support for the Label Propagation algorithm (LPA) label_propagation.

  • Added support for cloud region AWS Asia Pacific (Tokyo), AWS_AP_NORTHEAST_1

Changed

Fixed

  • Improved handling of temporary file format creation during write back

1.0.29

Added

  • Added support for the Min Cost Max Flow (MCMF) algorithm max_flow_min_cost.

  • Added support for L1Norm and L2Norm scalers.

Changed

Fixed

1.0.28

Added

Changed

Fixed

1.0.27

Added

  • Added support for the Max Flow algorithm max_flow.

  • Added support for cloud region Azure Switzerland North (Zurich), AZURE_SWITZERLANDN

  • Added support for cloud region Azure Sweden Central (Gävle), AZURE_SWEDENCENTRAL

  • Added support for cloud region GCP US Central 1 (Iowa), GCP_US_CENTRAL1

  • Added support for cloud region GCP US East 4 (N. Virginia), GCP_US_EAST4

Changed

Fixed

1.0.26

Added

  • Added support for the Yen’s k-Shortest Paths algorithm yens.

  • Improve validation of project config to reject empty node and relationship table parameters

Changed

Fixed

1.0.25

Added

  • Added support for cloud region AWS EU Central 2 (Zurich), AWS_EU_CENTRAL_2

  • Added support for cloud region Azure Korea Central (Seoul), AZURE_KOREACENTRAL

Changed

Fixed

1.0.24

Added

  • Added support for cloud region AWS Asia Pacific (Seoul), AWS_AP_NORTHEAST_2

Changed

Fixed

  • Fixed an issue where adding an algorithm result to the semantic view could fail if it referenced a node table not included in the view.

  • Enhanced security for the _CREATE_VIEW call by restricting view creation to the configured working schema.

1.0.23

Added

  • Added support for the Article Rank algorithm article_rank.

  • Added support for the several cloud regions:

    • GCP

      • Europe West 2 (London), GCP_EUROPE_WEST2

      • Europe West 3 (Frankfurt), GCP_EUROPE_WEST3

      • Europe West 4 (Netherlands), GCP_EUROPE_WEST4

    • Azure

      • UK South (London), AZURE_UKSOUTH

      • Central US (Iowa), AZURE_CENTRALUS

      • Canada Central (Toronto), AZURE_CANADACENTRAL

      • East US (Virginia), AZURE_EASTUS

      • South Central US (Texas), AZURE_SOUTHCENTRALUS

    • AWS

      • EU (Paris), AWS_EU_WEST_3

Changed

  • The prediction stage for Node Classification GraphSAGE no longer requires the presence of the targetProperty column corresponding to the training stage data layout; this column is now optional (and is ignored during prediction, as usual).

Fixed

1.0.22

Added

  • The Agent can deduce the required views from the source table specified in the configuration.

  • The Agent can now create views in the working schema to transform source data into the format required by algorithm calls.

  • The semantic view now includes metadata about input views, result views, their columns and relationships between inputs and results.

Changed

  • Updated the API for the CREATE_AGENT call: instead of default_table_prefix user now specifies a source_schema and a working_schema.

  • Removed several obsolete Agent procedures.

Fixed

1.0.21

Added

Changed

Fixed

  • Fixed a problem where Agents, their tools and procedures were destroyed on application upgrade.

1.0.20

Added

  • Support for GPU compute pool GPU_GCP_NV_L4_1_24G, available in all current GCP regions.

  • Application is available in additional regions:

    • AWS Asia Pacific (Singapore)

    • Azure Southeast Asia (Singapore)

    • GCP Middle East Central 2 (Dammam)

  • Added privilege validation for output tables in write configurations.

Changed

Fixed

1.0.19

Added

  • Added information on projection and write back to job result for GraphSage and FastPath algorithms.

  • Added experimental natural language interface. This is done via integration with Cortex agents. This feature is currently available by request. Please contact the team at [email protected] to enable access to this experimental functionality.

Changed

Fixed

  • Validating existence of source-/targetLabel in write configs for path algorithms.

1.0.18

Added

Changed

Fixed

1.0.17

Added

Changed

Fixed

  • The resultRelationshipType parameter for K-Nearest Neighbors incorrectly defaulted to 'SIMILARITY'. It now correctly defaults to 'SIMILAR_TO'.

1.0.16

Added

  • Added support for the Filtered K-Nearest Neighbors algorithm knn_filtered.

  • Added support for the K-Means Clustering algorithm kmeans.

  • The project entry in a job result now contains more detailed information about the projected graph and its table mappings.

Changed

  • Changed config parameter sourceNodesTable to sourceNodeTable in filtered node similarity and filtered knn.

  • Changed config parameter mutateProperty to resultProperty.

  • mutateProperty is still supported but will be removed

  • Changed field names in write result as part of the job result.

  • propertiesWritten, relationshipsWritten are now rowsWritten

  • exportMillis is now writeMillis

Fixed

1.0.15

Added

Changed

Fixed

1.0.14

Added

Changed

Fixed

  • Changes a bug where SnowparkSQLExceptions thrown by a job service were not properly propagated to the user, leading to generic error messages.

1.0.13

Added

Changed

Fixed

  • Fixed a bug where the selection of a GPU pool lead to an exception.

1.0.12

Added

Changed

Fixed

  • Fixed a bug where a warning about not enabling telemetry could break the UI for algorithms.

1.0.11

Added

Changed

Fixed

  • Fixed a bug where mismatch of casing of table names in project and compute configs lead to validation errors.

  • Fixed a bug where some algorithm parameter were validated as table names, node label/type names, causing incorrect validation errors.

1.0.10

Added

  • Added support for the traversal algorithm bfs.

  • Added Noe4j_Graph_analytics.estimate_experimental schema, which contains experimental endpoints for estimating the memory requirements of graph algorithms.

    • The schema mirrors most of the procedures present in the graph schema, but instead of executing the algorithm, it estimates the memory requirements and suggests a compute pool selector based on that.

Changed

  • Simplified and corrected input to Dijkstra variants by removing redundant fields:

    • relationshipProperty was never used.

    • targetLabel is no longer required for the single-source variant.

  • Enabled richer output for Dijkstra single-pair, if your target type is Number we will render that.

  • Speed up algorithm config validation, in particular for parameters directly related to table schemas.

Fixed

1.0.9

Added

  • Added support for the node embedding algorithm hashgnn.

Changed

  • Made configuration validation of numerical values in compute configurations faster.

Fixed

  • Fixed a bug where the experimental.visualize endpoint was not able to handle some kinds of node columns as input to byColumn of the nodeColoring configuration.

  • Fixed a bug where the graph.fastpath algorithm did not handle VARCHAR node IDs correctly.

1.0.7

Added

  • Added support for setting log levels for a single job execution using the runtime configuration.

  • Added support for the new labelFilter parameter of the triangle_count algorithm which allow users to specify the labels of the nodes in the triangles counted by the algorithm.

  • Added support for the community detection algorithm leiden.

  • Added support for the node embedding algorithm node2vec.

  • Added support for the path finding algorithm delta_stepping.

  • Added support for the filtered node similarity algorithm node_similarity_filtered.

Changed

  • Writing to tables now uses Parquet files instead of CSV files as intermediate file format.

  • This improves write throughput, especially when writing large amounts of data including many complex properties, such as embeddings.

  • When writing arrays, such as in fast_rp, the resulting column type will be structured array, e.g. ARRAY(FLOAT) instead of ARRAY.

  • Changed to use more familiar type names in error messages, such as BIGINT instead of long.

Fixed

  • Added missing validation that the corresponding *table parameter is mandatory when a *node parameter is specified.

  • Improved graph.dijkstra_single_source by capturing target nod id types, and rendering them accordingly.

  • Fixed a bug where columns of some types (like VARCHAR) in table input to the experimental.visualize endpoint caused errors.

  • Fixed a bug where the experimental.visualize endpoint did not handle the maxAllowedNodes parameter correctly, leading to errors.

  • Fixed a bug where the experimental.visualize endpoint did not normalize the sizes of nodes correctly.

1.0.6

Added

  • Added a new endpoint experimental.visualize, based on the neo4j-viz Python library, which takes graphs represented as tables as input, and outputs an HTML visualization of the graph.

  • Better error message if a config parameter, such as sourceNode, refers to a node that has not been projected to the in-memory graph.

  • Added sourceTargetNodePairsTable parameter to the Dijkstra Source-Target algorithm, allowing batch processing of multiple source-target pairs from a table with SOURCENODEID and TARGETNODEID columns.

Changed

Fixed

  • Fixed default table prefix resolution for model train algorithms (GraphSage).

  • Fixed a bug where graph.dijkstra_single_source would not render target node IDs correctly in the results if both BIGINT and VARCHAR node IDs were present.

  • Fixed a bug where NULL node properties were not handled correctly by some algorithms.

  • Fixed a bug where integer random seeds below a certain value caused an IllegalArgumentException.

1.0.5

Added

  • Improved eager validation of job configurations, ensuring that:

    • project and write configurations contain all mandatory parameters

    • default table prefix is valid

    • all normalized table names are valid

    • provided node and relationship tables exist and are accessible

    • provided node and relationship tables adhere to the expected schema

    • source and target tables are provided as nodeTables

  • Improved error reporting for job configuration validation

Changed

  • graph.dijsktra and graph.dijkstra_single_source now also return node IDs of paths, and costs.

  • Remove experimental.dijsktra in favor of graph.dijkstra.

Fixed

  • Fixed a bug in graph.fastpath, where providing a firstRelationshipType always failed configuration validation, even if the type was valid.

  • Fixed a bug where an import was missing for some endpoints, causing confusing error messages when something failed in the job configuration validation.

1.0.4

Added

  • Added experimental endpoint experimental.dijsktra for running Dijkstra’s algorithm and returning all paths as part of the result.

  • Added eager validation for some aspects of job configurations, making jobs fail fast if the configuration is invalid.

Changed

Fixed

1.0.3

Added

  • Added DegreeCentrality algorithm and procedure graph.degree.

Changed

Fixed

1.0.2

Added

  • Added support for setting defaultTablePrefix as a global setting in algorithm configurations.

Changed

Fixed

1.0.1

Added

Changed

Fixed

1.0.0

Added

Changed

Fixed

0.3.14

Added

  • Added admin.show_jobs procedure to list all finished jobs in the system.

  • Added TriangleCounting algorithm and procedure graph.triangle_count.

Changed

  • admin.get_max_nodes replaces internal.get_max_nodes

  • admin.set_max_nodes replaces internal.set_max_nodes

  • admin.get_min_nodes replaces internal.get_min_nodes

  • admin.set_min_nodes replaces internal.set_min_nodes

  • graph.job_log replaces internal.job_service_log

Fixed

  • Diagnostic information that was lost with the shift to running transient job services is restored temporarily by changing the log level to DEBUG.

0.3.13

Added

Changed

Fixed

  • Fixed a problem in Dijkstra and Page Rank where result configuration entry could show internal node IDs.

  • Work around limitation in SPCS event sharing.

0.3.12

Added

  • Procedures internal.get_min_nodes, internal.get_max_nodes, internal.set_min_nodes, internal.set_max_nodes, to manage number of nodes in compute pools.

  • Log endpoint internal.job_service_log includes stack-trace when python based algorithms fail.

Changed

  • For graphsage and fastpath algorithms align api syntax, such as top-level keys and camelcased parameters, to be same as for all other algorithms.

Fixed

  • A bug in graph.gs_nc_train, graph.gs_nc_predict, graph.gs_unsup_train, graph.gs_unsup_predict, where GPU’s were not utilized.

0.3.11

Added

Changed

Fixed

0.3.10

Added

  • Added procedures: graph.betweenness graph.dijkstra graph.dijkstra_single_source graph.drop_model graph.fastpath graph.fast_rp graph.graph graph.gs_nc_predict graph.gs_nc_train graph.gs_unsup_predict graph.gs_unsup_train graph.knn graph.louvain graph.model_exists graph.node_similarity graph.page_rank graph.show_available_compute_pools graph.show_models graph.wcc

Changed

Fixed

0.3.9

Added

Changed

Fixed

  • Restore broken data on available compute pools.

0.3.8

Added

  • Support for GPU compute pool GPU_NV_XS, available in most Azure regions.

  • gml.show_available_compute_pools and gds.show_available_compute_pools These are replacements for the gml.list_available_compute_pools and gds.list_available_compute_pools procedures, which will be removed in a future release.

Changed

Fixed

  • Compute pool and warehouse creation no longer fails when a compute pool instance family is unavailable in a particular region.

0.3.7

Added

  • Support for defaultTablePrefix in gds.graph_project, enabling a common prefix for all tables in the projection.

  • Grant OPERATE on application-manged compute pools to APP_ADMIN role.

Changed

  • Replaced the map with a list of tables or views in nodeTables within gds.graph_project. The corresponding label is now inferred from the table name. This is a breaking change.

  • Removed type parameter from list entries of relationshipTables in gds.graph_project. The relationship type is now inferred from the table name.

Fixed

  • Fixed a bug, where write_relationships could potentially end up writing wrong node ids if multiple node tables are involved in the projection.

0.3.6

Added

Changed

Fixed

0.3.5

Added

  • Support for projecting heterogeneous graphs from multiple node and relationship tables.

    • This is a breaking change as the syntax changed for

    • gds.graph_project

    • gds.write_nodeproperties

    • gds.write_relationships

    • Algorithm configurations that include node references (e.g. path algorithms).

  • Support for table-unqiue, non-integer node identifiers in input tables.

    • We now support VARCHAR and BIGINT node identifiers.

    • Node identifiers only need to be unique within the table they are projected from.

Changed

Fixed

0.3.4

Added

  • Procedure gds.list_available_compute_pools to list compute pools available for use with GDS Sessions.

  • Procedure gml.list_available_compute_pools to list compute pools available for use with GML Sessions.

  • New machine learning algorithm FastPath gml.fastpath for computing path embeddings.

  • Added endpoints for managing models:

    • Check existence for a model: gml.model_exists

    • List models: gml.model_list

    • Drop a model: gml.model_drop

Changed

  • If an invalid compute pool selector is used, raise an exception with clear messaging and a list of valid compute pool selectors.

  • Telemetry event sharing changes.

    • Errors and warnings ⇒ Mandatory

    • Traces ⇒ Mandatory

    • Usage logs ⇒ Mandatory

    • Debug logs ⇒ Optional

    • Metrics ⇒ Optional

Fixed

0.3.3

Added

Changed

Fixed

  • A recent change in Snowflake requires GPU compute pool usage to be declared up front in the application manifest, or compute pool creation fails.

0.3.2

Added

Changed

  • Slim down return values from GraphSAGE endpoints

  • Improved logging for GraphSAGE

  • Fail early in any gml training algorithm (currently GraphSAGE) if model name already exists

  • Add failure reason to log table in case of failure for gml training and prediction algorithms

Fixed

  • Fixed bug leading to progress of more than 100% being logged for GraphSAGE.

0.3.1

Added

Changed

Fixed

  • Fix an issue where GraphSAGE can run out of shared memory.

  • Removed target_label from config for gml.gs_nc_predict because it was unused.

0.3.0

Added

  • graph_project now supports projecting node identifier columns as BIGINT or VARCHAR.

    • This allows for more flexible node identifier columns, e.g., when using UUIDs.

    • For BIGINT there will be a ~2x regression in projection runtime, which will be addressed in an upcoming release.

  • Graph machine learning runtime.

    • gml.create_session

    • gml.stop_session

    • gml.list

  • Supervised GraphSAGE

    • gml.gs_nc_train

    • gml.gs_nc_predict

  • Unsupervised GraphSAGE

    • gml.gs_unsup_train

    • gml.gs_unsup_predict

  • Support for GPU compute pool GPU_NV_S.

Changed

Fixed

0.2.19

Added

  • graph_list shows heap memory usage of the in-memory-graph.

  • Add support for compute pool type HIGHMEM_X64_L.

Changed

  • Projecting from an empty node table is no longer allowed and will return an error.

Fixed

  • Invalid function parameters now fail with a better error message and are not server errors anymore.

    • This fixes long-running queries that would eventually fail with a server error.

0.2.18

Added

  • Added support for gds.drop_nodeproperties to drop node properties from a graph.

Changed

  • Improved service logging.

    • Separated logging for server layer (snowgraph) and application layer (gds).

    • Added more detailed logging for endpoint execution.

    • Allow setting log level via internal.set_log_level(logger, level) function.

Fixed

0.2.17

Added

Changed

Fixed

  • Fixed a bug where graph drop might stall for a long time trying to drop a graph that doesn’t exist.

  • Disabled fail-early on write back when missing privilege to create table, because privilege check was flaky.

0.2.16

Added

  • Added support for the HITS algorithm via the command gds.hits.

  • Added support for gds.graph_filter to filter subgraphs based on node and relationship properties.

Changed

  • Concurrency now defaults to number of cores. Affects 'concurrency', 'readConcurrency' and 'writeConcurrency'.

Fixed

0.2.15

Added

Changed

Fixed

0.2.14

Added

Changed

Fixed

0.2.13

Added

  • Added support for the Speaker-Listener Label Propagation algorithm via the command gds.sllpa.

Changed

  • Application creates five own compute pools from which consumer selects one to run on.

  • Application creates own query warehouse, which consumer configures according to their requirements.

  • Application requires grants for CREATE COMPUTE POOL and CREATE WAREHOUSE privileges.

Fixed

  • Various documentation fixes.

0.2.12

Added

Changed

  • gds.indirect_exposure now computes exposure, hop, parent and root for each node.

    • This can be defined in the configuration using 'mutateProperties': { 'exposure': '<key>', 'hop': '<key>', 'parent': '<key>', 'root': '<key>' }.

    • The algorithm currently only supports max aggregation, the exposureReducer config has been removed.

Fixed

0.2.11

Added

Changed

Fixed

0.2.10

Added

  • gds.indirect_exposure allows specifying an exposureReducer function to aggregate the exposure of multiple neighbors.

    • The default exposureReducer function is SUM, possible values are SUM, and MAX.

Changed

Fixed

0.2.9

Added

  • Added gds.indirect_exposure algorithm for risk analysis.

  • Post upgrade, calling gds.create_session will explicitly drop and re-create the service.

Changed

Fixed

0.2.8

Added

  • Added support for node id ranges that use the full BIGINT range.

Fixed

  • Fixed sizing of JVM heap memory for GDS service.

0.2.7

Added

  • GDS gets the calling Snowflake user’s username

    • to project, list and drop graphs per user

    • to run algorithms on users own graphs

  • GDS gets the calling Snowflake user’s current role

    • to set admin privileges if the current role has the application role APP_ADMIN

  • Support semi-structured ARRAY type for node property projections. Element types can be BIGINT or DOUBLE.

  • gds.write_nodeproperties_to_table and gds.write_relationships_to_table

    • Both functions upload data to an app-internal stage and then copy the data into the specified consumer table.

  • gds.write_nodeproperties_to_stage and gds.write_relationships_to_stage

    • Both functions upload data to a consumer-defined stage for further processing.

  • gds.write_nodeproperties_to_table supports writing semi-structured ARRAY type

    • Element types can be BIGINT or DOUBLE

  • gds.graph_project supports setting an orientation for relationships

    • possible values are NATURAL (default), UNDIRECTED and REVERSED

Changed

  • Renamed to "Neo4j Graph Data Science" (and long form "Neo4j Graph Data Science \<version>" in text).

  • write_nodeproperties and write_relationships parameter outputTable changed to table

  • write_nodeproperties and write_relationships are now aliases

    • write_nodeproperties is an alias for write_nodeproperties_to_table

    • write_relationships is an alias for write_relationships_to_table

  • Automatic eviction of GDS operation results (graph project, algorithms):

    • Results can be accessed via the gds.result_list and gds.result functions.

    • When an operation finishes, the result is kept for 2 more hours before it gets evicted.

0.2.6

Changed

  • Use snowpark-sdk for schema operations.

0.2.5

Fixed

  • Made sure that relationship property shows up in in-memory graph.

  • write_relationships now correctly writes relationships to the table.

0.2.4

Changed

  • graph_project, write_nodeproperties, and write_relationships use snowflake-jdbc driver instead of snowpark-sdk.