ExcelDAX-テキストと日付の操作

DAXは、テキストの操作、日付と時刻の値の抽出と作成、または条件に基づく値の作成を含むシナリオで使用できます。DAXで次のことができます-

  • 連結によってテーブルにキー列を作成します。
  • テキストの日付から抽出された日付部分に基づいて日付を作成します。
  • カスタムの日付形式を定義します。
  • 数式を使用してデータ型を変更します。
    • 実数を整数に変換します。
    • 実数、整数、または日付を文字列に変換します。
    • 文字列を実数または日付に変換します。

連結によるキー列の作成

PowerPivotのデータモデルでは、単一のキー列のみが許可されます。外部データソースにある可能性のある複合キーはサポートしていません。したがって、データソースのテーブルに複合キーが存在する場合は、それらをデータモデルのテーブルの単一のキー列に結合する必要があります。

DAX関数CONCATENATEを使用して、データモデルのテーブルで2つの列を1つの列に結合できます。DAX関数CONCATENATEは、2つのテキスト文字列を1つのテキスト文字列に結合します。結合されたアイテムは、テキスト、数値、またはテキストとして表されるブール値、あるいはそれらのアイテムの組み合わせです。列に適切な値が含まれている場合は、列参照を使用することもできます。

= CONCATENATE ([Column1], [Column2])

DAX CONCATENATE関数は、2つの引数のみを受け入れます。引数のいずれかがテキストデータ型でない場合、テキストに変換されます。DAX CONCATENATE関数は、連結された文字列を返します。

テキスト日付から抽出された日付部分に基づく日付

Power Pivotのデータモデルは、日付と時刻の値のデータ型datetimeをサポートしています。日付や時刻の値で機能するDAX関数には、引数に日時データ型が必要です。

データソースに異なる形式の日付が含まれている場合は、最初にDAX式を使用して日付部分を抽出し、それらの部分を組み合わせて有効なDAX日時データ型を構成する必要があります。

次のDAX関数を使用して、日付を抽出および作成できます-

DATE −指定された日付を日時形式で返します。

DATEVALUE −テキスト形式の日付を日時形式の日付に変換します。

TIMEVALUE −テキスト形式の時刻を日時形式の時刻に変換します。

カスタム日付形式の定義

データソースの日付が標準形式で表されていないとします。カスタムの日付形式を定義して、値が正しく処理されるようにすることができます。DAX FORMAT関数を使用すると、指定した形式に従って値をテキストに変換できます。

FORMAT (<value>, <format_string>)

FORMAT関数は、format_stringで定義されているようにフォーマットされた値を含む文字列を返します。

事前定義された日付と時刻の形式を使用することも、FORMAT関数の引数format_stringに対してユーザー定義の日付と時刻の形式を作成することもできます。

以下は、事前定義された日付と時刻の形式名です。これらの事前定義された文字列以外の文字列を使用する場合、それらはカスタムの日付と時刻の形式として解釈されます。

S.いいえ。 Format_Stringと説明
1

"General Date"

日付や時刻を表示します。たとえば、2015年2月10日10:10:32 AM

2

"Long Date" or "Medium Date"

長い日付形式に従って日付を表示します。たとえば、2016年3月7日水曜日

3

"Short Date"

短い日付形式を使用して日付を表示します。たとえば、2016年2月3日

4

"Long Time"

長い時間形式を使用して時間を表示します。

通常、時間、分、秒が含まれます。

たとえば、10:10:3​​2 AM

5

"Medium Time"

時刻を12時間形式で表示します。

例:午後9時30分

6

"Short Time"

時刻を24時間形式で表示します。

たとえば、14:15

または、次の表の文字を使用して、ユーザー定義の日付/時刻形式を作成することもできます。

S.いいえ。 キャラクターと説明
1

:

時間区切り記号。

時間区切り記号。時間値がフォーマットされるときに、時間、分、および秒を区切ります。

2

/

日付区切り記号。

日付値がフォーマットされる日、月、および年を区切ります。

3

%

次の文字は、末尾の文字に関係なく、1文字の形式として読み取る必要があることを示すために使用されます。また、1文字の形式がユーザー定義の形式として読み取られることを示すためにも使用されます。

