メインコンテンツへジャンプ

Databricksにコレーション機能が登場!

データ処理で言語の違いを簡単に反映します
Share this post

Summary

  • コレーションは、100以上の言語に対応したデータベースを言語とコンテキストに応じて認識し、ユーザーが期待するようにテキストを処理します。- 照合順序を使用して、英語の名前を大文字小文字を区別せずに検索したり、非英語のアルファベット順序を整理したり、アクセントを無視した検索などのタスクを行います。- 大文字小文字を区別しない結果を得るための従来の方法に対して、最大22倍のクエリ実行速度を達成します。

グローバルなエンタープライズアプリケーションを構築するということは、多様な言語と一貫性のないデータ入力を扱うことを意味します。データベースはどのようにしてドイツ語で "Äpfel" を "Apfel" の後に並べ替えたり、フランス語で "ç" を "c" として扱ったりするのでしょうか?また、ユーザーが "John Smith" と入力した場合と "john smith" と入力した場合をどのように扱い、それらが同一であるかどうかを判断するのでしょうか?

コレーション(照合順序)は、テキストのソートや比較に関するルールを定義することでデータ処理を効率化し、言語や大文字小文字の敏感さを考慮した処理を実現します。コレーションにより、データベースは言語や文脈を認識し、ユーザーの期待通りにテキストを処理できるようになります。

私たちは、コレーションがDatabricks Runtime 16.1でパブリックプレビューとして利用可能になったことをお知らせできることを嬉しく思います(近日中にDatabricks SQL Preview Channel 2024.50バージョンおよびDatabricks Delta Live Tablesにも登場予定です)。コレーションは、ケースセンシティビティ(大文字小文字の区別)やアクセントセンシティビティ(アクセントの有無)など、特定の言語要件に合わせた文字列比較ルールを定義するための仕組みを提供します。

このブログでは、コレーションの仕組み、重要性、そしてニーズに合ったコレーションを選択する方法について詳しく見ていきます。

コレーションを使うことで、ユーザーは100を超える言語固有の照合順序ルールから選択し、データワークフローに実装できます。これにより、ソート、検索、マルチリンガルなテキストデータセットの結合などの操作が簡素化されます。 コレーションのサポートにより、レガシーデータベースシステムからの移行時にも同じルールを適用しやすくなります。この機能は、ケースインセンシティブ(大文字小文字を区別しない)およびアクセントインセンシティブ(アクセントを区別しない)な比較を必要とする一般的なクエリにおいて、パフォーマンスの向上とコードの簡素化を実現します。

コレーションサポートの主な機能

Databricksのコレーションサポートには以下の機能が含まれます:

  • 100以上の言語に対応し、大文字小文字の区別やアクセントの有無などのバリエーションをサポート
  • 100以上のSparkおよびSQL表現
  • すべてのデータ操作(結合、ソート、集約、クラスタリングなど)との互換性
  • Photon最適化された実装
  • Deltaテーブルのネイティブサポート、パフォーマンス最適化(データスキップ、Zオーダー、液体クラスタリング、動的パーティションおよびファイルプルーニングなど)
  • レガシーデータベースシステムからの移行を簡素化

コレーションサポートは完全にオープンソースで、Apache Spark™およびDelta Lakeに統合されています。

クエリでコレーションを使用する

コレーションは、確立されたSparkの機能と強力に統合されており、結合、集約、ウィンドウ関数、フィルターなどの操作がコレーションされたデータでシームレスに機能します。ほとんどの文字列式はコレーションと互換性があり、CONTAINSSTARTSWITHREPLACETRIMなど、さまざまな式で使用できます。詳細はコレーションのドキュメンテーションをご覧ください。

コレーションで一般的なタスクを解決する

コレーションを使い始めるには、適切なコレーションでテーブルの列を作成(または変更)します。例えば、ギリシャ語の名前の場合、EL_AIコレーションを使用します。ELはギリシャ語の言語識別子で、AIはアクセントを区別しないことを意味します。英語の名前(アクセントがない場合)には、UTF8_LCASEを使用します。

コレーションによって可能になるシナリオを示すために、以下のタスクを実行します:

  • ケースインセンシティブ(大文字小文字を区別しない)比較を使用して英語の名前を検索
  • ギリシャ語のアルファベット順でギリシャ語の名前をソート
  • アクセントを区別しない方法でギリシャ語の名前を検索

これらを、ホメロスの『イリアス』から取ったギリシャ語と英語の英雄の名前が含まれるテーブルを使って示します。

利用可能なすべてのコレーションを一覧表示するには、次のクエリを実行します:SELECT * FROM collations()

ALTER コマンドの後に ANALYZE コマンドを実行することで、その後のクエリがデータスキップを活用できることを確認してください。

これからは、英語の名前を明示的に比較する前に LOWER を使う必要はありません。ファイルのプルーニングも内部で自動的に行われます。

ギリシャ語の言語ルールに従ってソートするには、単純に ORDER BY を使用できます。EL_AI コレーションを使用しない場合とは結果が異なることに注意してください。

そして、アクセントを区別せずに検索する場合、例えばアガメムノン(またはギリシャ語で Ἀγαμέμνων)に関連するすべての行を検索するには、アクセント付きのギリシャ語の名前と一致するフィルターを適用するだけです:

 

