ホスト フィーチャ レイヤーの所有者、または組織の管理者は、ホスト フィーチャ レイヤー上のフィールドを追加、削除、および計算できます。制限がいくつかあります。たとえば、OBJECTID フィールドの削除や計算はできません。制限の完全なリストについては、「制限」セクションをご参照ください。
ホスト フィーチャ レイヤーに関するフィーチャを追加、削除、または計算するには、最初に、レイヤーの属性テーブルを表示する必要があります。テーブルの詳細については、「テーブルの表示」をご参照ください。
フィールドの追加
- 次の手順に従って、テーブルを表示します。
- [テーブル オプション] をクリックします。
- [フィールドの追加] をクリックします。
- [名前] - フィールド名には、空白、ハイフン、括弧、ブラケットなどの特殊文字や、$、%、# のような文字を使用できません。一般的にデータベースの予約済みキーワードとして認識される単語 (CHARACTER や DATE など) は、フィールド名に使用しないでください。特殊文字やデータベースの予約済みキーワードが含まれているフィールド名を追加しようとすると、エラー メッセージが表示されます。
- [エイリアス] - フィールドの代替名であり、実際の名前より説明的でユーザーにわかりやすい名前にすることができます。エイリアスには、特殊文字やデータベースの予約済みキーワードを使用できます。
- [タイプ] - 次のいずれかです。
- [日付] - 日付と時刻のデータ。「日付フィールドの操作」をご参照ください。
- [Double (倍精度浮動小数点数)] - 小数点以下の桁がある数字。
- [Integer (整数)] - -2,147,483,648 ~ 2,147,483,647 の自然数 (long integer)。
- [String (文字列)] - 一連の任意の文字。
- [長さ] - 文字列フィールドに格納できる文字の最大長。[長さ] は、[文字列] フィールド タイプに必要です。デフォルトは 256 文字です。
フィールドの削除
- 次の手順に従って、テーブルを表示します。
- 削除するフィールドが含まれている列をクリックします。
- [削除] をクリックします。フィールドを削除することを確認します。
OBJECTID、CREATIONDATE、CREATOR、EDITDATE、EDITOR などの特定のフィールドと、マップでスタイル設定やフィルターに使用されるフィールドでは、[削除] オプションを使用できません。ただし、他のマップがシンボルやフィルターにフィールドを使用していて、これらのフィールドがユーザー自身のマップで使用されるものと異なる場合、これらのフィールドには [削除] オプションを使用できます。他のマップ内でシンボルやフィルタリングに使用されている可能性のあるフィールドを削除する場合は注意してください。
フィールドの計算
- 次の手順に従って、テーブルを表示します。
- 計算する値のあるフィールドが含まれている列をクリックします。
- [計算] をクリックします。
[式の設定] ダイアログ ボックスが表示されます。
基本操作
[式の設定] ダイアログ ボックスでは、加算、減算、乗算、除算などの演算子を使用して、単純な式を作成できます。例とヒントを次に示します。
- SAMPLE という数値フィールド内のすべての値に 100.0 を乗算するには、式に「SAMPLE * 100.0」と入力します。
- より複雑な方程式には、括弧を使用して計算順序を指定できます (例: SAMPLE * (BASELINE - 40))。
- 算術演算子は、文字列フィールドには使用できません。「文字列関数」セクションで説明する文字列関数を使用する必要があります。
- タイプが double のフィールドを整数のフィールドに変換する場合、式に CAST 関数が自動的に追加される場合があります。たとえば、POP という double フィールドを SAMPLE という整数フィールドに変換する場合、式は CAST(SAMPLE AS FLOAT) と表示されます。CAST 関数を削除しないでください。CAST 関数の詳細については、以下の「数値関数」をご参照ください。
- 文字列にアポストロフィを挿入する場合は、アポストロフィを単一引用符で囲みます。例: 'Nightingale''s'。二重引用符は使用しないでください。
式を作成したら、[計算] ボタンをクリックします。エラーが発生した場合、ダイアログ ボックスの下部にエラー メッセージが表示されます。
その他の注意事項は次のとおりです。
関数の使用
演算子を使用した単純な式だけでなく、関数も使用できます。関数には、フィールド名、リテラル、その他の関数を使用できます。たとえば、TOTALPOP を POP18 で除算する double フィールドを計算する必要があるとします。フィーチャにゼロの POP18 が含まれている場合に、この計算を実行すると、ゼロ除算エラーが発生します。後述の NULLIF 関数を使用すると、これを防ぐことができます。式は、TOTALPOP / NULLIF(POP18, 0) のようになります。
関数は引数を取ります。以下のテーブルでは、次のような引数を使用できます。
- フィールド タイプが引数のタイプ (文字列、数値、または日付) と一致するフィールド名。
- 'Sailboat' (単一引用符で囲まれた文字列) などのリテラル、数字の 5、または単一引用符で囲まれた MM/DD/YYYY hh:mm:ss 形式の日付。
- 組織が標準でない SQL クエリを許可している場合、文字列リテラル内の英語以外の文字にエスケープ文字の N を使用する必要があります (例: N'针叶林')。
- 適切なタイプ (文字列、数値、または日付) の値を返す関数。たとえば、FLOOR(POWER(SAMP_ERR, 0.5)) は、SAMP_ERR の平方根以下で最大の整数を返します。
わかりやすいように、次のテーブルの説明列にあるほとんどの例では、リテラルの引数を使用しています。これらの引数をフィールド名や別の関数に置き換えることができます。
文字列関数
関数 | 説明 |
---|---|
CHAR_LENGTH(string) | string の文字数を返します。結果は整数です。 例
|
CONCAT(string1, string2) | 2 つの文字列を連結します。 指定できるのは、2 つの文字列だけです。3 つ以上の文字列を連結するには、以下の例のように、CONCAT を連続して使用してネストします。 例
NULL 値は空の文字列に変換されます。 |
POSITION(substring, string )* 注意:* ポータルのホスティング サーバーが ArcGIS Data Store または PostgreSQL で管理されたデータベースを使用している場合、代わりに POSITION(string 内の substring) を使用する必要があります。 | string 内で substring が最初に現れる位置を返します。substring が見つからない場合、結果は 0 になります。 例
|
SUBSTRING(string, start, length) | string の一部を返します。start は、返される文字列の開始位置を指定する整数インデックスであり、length は返される文字数です。 例
|
TRIM(BOTH | LEADING | TRAILING ' ' FROM string) | string の先頭または末尾にあるすべての空白を削除した文字列を返します。 例
2 つ目の引数は、1 つの空白を囲んだ 2 つの単一引用符である点に注意してください。 |
UPPER(string) | string 内のすべての文字を大文字に変換した文字列を返します。 例
|
LOWER(string) | string 内のすべての文字を小文字に変換した文字列を返します。 例
|
数値関数
以下に説明する数値関数に加えて、データの列の統計情報を計算できます。これらの統計情報には、レコード数、最小値および最大値、すべての値の合計、平均値、およびすべての値の標準偏差などがあります。
- 統計情報を取得する値のあるフィールドが含まれている列をクリックします。
- [統計情報] をクリックします。ダイアログ ボックスに計算された統計情報が表示されます。
関数 | 説明 |
---|---|
ABS(number) | number. の絶対値 (正の値) を返します。 |
CEILING(number) | number 以上の最も小さい整数を返します。 例
|
COS(number) | number の角度の余弦を返します。角度の単位はラジアンです。 |
CAST(number AS FLOAT | INT) | 数値を別のタイプに変換します。FLOAT は number を double に変換し、INT は整数に変換します。 |
FLOOR(number) | number 以下の最も大きい整数を返します。 例
|
LOG(number)* 注意:* ポータルのホスティング サーバーが、ArcGIS Data Store から作成されたリレーショナル データ ストアまたは PostgreSQL で管理されたデータベースを使用している場合、代わりに LN(number, decimal_place) を使用する必要があります。 | number の自然対数です。 |
LOG10(number)* 注意:* ポータルのホスティング サーバーが、ArcGIS Data Store から作成されたリレーショナル データ ストアまたは PostgreSQL で管理されたデータベースを使用している場合、代わりに LOG(number, decimal_place) を使用する必要があります。 | number の常用対数です。 |
MOD(number, n) | number を n で除算したときの余りを返します。n と number のタイプは、整数である必要があります。 例
|
NULLIF(number, value) | number が value と等しい場合に、null を返します。NULLIF は、value を 0 に設定してゼロ除算エラーを防ぐためによく使用されます。 引数のフィールド値が null であった場合、計算結果は null です。 たとえば、TOTALPOP を POP18 で除算する double フィールドを計算する必要があるとします。フィーチャにゼロの POP18 が含まれている場合に、この計算を実行すると、ゼロ除算エラーが発生します。この場合、POP18 がゼロであるレコードを非表示にするフィルターを作成して、計算を実行できます。この場合、NULLIF を使用すると簡単です。
|
POWER(number , y) | number を y 乗した値を返します。 |
ROUND(number , length) | number を指定の長さに丸めます。 length が正の数の場合、数値は length で指定された小数点以下の桁数に丸められます。length が負の数の場合、小数点の左側が丸められます。 例
|
SIN(number) | number の角度の正弦を返します。角度の単位はラジアンです。 |
TAN(number) | number の角度の正接を返します。角度の単位はラジアンです。 |
TRUNCATE(number, decimal_place)* 注意:* ポータルのホスティング サーバーが、ArcGIS Data Store から作成されたリレーショナル データ ストアまたは PostgreSQL で管理されたデータベースを使用している場合、代わりに TRUNC(number, decimal_place) を使用する必要があります。 | 指定した decimal_place で number を切り捨てます。 decimal_place が正の数の場合、指定した小数点以下の桁数に切り捨てられます。decimal_place が負の数の場合、小数点の左側が切り捨てられます。 例
|
日付関数
いくつかの関数を日付フィールドで使用できます。日付関数のリストおよび属性テーブルの日付フィールドの操作方法に関する詳細については、「日付フィールドの操作」をご参照ください。
日付フィールドの操作
日付フィールドでは数種類の計算を実行できます。たとえば、日付フィールドでの時間の加算/減算や、2 つの日付フィールド間の差の計算を実行できます。
日付関数
使用可能な日付関数としては、次のものがあります。
関数 | 説明 |
---|---|
CURRENT_DATE()* 注意:* ポータルのホスティング サーバーが、ArcGIS Data Store から作成されたリレーショナル データ ストアまたは PostgreSQL で管理されたデータベースを使用している場合、代わりに CURRENT_DATE を使用する必要があります。 | 現在の日付を UTC 時間で返します。 |
CURRENT_TIME()* 注意:* ポータルのホスティング サーバーが、ArcGIS Data Store から作成されたリレーショナル データ ストアまたは PostgreSQL で管理されたデータベースを使用している場合、代わりに CURRENT_TIME を使用する必要があります。 | 現在の UTC の日付と時刻 (時間、分、秒) を返します。 |
CURRENT_TIMESTAMP()* 注意:* ポータルのホスティング サーバーが、ArcGIS Data Store から作成されたリレーショナル データ ストアまたは PostgreSQL で管理されたデータベースを使用している場合、代わりに CURRENT_TIMESTAMP を使用する必要があります。 | 現在の UTC の日付と時刻 (時間、分、秒、ミリ秒) を返します。 |
EXTRACT(unit FROM date)* 注意:* ポータルのホスティング サーバーが、ArcGIS Data Store から作成されたリレーショナル データ ストアまたは PostgreSQL で管理されたデータベースを使用している場合、代わりに CURRENT_DATE を使用する必要があります。 | 年、月、日、時間、分など、日付/時刻の一部を返します。 以下に例を示します。
|
日付フィールドの計算
日付フィールドを計算するときは、日付および数値フィールド/リテラルの任意の組み合わせを使用できます。日付リテラルを使用する場合、SQL でサポートされている日付形式を使用する必要があります。
日付への時間の加算と日付からの時間の減算
日付フィールドまたは SQL でサポートされている日付リテラルで時間を加算または減算して、更新済みの日付フィールドを生成したい場合があります。たとえば、日付に時間を加算して、将来の点検日や再調査日を計算できます。
日付フィールドで時間を加算または減算するには、次の計算を使用できます。1 番目の計算では日付フィールド、2 番目の計算では日付リテラル値が使用されます。数値フィールドと数値リテラルも使用できます。3 番目と 4 番目の計算で示されているように、フィールドとリテラルの任意の組み合わせがサポートされています。<DateField> + / - <NumberField> = updated date
DATE'<SQL-supported Date Literal>' + / - <Number of Days> = updated date
<DateField> +/- <Number of Days> = updated date
DATE'<SQL-supported Date Literal >' + / - <NumberField> = updated date
計算後の日付フィールドは、元の日付に、加算または減算した日数を足したまたは引いた日付になります。日数は整数にすることも、小数を含めることもできます。たとえば、1.5 は 1 日半、すなわち 36 時間を表します。
次に示す例では、機械の部品が 2016 年 6 月 14 日午前 10:00 に取り付けられます。この取り付け日の 1 か月 (30 日) 後に検査日を生成するには、次のいずれかの計算を使用します。最初の計算では、値が「6/14/2016」の日付フィールドと値が「30」の数値フィールドが使用され、2 番目の計算では、日付リテラルと数値リテラルが使用されます。<MyDateField> + <MyNumberField> = 7/14/2016 10:00 AM
DATE'6/14/2016' + 30 = 7/14/2016 10:00 AM
2 つの日付間の差の計算
2 つの日付間の時間の長さを計算したい場合があります。たとえば、電気計器の取り付け日が設定され、さらに検査日も設定されている場合、これらの 2 つの日付間の差を計算して、取り付けから検査までの時間の長さが許容可能なガイドラインの範囲内にあることを確認できます。この計算の結果は、日付フィールドではなく数値フィールドです。
2 つの日付間の時間の長さを計算するには、日付フィールドと日付リテラルの任意の組み合わせを使用できます。次に示す 1 番目の計算では日付フィールドが使用され、2 番目の計算では日付リテラルが使用されます。3 番目と 4 番目の計算では、日付フィールドと日付リテラルの両方が使用されます。<DateField1> - <DateField2> = number of days in between
DATE'<SQL-supported Date Literal>' - DATE'< SQL-supported Date Literal>' = number of days in between
<DateField1> - DATE'<SQL-supported Date Literal>' = number of days in between
DATE'<SQL-supported Date Literal>' - <DateField2> = number of days in between
この計算結果は、1 つの日付フィールド/リテラルを別の日付フィールド/リテラルを減算して計算した数値フィールドです。数値結果 (日数) は整数にすることも、小数を含めることもできます。たとえば、1.5 は 1 日半、すなわち 36 時間を表します。
上記の電気計器の検査の例では、次に示すいずれかの計算を使用して、取り付け日「6/1/2015」から検査日「10/1/2015」までの時間の長さを計算できます。1 番目の計算では日付フィールド、2 番目のフィールドでは日付リテラルが使用され、3 番目と 4 番目の計算では日付フィールドと日付リテラルの両方が使用されます。<InspectionDateField> - <InstallationDateField> = 122 (days)
DATE'10/1/2015' - DATE'6/1/2015' = 122 (days)
<InspectionDateField> - DATE'6/1/2015' = 122 (days)
DATE'10/1/2015' - <InstallationDateField> = 122 (days)
日付フィールドに関する注意事項
日付フィールドを操作するときは、次に示す情報を考慮に入れる必要があります。
日付フィールドの表示形式の変更
テーブル内の日付の表示形式を変更できます。テーブルに表示される書式は、ポップアップで構成されたものと同じです。日付フィールドの表示形式を変更するには、[ポップアップ プロパティ] の [フィールド属性の構成] ウィンドウでフィールド エイリアスを選択します。
MM/DD/YYYY hh:mm:ss 形式での日付の入力
テーブルに表示される日付の形式に関係なく、日付は必ず MM/DD/YYYY hh:mm:ss 形式で入力し、単一引用符で囲みます。たとえば、日付フィールドを 2014 年 5 月 27 日午後 5:00 に設定するには、「'05/27/2014 05:00:00PM'」、「'05/27/2014 5:00PM'」、または「'05/27/2014 17:00:00'」 (24 時間制) と入力します。時刻のみの格納はサポートされていません。時刻は常に日付のコンポーネントです。
日付は UTC 時間で入力および格納されます
テーブル内の日付フィールドは、UTC の日付と時刻で入力されることを前提としています。UTC とは協定世界時 (Universal Time Coordinated) を表し、イギリスのグリニッジ近くに位置する地球の本初子午線 (経度ゼロ度) の現在時間とほぼ等しい時間です。UTC は、GMT (グリニッジ標準時) のより厳密なバージョンです。データをホストするサーバーは、物理的に世界中の任意の場所に配置できるので、日付は UTC を前提としています。UTC ではなくローカル タイム ゾーンの日付と時刻を格納する方法は、特にユーザーやデータをホストするサーバーが別のタイム ゾーンに移動する場合に、さまざまな種類の問題を引き起こします。
日付フィールドが表示されるとき、日付は必ず UTC 時間からローカル時間に変換されます。これは、コンピューターの設定を参照して、タイム ゾーン設定を調べることで実現しています。たとえば、コンピューターが PST (太平洋標準時) に設定されているとします。PST は UTC より 8 時間遅れています。UTC 時間が 9:00 AM のとき、PST は 1:00 AM です。PST (サマータイムの時期は 2:00 AM) になります。
式に入力した日付は、現在のタイム ゾーンの時間ではなく、UTC 時間と見なされます。この前提により、混乱が生じる可能性があります。たとえば、PST に設定されたコンピューターを使用して「'05/27/2014 05:00:00PM'」と入力した場合、上記の時間変換のために、5/27/2014 9:00 AM と表示されます。
UTC とローカル タイム ゾーンの変換に対処するためのヒントを以下に示します。
- 現在の日付と時刻を入力する場合、以下の時間関数の 1 つを使用します。これらの関数は、必ず UTC 関数を返します。
- 時刻コンポーネントを含まない日付を入力している場合、12 時間を日付に追加します。たとえば、「'5/27/2014'」と入力する代わりに「'5/27/2014 12:00PM'」または「'5/27/2014 12:00'」と入力します。このオフセットが必要な理由は、時刻コンポーネントのない日付を入力すると、その日付の午前 0 時として入力されるためです (5/27/2014 は 5/27/2014 00:00:00 に変換されます)。これがローカル タイム ゾーンで表示されると、時間が加算または減算されます。たとえば、PST を使用していて「5/27/2014」と入力した場合、これは 5/26/2014 と表示されます (27 日の午前 0 時から 7 時間減算されます)。
- 時刻コンポーネントがある日付を入力している場合、タイム ゾーンのオフセットを時間に適用します。たとえば、「5/27/2014 12 PM PST」を入力する必要がある場合、8 時間の時差を適用して、「'5/27/2014 8:00PM'」と入力します。タイム ゾーンのオフセットを調べるには、「UTC 時差 計算」などの検索語句を使用して、Web を検索できます。
- 日付フィールドの内容を UTC 時間で表示するには、テーブルに文字列フィールドを追加して、日付フィールドと等しくなるように計算します。日付はタイム ゾーンのオフセットを使用せずに、文字列に変換されます。この文字列には、ミリ秒も含まれます。
制限
- OBJECTID フィールドや、シンボル、タイム スライダー、フィルター、ラベル、または編集情報の記録に使用されるフィールドでは、[削除] は利用できません。ただし、他のマップがシンボルやフィルターのフィールドを使用しており、これらのフィールドがユーザー自身のマップで使用されているものと異なる場合、これらのフィールドには [削除] オプションを使用できる点に注意してください。他のマップ内でシンボルやフィルタリングに使用されている可能性のあるフィールドを削除する場合は注意してください。
- レイヤーのコピーまたは関連するタイル レイヤーがあるホスト フィーチャ レイヤーでは、[フィールドの追加]、[削除]、および [計算] は利用できません。
- [フィールドの追加]、[削除]、および [計算] を利用できるのは、ホスト フィーチャ レイヤーとテーブルのみです。この機能を使用するには、レイヤーの所有者または組織の管理者である必要があります。
- 標準の SQL クエリのみをサポートしています。