apache/beam · warning

Snowflake transforms moved to apache_beam.io.snowflake

Error message

Snowflake transforms moved to apache_beam.io.snowflake

What it means

Importing apache_beam.io.external.snowflake emits a DeprecationWarning because the Snowflake transforms (ReadFromSnowflake, WriteToSnowflake, CreateDisposition, WriteDisposition) were moved to apache_beam.io.snowflake. The old module is a re-export shim kept only for backward compatibility.

Solutions

  1. Change imports to `from apache_beam.io.snowflake import ReadFromSnowflake` etc.
  2. Search the codebase for 'io.external.snowflake' and update all occurrences.
  3. Re-run the pipeline to confirm no further deprecation warnings.

Example fix

// before
from apache_beam.io.external.snowflake import ReadFromSnowflake
// after
from apache_beam.io.snowflake import ReadFromSnowflake
Defensive patterns

Strategy: validation

Validate before calling

import warnings
with warnings.catch_warnings(record=True) as w:
    warnings.simplefilter('always')
    import apache_beam.io.external.snowflake  # noqa
    if any('moved to apache_beam.io.snowflake' in str(x.message) for x in w):
        raise ImportError('Use apache_beam.io.snowflake instead')

Prevention

When it happens

Trigger: Any execution of `from apache_beam.io.external.snowflake import ReadFromSnowflake` (or WriteToSnowflake/CreateDisposition/WriteDisposition) at import time.

Common situations: Legacy pipeline code referencing the old external io path; upgrading Beam or following outdated Snowflake connector docs.

Understand the failure class

Background: "is deprecated and will be removed" — deprecation warnings for old API names, keywords, and options, and how to migrate before the removal release — this error's family across 29 libraries.

Related errors


AI-assisted analysis of apache/beam@12126d8942 (2026-09-13). Data as JSON: /api/errors/99456f3a07b7b022. Report an issue: GitHub.

Appendix: source

Thrown at sdks/python/apache_beam/io/external/snowflake.py:30

# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# For backwards compatibility.

# pytype: skip-file

import warnings

# pylint: disable=unused-import
from apache_beam.io.snowflake import CreateDisposition
from apache_beam.io.snowflake import ReadFromSnowflake
from apache_beam.io.snowflake import WriteDisposition
from apache_beam.io.snowflake import WriteToSnowflake

warnings.warn(
    "Snowflake transforms moved to apache_beam.io.snowflake",
    DeprecationWarning)

View on GitHub (pinned to 12126d8942)