コレーションによるパフォーマンス

コレーションのサポートにより、大文字と小文字を区別しない結果を得るための高コストな操作を行う必要がなくなり、プロセスが合理化され、効率が向上します。

以下のグラフは、大文字と小文字を区別しない結果を得るためにLOWER SQL関数とコレーションのサポートを使用した実行時間を比較しています。比較は1Bのランダムに生成された文字列で行われました。クエリは、ある列「col」で、大文字と小文字を区別しない方法で「abc」に等しいすべての文字列をフィルタリングすることを目指しています。レガシーのUTF8_BINARYコレーションが使用されるシナリオでは、フィルタ条件はLOWER(col) == ‘abc’です。列「col」がUTF8_LCASEコレーションでコレートされると、フィルタ条件は単にcol == ‘abc’となり、同じ結果が得られます。コレーションを使用すると、Deltaファイルのスキップを活用してクエリの実行が最大22倍速くなります。(この場合、Photonはどちらのクエリでも使用していません)

コレーションによるパフォーマンスの向上

Photonを使用すると、パフォーマンスがさらに向上する可能性があります。(実際の速度はコレーション、関数、データによって異なります)。

下記のグラフは、UTF8_LCASE コレーションを使用した場合の、等価比較、STARTSWITHENDSWITHCONTAINS のSQL関数について、Photonありとなしの速度を比較したものです。これらの関数は、ランダムに生成されたASCII文字のみの1000文字の文字列データセットで実行されました。この例では、STARTSWITHENDSWITH の関数は、コレーションを使用した際に10倍のパフォーマンス向上が見られました。

フォトンとのコレーション

Photon最適化実装を除き、すべてのコレーション機能はオープンソースのSparkでも利用可能です。データフォーマットに変更はなく、データは基盤となるファイルでUTF-8エンコードのままで保存されます。すべての機能はオープンソースのSparkとDelta Lakeの両方でサポートされており、これにより顧客はコードをポータブルとして扱え、Sparkエコシステム全体で移行可能です。

次のステップ

近い将来、顧客はコレーションをカタログ、スキーマ、またはテーブルレベルで設定できるようになります。さらに、RTRIM(不要な末尾の空白を無視するための文字列比較機能)のサポートも近日中に追加される予定です。最新情報については、Databricksのホームページや「What's Coming」ドキュメントページで更新情報をチェックしてください。

まずはここから

コレーションの使用を始めるには、Databricksのドキュメンテーションを参照してください。

Databricks SQLについて詳しく知りたい場合は、公式ウェブサイトドキュメンテーションをご覧ください。また、Databricks SQLの製品ツアーもチェックできます。既存のデータウェアハウスを、高性能でサーバーレスのデータウェアハウスに移行し、優れたユーザー体験と低コストを実現したい場合、Databricks SQLが最適です。無料で試してみてください

 

Databricks 無料トライアル

関連記事

Databricks SQLの最新情報 ~2024年10月~

私たちは、Databricks SQLをこれまで以上にシンプルで、高速で、手頃な価格にする最新の機能とパフォーマンスの改善をお知らせできることを嬉しく思います。 Databricks SQL は、Databricks Data Intelligence Platform内のインテリジェントなデータウェアハウスで、 レイクハウスアーキテクチャ 上に構築されています。実際、 Databricks SQLは現在8,000以上の顧客に使用頂いています! このブログでは、AI/BI、インテリジェントな体験、予測的最適化について詳しく説明します。また、強力な新しい価格/パフォーマンス機能も備えています。過去3ヶ月間の革新的な機能を皆様にご紹介できることを嬉しく思います。 AI/BI 2024年のData + AI Summit (DAIS)で AI/BIを発表 して以来、多くのエキサイティングな機能強化を追加してきました。まだAI/BIを試していない方は、ぜひお試しください。追加ライセンス不要で、すべてのDatabricks

Season's Speedings: Databricks SQL Delivers 4x Performance Boost Over Two Years

As the season of giving approaches, we at Databricks have been making our list and checking it twice--but instead of toys and treats...

Databricks SQL Year in Review (Part 2):SQLプログラミング機能に焦点をおいて

January 31, 2024 Serge Rielau による投稿 in
Databricksの サーバーレス・データウェアハウス、Databricks SQLの2023年の製品進化を紹介するブログシリーズへようこそ。 このパート2では、この1年間に提供されたSQLプログラミングの新機能の数々をご紹介します。 当然のことながら、すべてのSQL開発者は、より生産性を高め、より複雑なシナリオに簡単に取り組みたいと考えています。 これはすべてDatabricksのデータインテリジェンスプラットフォームの一部であり、 データウェアハウスと データレイクの長所を組み合わせたレイクハウスアーキテクチャに基づいて構築されています。 それでは、2023年のSQLプログラミングの目玉機能をご紹介します: ラテラル カラム エイリアス対応 コーヒーが体に良くないなら、なぜみんな飲むのですか? ラテラルカラムサポートがそうです。 SQLの原則には反しますが、この機能を使えば、セレクトリスト内のSQL式の結果を、同じセレクトリスト内の次の式で参照することができるので、確かに便利です。 あなたは振り返り、SQL
製品一覧へ