Arm版のMacでSnowflakeに接続するために、SnowflakeのODBCドライバを設定する際には、Intel版のMacとは異なる設定が必要です。
MacでのODBCの設定方法(unixODBC)6に従ってunixODBCをインストールしてください。
インストールが完了したら、ターミナルAppを起動し、odbcinst -j
とタイプしてエンターキーを押します。すると以下のような結果が表示されます。
unixODBC 2.3.9
DRIVERS............: /opt/homebrew/etc/odbcinst.ini
SYSTEM DATA SOURCES: /opt/homebrew/etc/odbc.ini
FILE DATA SOURCES..: /opt/homebrew/etc/ODBCDataSources
USER DATA SOURCES..: /Users/administrator/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
この例では、/opt/homebrew/etc/odbcinst.ini という設定ファイルにodbcドライバの情報が保持されるので、このファイルをテキストエディタで開いて内容を確認します。
SnowflakeDSIIDriverというセクションがない場合は、下記のコードを設定ファイルに追加して保存して下さい。
[SnowflakeDSIIDriver]
APILevel=1
ConnectFunctions=YYY
Description=Snowflake DSII
Driver=/opt/snowflake/snowflakeodbc/lib/libSnowflake.dylib
DriverODBCVer=03.52
SQLLevel=1
もしくは、ターミナルで下記のコマンドを使用して直接設定ファイルの中身を確認、編集を行うこともできます。もしテキストエディタのアプリで編集をする際に、管理者権限が必要となる場合はsudoにて管理者権限で実行できるためおすすめです。
sudo nano /opt/homebrew/etc/odbcinst.ini
なお、nanoのエディタで編集後に保存を行う際には、下記の手順で操作ください。
また、Driverのところに記載されているドライバファイルへのパス(例:/opt/snowflake/snowflakeodbc/lib/libSnowflake.dylib)が存在しているかを確認してください。
ファイルが存在するかはターミナルにて下記のように確認できます。
cdでフォルダパスを指定をして、フォルダを移動します。
cd /opt/snowflake/snowflakeodbc/lib
lsコマンドを入力して、フォルダの中にあるファイルを確認できます。
ls
次にSnowflakeのドライバをインストールしたフォルダにある設定ファイル(例:/opt/snowflake/snowflakeodbc/lib/simba.snowflake.ini)を開きます。編集する際には管理者の権限が必要になることがございます。
そして、設定ファイルの最後に ODBCInstLib=/opt/homebrew/lib/libodbcinst.dylib を追加します。(このパスはhomebrewをどこにインストールしたかによって変わりますので、ご自分のMacにインストールしたhomebrewのパスをご確認ください。)
# unixODBC
ODBCInstLib=/opt/homebrew/lib/libodbcinst.dylib
またデフォルトで設定されているODBCInstLibは、先頭に#を付けて、以下の例のようにコメントアウトします。
# Generic ODBCInstLib
# iODBC
# ODBCInstLib=libiodbcinst.so
もし管理者権限が必要となる場合、下記のコマンドをターミナルにて実行後、nanoのエディタにて上記で紹介した操作を行なってください。
sudo nano /opt/snowflake/snowflakeodbc/lib/simba.snowflake.ini
同じ設定ファイル(例:/opt/snowflake/snowflakeodbc/lib/simba.snowflake.ini)の先頭の方にある、DriverManagerEncodingを探します。デフォルトではUTF-32になっている場合があるので、その場合は以下のようにUTF-16に変更して保存します。
DriverManagerEncoding=UTF-16
同じ設定ファイル(例:/opt/snowflake/snowflakeodbc/lib/simba.snowflake.ini)の中にCABundleFileが以下の例のように設定されていますが、このファイルパスが実際に存在するかをご確認ください。
CABundleFile=/opt/snowflake/snowflakeodbc/lib/cacert.pem
ご利用の環境によっては/opt/snowflake/snowflakeodbc/lib/universal/cacert.pem というパスがCABundleに指定されていて、こちらのファイルパスが存在しない場合、適切なファイルパスを指定する(例えば、universalという部分を削除する)必要がございます。
これでSnowflakeドライバがunixODBCで動作するようになります。
データの取得についてはExploratoryデスクトップからSnowflakeに接続してデータを取得する方法 を参照してください。