以下は、さまざまなキャラクターの詳細です。

  • %d −日を先行ゼロのない数値として表示します(例:5)。

  • %dd −日を先行ゼロ付きの数値として表示します(例:05)。

  • %ddd −日を省略形で表示します(例:Sun)。

  • %dddd −日をフルネームで表示します(例:日曜日)。

  • %M −月を先行ゼロのない数値として表示します(たとえば、1月は1として表されます)。

  • %MM −月を先行ゼロの数値として表示します(たとえば、1月は01として表されます)。

  • %MMM −月を省略形で表示します(たとえば、1月は1月として表されます)。

  • %MMMM −月を完全な月名(1月など)として表示します。

  • %gg −期間/元の文字列(ADなど)を表示します。

  • %h− 12時間制を使用して、先行ゼロなしの数値として時間を表示します(例:午後1時15分15秒)。使用する%h これがユーザー定義の数値形式の唯一の文字である場合。

  • %hh − 12時間制(例:01:15:15 PM)を使用して、時間を先行ゼロ付きの数値として表示します。

  • %H− 24時間制を使用して、先行ゼロなしの数値として時間を表示します(13:15:15、1:15:15など)。これがユーザー定義の数値形式の唯一の文字である場合は、%Hを使用します。

  • %HH − 24時間制(13:15:15、1:15:15など)を使用して、時間を先行ゼロ付きの数値として表示します。

  • %m−分を先行ゼロなしの数値として表示します(例:2:1:15)。これがユーザー定義の数値形式の唯一の文字である場合は、%mを使用します。

  • %mm −分を先行ゼロ付きの数値として表示します(例:2:01:15)。

  • %s−秒を先行ゼロなしの数値として表示します(例:2:15:5)。これがユーザー定義の数値形式の唯一の文字である場合は、%sを使用します。

  • %ss −秒を先行ゼロ付きの数値として表示します(例:2:15:05)。

  • %f−秒の端数を表示します。例えばff 100分の1秒を表示しますが、 ffff1万分の1秒を表示します。最大7つまで使用できますfユーザー定義形式の記号。使用する%f これがユーザー定義の数値形式の唯一の文字である場合。

  • %t− 12時間制を使用し、正午までの任意の時間に大文字のAを表示します。正午から午後11時59分までの任意の時間に大文字のPを表示します。これがユーザー定義の数値形式の唯一の文字である場合は、%tを使用します。

  • %tt− 12時間制を使用するロケールの場合、正午より前の任意の時間で大文字のAMを表示します。正午から午後11時59分までの任意の時間で大文字のPMを表示します。24時間制を使用するロケールの場合、何も表示されません。

  • %y−先行ゼロなしで年番号(0〜9)を表示します。使用する%y これがユーザー定義の数値形式の唯一の文字である場合。

  • %yy −該当する場合、年を2桁の数値形式で先行ゼロとともに表示します。

  • %yyy −年を4桁の数値形式で表示します。

  • %yyyy −年を4桁の数値形式で表示します。

  • %z−先行ゼロなしでタイムゾーンオフセットを表示します(例:-8)。使用する%z これがユーザー定義の数値形式の唯一の文字である場合。

  • %zz−を表示します。先頭にゼロがあるタイムゾーンオフセット(例:-08)

  • %zzz −完全なタイムゾーンオフセットを表示します(例:-08:00)。

ご覧のとおり、文字列の書式設定では大文字と小文字が区別されます。別のケースを使用すると、別のフォーマットを取得できます。

DAX式出力のデータ型の変更

DAX数式では、出力のデータ型はソース列によって決定され、結果のデータ型を明示的に指定することはできません。これは、最適なデータ型がPowerPivotによって決定されるためです。ただし、Power Pivotによって実行される暗黙的なデータ型変換を使用して、出力データ型を操作できます。それ以外の場合は、特定のDAX関数を使用して出力データ型を変換できます。

Using the Implicit Data Type Conversions

  • 日付または数値文字列を数値に変換するには、1.0を掛けます。たとえば、=(TODAY()+ 5)* 1.0です。この数式は、現在の日付に5日を加えたものを計算し、結果を整数値に変換します。

    • 日付、数値、または通貨の値を文字列に変換するには、値を空の文字列と連結します。たとえば、= Today()&“”

Using the DAX Functions for Data Type Conversions

DAX関数は次の目的で使用できます-

  • 実数を整数に変換する。
  • 実数、整数、または日付を文字列に変換します。
  • 文字列を実数または日付に変換する。

これについては、次のセクションで学習します。

実数を整数に変換する

次のDAX関数を使用して、実数を整数に変換できます。

ROUND (<number>, <num_digits>) −数値を指定された桁数に丸め、10進数を返します。

CEILING (<number>, <significance>) −数値を最も近い整数または最も近い有意性の倍数に切り上げ、10進数を返します。

FLOOR (<number>, <significance>) −数値をゼロに向かって切り捨てて、最も近い有意倍数にし、10進数を返します。

実数、整数、または日付を文字列に変換する

次のDAX関数を使用して、実数、整数、または日付を文字列に変換できます-

FIXED (<number>, [<decimals>], [<no_comma>])−数値を丸めて、結果をテキストとして返します。小数点以下の桁数は2または指定した小数点以下の桁数です。結果はコンマあり、またはオプションでコンマなしです。

FORMAT (<value>, <format_string>) −指定された形式に従って値をテキストに変換します。

日付を文字列に変換するためのFormat関数の使用についてはすでに学習しました。

文字列を実数または日付に変換する

次のDAX関数を使用して、文字列を実数または日付に変換できます-

VALUE (<text>) −数値を表すテキスト文字列を数値に変換します。

DATEVALUE (date_text) −テキスト形式の日付を日時形式の日付に変換します。

TIMEVALUE (time_text) −テキスト形式の時刻を日時形式の時刻に変換します。